Windows PowerShell'i Anlamak


PowerShell, Microsoft ortamları için temel bir araç haline geldi. PowerShell ile komutlar doğrudan yerel makinelerdeki bir kabuk oturumunda yürütülebileceği gibi ağ üzerinden de yürütülebilir.

Bu, hemen hemen tüm Windows ayarlarının komut dosyasıyla yazılmasına olanak tanır. Windows'a ek olarak diğer birçok Microsoft ürünü de artık PowerShell'i desteklemektedir. Ancak yalnızca Microsoft ürünleri değil, birçok üçüncü taraf ürünü de PowerShell için uzantılar sunuyor. Microsoft Azure ve Amazon Web Services (AWS) gibi bulut hizmetleri de PowerShell kontrolünü destekler ve kullanıcıların çeşitli bulut hizmetlerini yerel makinelerden kontrol etmesine olanak tanır.

PowerShell Core ve PowerShell

PowerShell Core ile Microsoft artık PowerShell'in Linux ve MacOS'a yüklenebilecek açık kaynaklı bir sürümünü sunuyor. Yani PowerShell ile ağ üzerindeki çeşitli işletim sistemlerini ve sunucu uygulamalarını çok kapsamlı bir şekilde kontrol edebilirsiniz. Yazılım açık kaynak olduğundan PowerShell Core'u GitHub üzerinden kolayca indirebilirsiniz.

PowerShell Core'u Windows 7 veya üzeri Windows makinelerine de yükleyebilirsiniz, ancak PowerShell Core'u liman konteynerlerinde de kullanabilirsiniz. Windows'taki geleneksel PowerShell'de olduğu gibi, PowerShell Core da Get-command komut komutunu kullanarak komutları görüntüleyebilir. PowerShell, SSH oturumlarında PowerShell komutu kullanılarak uzaktan da başlatılabilir. PowerShell Core kullandığınızda pwsh komutu kullanılır.

PowerShell cmdlet'leri PowerShell modüllerine bölünmüştür. Tüm modüllerin listesi için Get-Module -ListAvailable komut komutunu kullanın.

Visual Studio Code (VSCode), platformlar arası uygulamalar ve uygulamalar geliştirmenize olanak tanır. Kaynak kodu düzenleyicisi web uygulamaları geliştirmek için kullanılır ancak PowerShell için entegre bir geliştirme ortamı olarak da kullanılabilir. Bu, VS Kodu için PowerShell Uzantısını gerektirir.

PowerShell'i Başlatma

PowerShell'i başlatmanın iki yolu vardır

  • Başlat menüsünde uygun kısayolu tıklatarak
  • komut istemi penceresine “powershell” yazarak

PowerShell Core, bir komut satırı aracına pwsh yazılarak başlatılabilir (ayrıntılı açıklamayı Microsoft belgelerinde bulabilirsiniz).
ise komutu, PowerShell Tümleşik Komut Dosyasını başlatır. Çevre (İMKB). Bu, PowerShell komut dosyalarını oluşturmak ve test etmek için kullanabileceğiniz Windows'taki PowerShell geliştirme ortamıdır.

PowerShell ISE'nin avantajı, komutları yazarken seçebileceğiniz cmdlet'ler için önerilerde bulunmasıdır. Bu teknolojiye IntelliSense de denir. Ayrıca seçenekler arasında daha iyi ayrım yapabilmeniz için komutlar renk kodludur. Üst alana komut girerseniz, bunlar hemen yürütülmeyecek, normal bir komut dosyasında olduğu gibi ilk sırada listelenecektir. Komut girmeyi tamamladığınızda, Komut Dosyasını Çalıştır araç ipucuyla birlikte yeşil oynat simgesini tıklayarak bunları yürütmeye başlayabilirsiniz.

Show-Command cmdlet'i, geleneksel PowerShell'de, PowerShell'de bulunan tüm komutları görüntüleyen yeni bir pencere açar. PowerShell Tümleşik Komut Dosyası Ortamı (ISE) penceresinin bir bölümünü kullanır. Pencerede komutları arayabilir ve komutla ilgili yardımı ve örnekleri görüntüleyebilirsiniz.

PowerShell mevcut tüm komutları görüntüler.

PowerShell, Windows'u korumak için yürütme ilkesi de dahil olmak üzere çeşitli güvenlik özellikleri içerir. Yürütme ilkesi, komut dosyalarının çalıştırılıp çalıştırılamayacağını ve bunların dijital olarak imzalanması gerekip gerekmediğini belirler. Varsayılan olarak PowerShell, PowerShell'deki imzasız komut dosyalarını engeller. Yürütme politikasını değiştirmek için Set-ExecutionPolicy cmdlet'ini kullanabilir ve ayarları görüntülemek için Get-ExecutionPolicy'yi kullanabilirsiniz. Aşağıdaki ayarlar mevcuttur:

  • Kısıtlı - Komut dosyalarına izin verilmez.
  • AllSigned - Yalnızca imzalı komut dosyalarına izin verilir.
  • RemoteSigned - Bu ayarla, komut dosyalarının bir sertifika yetkilisi tarafından imzalanmış olması gerekir. Bu ayar, Windows Server 2016/2019'daki varsayılan ayardır.
  • Kısıtlanmamış - Tüm komut dosyaları bu ayarla çalışır.

PowerShell'e Başlarken

Get-Command yazdığınızda PowerShell'in sağladığı tüm komutları görürsünüz. Çok az kullanıcı Microsoft'un sunduğu tüm cmdlet'leri ve bunların çeşitli seçeneklerini ezbere biliyor. Tüm komutları C:Command.txt dosyasına yönlendirmek için Get-Command >C:Command.txt komutunu kullanın.

PowerShell yardım dosyalarını mevcut bir İnternet bağlantısı üzerinden güncellemek için Güncelleme-Yardım komutunu kullanın. Get-Help cmdlet'i için -Online seçeneğini kullanırsanız, örneğin Get-Help Get-Command -Online ile bir tarayıcı kullanırsanız Komut hakkında ayrıntılı yardım içeren pencere açılır.

Hemen hemen tüm cmdlet'lerin dört türü vardır:

  • Yeni-Öğe gibi bir şey oluşturmak için Yeni- önekine sahip cmdlet'ler vardır.
  • Aynı cmdlet, Remove- ile Remove-Item gibi bir şeyi silmek için hala mevcuttur.
  • Nesneyi özelleştirmek istiyorsanız bir Set- öneki vardır; örneğin, Set-Item.
  • Son olarak, nesne hakkında bilgi almak için Get- cmdlet'i vardır, örneğin Get-Item.

PowerShell cmdlet'lerinin "izin verilen" fiillerden birinden ve kısa çizgiyle ayrılmış tekil bir isimden oluşması beklenir. İzin verilen fiillerin listesi Get-Verb ile elde edilir. Camel durumu notasyonu kullanılmalıdır.

PowerShell ile bilgisayarları izleme ve yönetme

PowerShell ayrıntılı yardım sağlar. Bir komutun yalnızca bir kısmını hatırlıyorsanız * joker karakteriyle çalışabilirsiniz. Örneğin, Get-Command *computer, adları “computer” ile biten tüm cmdlet'leri görüntüler. Aradığınız komut listelenmiyorsa Get-Command *computer* gibi birden fazla joker karakter de kullanabilirsiniz. Bu komut herhangi bir yerde “bilgisayar” kelimesini içeren tüm komutları görüntüler. PowerShell'de bilgisayardaki fiziksel sürücülerle de çalışabilirsiniz. Örneğin, fiziksel sabit diskleri almak için Get-PhysicalDisk komutunu kullanın.

|fl'den sonra sütun girerek gelişmiş bilgileri belirtebilir ve önemsiz bilgileri gizleyebilirsiniz. Bunun bir örneği Get-PhysicalDisk |fl FriendlyName, BusType, CanPool, Üretici, Healthstatus'dur. Bu, tüm Get cmdlet'leriyle çalışır. Get-Disk ile tüm sabit diskleri de görüntüleyebilirsiniz. Bölümlendirmeyi görüntülemek için Get-Disk | Get-Partition.

Ortak bir yönetim görevi, bilgisayarda çalışan işlemleri yönetmektir. Bunu yapmak için PowerShell'i de kullanabilirsiniz. Bir bilgisayarın çalışan tüm işlemlerini görüntülemek için Get-Process komutunu kullanabilirsiniz. Örneğin, yalnızca “S” ile başlayan tüm işlemleri görmek istiyorsanız Get-Process s* komutunu yazın. Ayrıca işlemleri CPU zamanına göre azalan sırada sıralamak istiyorsanız, Get-Process s* yazın ve ardından |Sort-Object cpu -Descending kanal operatörünü yazın. Bu işlem, bir cmdlet'in sonucunu, işleme devam eden başka bir cmdlet'e iletir.

Get- cmdlet'leri nesnelerle ilgili bilgileri görüntüler. |fl girişi çıkışı formatlar. Bu, bir cmdlet'in sonucunu biçimlendiren ve bunu PowerShell'de görüntüleyen Format-List cmdlet'idir. Tüm bilgileri değil de yalnızca bireysel parametreleri görmek istiyorsanız bunları “|fl ” virgülleriyle ayırabilirsiniz. Bunu yapmak için Get- cmdlet'iyle sorguladığınız sütunlardan birini belirtmeniz yeterlidir.

Elbette bunların dışında Start- ve Stop- veya Export- ve Import- gibi başka birçok cmdlet de vardır. cmdlet'ler. Örneğin, PowerShell'de hizmetleri Start-Service, Stop-Service, Get-Service ve ile başlatabilir ve durdurabilirsiniz. Set-Servis.

PowerShell'i Ağ Üzerinden Kullanma

Ağdaki başka bir bilgisayara PowerShell oturumu ayarlamak için PowerShell ISE'deki Dosya/Yeni Uzak PowerShell sekmesi menü komutunu kullanabilirsiniz.

PowerShell ISE'de uzak bağlantı açın.

Ancak bunun işe yaraması için, hedef bilgisayarda uzaktan yönetimi, örneğin winrm quickconfig ile komut isteminden etkinleştirmeniz gerekir. Enable-PSRemoting -force ayrıca PowerShell'de uzaktan yönetime olanak sağlar. Komut ayrıca Windows Defender güvenlik duvarındaki istisnaları da etkinleştirir. Bir bilgisayarın PowerShell'den uzaktan yönetimini devre dışı bırakmak için Disable-PSRemoting -force komutunu kullanabilirsiniz. Bu tür yönetim komutları için PowerShell'i, örneğin Başlat menüsündeki simgenin içerik menüsünden yönetici ayrıcalıklarıyla başlatmanız gerekir. Uzak PowerShell oturumlarında, yerel bilgisayarda kullanılabilecek cmdlet'lerin aynısını kullanırsınız.

Ayrıca yerel olarak başlattığınız ancak daha önce RemotePowerShell oturumu ayarlamamış olsanız bile uzak bilgisayarlarda komutları çalıştıran cmdlet'ler de vardır. Ancak tüm cmdlet'ler uzaktan yönetime izin vermez. Hangi cmdlet'lerin uyumlu olduğunu görmenin en hızlı yolu cmdlet'in -ComputerName seçeneğini desteklediğini doğrulamaktır. Bu cmdlet'lerin listesini görüntülemek için Get-Help * -Parameter ComputerName komutunu kullanın. Örneğin, uzak bilgisayardaki programları ağ üzerinden yerel bir PowerShell oturumundan başlatmak istiyorsanız aşağıdaki komutu kullanın:

Invoke command -ComputerName -ScriptBlock { } -credential

Daha fazla ayrıntı ve adım adım kılavuz için PowerShell Uzaktan İletişime Başlarken başlıklı makalemizi okuyun.

PowerShell ISE ile Komut Dosyaları Oluşturma

Belirli komut dizilerini tekrar tekrar çalıştırıyorsanız veya karmaşık bir görev için bir PowerShell betiği geliştiriyorsanız, komutları tek tek yazmak yerine bir dosyaya kaydetmenizi öneririz. Windows PowerShell komut dosyalarının dosya uzantısı .ps1'dir. Bir betiği başlatmak için, betik geçerli klasörde olsa bile her zaman betik dosyasının tam yolunu belirtmeniz gerekir. Örneğin mevcut klasörde test.ps1 betiğini başlatmak istiyorsanız “.test.ps1” yazmanız gerekir. Dosya menüsü de bir rol oynar. PowerShell komut dosyalarını ISE'ye yükleyeceğiniz yer burasıdır. PowerShell, ISE'deki her açık betiği ayrı bir sekme olarak görüntüler. Varsayılan görünümde İMKB iki alana bölünmüştür

  • üstteki Komut Dosyası Bölmesi (kaynak düzenleyici)
  • alttaki PowerShell Konsolu'na tıklayın.

Komutları yazmayı bitirdikten sonra, Komut Dosyasını Çalıştır araç ipucuyla birlikte yeşil oynat simgesine tıklayarak bunları yürütmeye başlayabilirsiniz.

“Görüntüle” menü öğesi, İMKB'nin farklı alanlarını ihtiyaçlarınıza göre özelleştirmenize ve düzenlemeyi değiştirmenize olanak sağlar. Örneğin, komut dosyaları oluşturma alanı sağ tarafta düzenlenebilir. Komut dosyaları genellikle oldukça basittir. Tek tek komutları alt üste yazmanız yeterlidir. PowerShell ISE'yi veya başka bir düzenleyiciyi kullanabilirsiniz.

Yürütme sırasında komut dosyalarını düzenleyebilir ve sorunlarını giderebilirsiniz. Bir betiği “Dosya/Aç“ aracılığıyla yüklerseniz, komut penceresinde onun bileşenlerini göreceksiniz. Komut dosyasında bir satır seçerseniz, komut dosyasında bir duraklama ayarlamak için “Hata Ayıkla/Kesme Noktasını Değiştir” menü öğesini kullanabilirsiniz.

PowerShell Direct - Sanal İşletim Sistemlerini Denetleyin

PowerShell Direct ile, Windows sunucularındaki ve Windows 10 çalıştıran makinelerdeki VM'lere erişmek ve bunlar üzerinde eylemler gerçekleştirmek için Hyper-V ana bilgisayarındaki PowerShell oturumlarını kullanabilirsiniz. Ancak bunun için ana bilgisayarda Windows Server 2016/2019'un yüklü olması gerekir. . VM'lerde Windows 10 veya Windows Server 2016/2019 da gereklidir. Bir oturum başlatmak için ana bilgisayardaki PowerShell oturumuna aşağıdaki komutlardan birini yazın:

Enter-PSSession -VMName

Invoke-Command -VMName -ScriptBlock { Commands }

Başarılı bir şekilde bağlanmak için öncelikle oturumda kimlik doğrulaması yapmanız gerekir. Başka bir kullanıcıyla kimlik doğrulaması yapmak istiyorsanız Enter-PSSession -VMName -Credential kullanın. Bu oturumu sonlandırmak için Oturumdan Çıkış'ı kullanın. Ayrıca Windows'ta oturumları duraklatabilir ve yeniden kurabilirsiniz. Oturumlar kesilirse cmdlet'ler oturumda çalışmaya devam eder. Bunu yapmak için Disconnect-PSSession, Connect-PSSession ve Receive-PSSession cmdlet'lerini kullanın.

PowerShell ile ağ ayarlarını kontrol etme

PowerShell ayrıca ağ ayarlarını yapılandırmak için de kullanılabilir. Bunu yapmak için New-NetIPAddress ve Get-NetIPConfiguration gibi cmdlet'leri kullanabilirsiniz. Kurulumun bir örneği:

New-NetIPAddress -InterfaceIndex 12 -IPAddress 192.168.178.2 -PrefixLength 24 -DefaultGateway 192.168.178.1

Bir DNS sunucusuna bağlanmak için şunu yazın:

Set-DNSClientServerAddress -InterfaceIndex 12 -ServerAddresses 192.168.178.4

Birden fazla DNS sunucusunu virgülle ayırın. Set-DnsClientServerAddress -InterfaceIndex 12 -ResetServer cmdlet'i DHCP'ye geçer. Her ağ bağdaştırıcısı için doğru dizin numarasını kullandığınızdan emin olun. Bu, Get-NetIPConfiguration ile elde edilebilir. Ayrıca sunucuları PowerShell'de adlandırabilir, yeniden başlatabilir ve etki alanlarına dahil edebilirsiniz. Bunu yapmak için cmdlet'leri kullanın

Rename Computer -Name [Computer Name]
Add-Computer -DomainName [DomainName]
restart computer

Test-Connection cmdlet'i ağ bağlantılarını, hatta birden fazla makineyi aynı anda test edebilir. Bunu yapmak için komutu yazın ve ardından test etmek istediğiniz makinelerin listesini yazın. Komutu tek satırda yazmak istiyorsanız (örneğin komut dosyaları için) şu sözdizimini kullanın:

Test-Connection -Source , -ComputerName , Target2>

Bu komut, birden çok kaynak bilgisayardan birden çok hedef bilgisayarı taramanıza olanak tanır. Ayrıca Bağlantıyı Test Et yazarak yalnızca bir makineyi test edebilirsiniz.

Gerekli tüm ana bilgisayar girişlerini, TTL'yi ve IP adreslerini içeren bir sunucu için ad çözümlemesi gerçekleştirmek istiyorsanız resolve-dnsname yazın.

Resolve-DnsName -type'in tümü DNS bölgesi hakkındaki bilgileri görüntüler.

Bir bilgisayarın adını IP adresine göre çözümlemek için Resolve-DnsName'i kullanın. PowerShell daha sonra bulduğu makineleri ve ilgili geriye doğru arama bölgesini görüntüler.

Resolve-DnsName ayrıca DNS adlarını İnternet üzerinden de çözümleyebilir; örneğin

Resolve-DnsName www.google.de.

Yalnızca IPv4 adreslerini görüntülemek istiyorsanız (Resolve-DnsName www.google.de).ip4address'i kullanın.

İlgili makaleler