Aracılığıyla paylaş


Uzak Komut Çalıştırma

Tek bir PowerShell komutuyla bir veya yüzlerce bilgisayarda komut çalıştırabilirsiniz. Windows PowerShell WMI, RPC ve WS-Management gibi çeşitli teknolojileri kullanarak uzaktan bilgi işlemi destekler.

PowerShell WMI, WS-Management ve SSH uzaktan iletişimini destekler. PowerShell 7 ve üzeri sürümlerde RPC yalnızca Windows'ta desteklenir.

PowerShell'de uzaktan iletişim hakkında daha fazla bilgi için aşağıdaki makalelere bakın:

Yapılandırma olmadan Windows PowerShell uzaktan yönetim

Birçok Windows PowerShell cmdlet'i, bir veya daha fazla uzak bilgisayarda veri toplamanıza ve ayarları değiştirmenize olanak tanıyan ComputerName parametresine sahiptir. Bu cmdlet'ler farklı iletişim protokollerini kullanır ve özel yapılandırma olmadan tüm Windows işletim sistemlerinde çalışır.

Bu cmdlet'ler şunlardır:

Genellikle, özel yapılandırma olmadan uzaktan iletişimi destekleyen cmdlet'ler ComputerName parametresine sahiptir ve Session parametresine sahip değildir. Oturumunuzda bu cmdlet'leri bulmak için şunu yazın:

Get-Command | Where-Object {
    $_.Parameters.Keys -contains "ComputerName" -and
    $_.Parameters.Keys -notcontains "Session"
}

Windows PowerShell uzaktan iletişim

Windows PowerShell uzaktan iletişim, WS-Management protokolunu kullanarak bir veya daha fazla uzak bilgisayarda herhangi bir Windows PowerShell komutunu çalıştırmanıza olanak tanır. Kalıcı bağlantılar kurabilir, etkileşimli oturumlar başlatabilir ve uzak bilgisayarlarda betikler çalıştırabilirsiniz.

Windows PowerShell uzaktan iletişimini kullanmak için, uzak bilgisayarın uzak yönetim için yapılandırılması gerekir. Yönergeler de dahil olmak üzere daha fazla bilgi için bkz. uzaktan gereksinimler hakkında.

Windows PowerShell uzaktan iletişimini yapılandırdıktan sonra birçok uzaktan iletişim stratejisi kullanabilirsiniz. Bu makalede bunlardan yalnızca birkaçı listelenir. Daha fazla bilgi için bkz. UzakHakkında.

Etkileşimli oturum başlatma

Tek bir uzak bilgisayarla etkileşimli oturum başlatmak için Enter-PSSession cmdlet'ini kullanın. Örneğin, Server01 uzak bilgisayarıyla etkileşimli bir oturum başlatmak için şunu yazın:

Enter-PSSession Server01

Komut istemi, uzak bilgisayarın adını görüntüleyecek şekilde değişir. İstemde yazdığınız tüm komutlar uzak bilgisayarda çalıştırılır ve sonuçlar yerel bilgisayarda görüntülenir.

Etkileşimli oturumu sonlandırmak için şunu yazın:

Exit-PSSession

Enter-PSSession ve Exit-PSSession cmdlet'leri hakkında daha fazla bilgi için bkz:

Uzak Komut Çalıştırma

Bir veya daha fazla bilgisayarda komut çalıştırmak için Invoke-Command cmdlet'ini kullanın. Örneğin, Server01 ve Server02 uzak bilgisayarlarında Get-UICulture komutunu çalıştırmak için şunu yazın:

Invoke-Command -ComputerName Server01, Server02 -ScriptBlock {Get-UICulture}

Çıkış bilgisayarınıza döndürülür.

LCID    Name     DisplayName               PSComputerName
----    ----     -----------               --------------
1033    en-US    English (United States)   server01.corp.fabrikam.com
1033    en-US    English (United States)   server02.corp.fabrikam.com

Betik Çalıştırma

Bir veya birden çok uzak bilgisayarda betik çalıştırmak için cmdlet'in Invoke-Command parametresini kullanın. Betiğin çalışıyor veya yerel bilgisayarınızdan erişilebilir durumda olması gerekir. Sonuçlar yerel bilgisayarınıza döndürülür.

Örneğin, aşağıdaki komut server01 ve Server02 uzak bilgisayarlarda DiskCollect.ps1 betiğini çalıştırır.

Invoke-Command -ComputerName Server01, Server02 -FilePath C:\Scripts\DiskCollect.ps1

Kalıcı Bağlantı Kurma

Uzak bilgisayarda kalıcı oturum oluşturmak için New-PSSession cmdlet'ini kullanın. Aşağıdaki örnek Server01 ve Server02'de uzak oturumlar oluşturur. Oturum nesneleri $s değişkeninde depolanır.

$s = New-PSSession -ComputerName Server01, Server02

Oturumlar oluşturulduğuna göre, artık bu oturumlarda herhangi bir komutu çalıştırabilirsiniz. Oturumlar kalıcı olduğundan, bir komuttan veri toplayabilir ve başka bir komutta kullanabilirsiniz.

Örneğin, aşağıdaki komut Get-HotFix değişkenindeki oturumlarda bir $s komutu çalıştırır ve sonuçları $h değişkenine kaydeder. $h değişkeni içindeki oturumların $sher birinde oluşturulur, ancak yerel oturumda yoktur.

Invoke-Command -Session $s {$h = Get-HotFix}

Artık $h değişkenindeki verileri aynı oturumdaki diğer komutlarla kullanabilirsiniz. Sonuçlar yerel bilgisayarda görüntülenir. Örneğin:

Invoke-Command -Session $s {$h | where {$_.InstalledBy -ne "NT AUTHORITY\SYSTEM"}}

Gelişmiş uzaktan iletişim

PowerShell şunları yapmanızı sağlayan cmdlet'ler içerir:

  • Hem yerel hem de uzak uçlardan uzak oturumları yapılandırma ve oluşturma
  • Özelleştirilmiş ve kısıtlanmış oturumlar oluşturma
  • Uzak oturumda örtük olarak çalışan komutları uzak oturumdan içeri aktarma.
  • Uzak oturumun güvenliğini yapılandırma

Windows üzerinde PowerShell bir WSMan sağlayıcısı içerir. Sağlayıcı, yerel bilgisayarda ve uzak bilgisayarlarda yapılandırma ayarları hiyerarşisinde gezinmenizi sağlayan bir WSMan: sürücüsü oluşturur.

WSMan sağlayıcısı hakkında daha fazla bilgi için bkz. WSMan Sağlayıcısı ve WS-Management Cmdlet'leri hakkındaveya Windows PowerShell konsolunda Get-Help WSManyazın.

Daha fazla bilgi için bkz:

Uzaktan erişim hataları ile ilgili yardım için bkz. about_Remote_Troubleshooting.

Ayrıca Bkz.