about_Remote
Kısa açıklama
PowerShell'de uzak komutların nasıl çalıştırıldığı açıklanır.
Uzun açıklama
Uzak komutları tek bir bilgisayarda veya birden çok bilgisayarda geçici veya kalıcı bir bağlantı kullanarak çalıştırabilirsiniz. Tek bir uzak bilgisayarla etkileşimli oturum da başlatabilirsiniz.
Bu konuda, farklı uzak komut türlerini çalıştırmayı gösteren bir dizi örnek verilmiştir. Bu temel komutları denedikten sonra, bu komutlarda kullanılan her cmdlet'i açıklayan Yardım konularını okuyun. Konular ayrıntıları sağlar ve komutları gereksinimlerinizi karşılayacak şekilde nasıl değiştirebileceğinizi açıklar.
Not: PowerShell uzaktan iletişimini kullanmak için yerel ve uzak bilgisayarların uzaktan iletişim için yapılandırılması gerekir. Daha fazla bilgi için bkz. about_Remote_Requirements.
ETKILEŞIMLI OTURUM BAŞLATMA (ENTER-PSSESSION)
Uzak komutları çalıştırmanın en kolay yolu, uzak bir bilgisayarla etkileşimli bir oturum başlatmaktır.
Oturum başlatıldığında, yazdığınız komutlar uzak bilgisayarda doğrudan uzak bilgisayarda yazdığınız gibi çalışır. Her etkileşimli oturumda yalnızca bir bilgisayara bağlanabilirsiniz.
Etkileşimli bir oturum başlatmak için Enter-PSSession cmdlet'ini kullanın. Aşağıdaki komut Server01 bilgisayarıyla etkileşimli bir oturum başlatır:
Enter-PSSession Server01
Komut istemi, Server01 bilgisayarına bağlı olduğunuzu gösterecek şekilde değişir.
Server01\PS>
Artık Server01 bilgisayarına komut yazabilirsiniz.
Etkileşimli oturumu sonlandırmak için şunu yazın:
Exit-PSSession
Daha fazla bilgi için bkz. Enter-PSSession.
UZAK VERILERI ALMAK IÇIN COMPUTERNAME PARAMETRESINE SAHIP CMDLET'LERI KULLANMA
Çeşitli cmdlet'ler, uzak bilgisayarlardan nesne almanızı sağlayan bir ComputerName parametresine sahiptir.
Bu cmdlet'ler WS-Management tabanlı PowerShell uzaktan iletişimini kullanmadığından, Bu cmdlet'lerin ComputerName parametresini PowerShell çalıştıran herhangi bir bilgisayarda kullanabilirsiniz. Bilgisayarların PowerShell uzaktan iletişim için yapılandırılması gerekmez ve bilgisayarların uzaktan iletişim için sistem gereksinimlerini karşılaması gerekmez.
Aşağıdaki cmdlet'ler bir ComputerName parametresine sahiptir:
Clear-EventLog Limit-EventLog Get-Counter New-EventLog Get-EventLog Remove-EventLog Get-HotFix Restart-Computer Get-Process Show-EventLog Get-Service Stop-Computer Get-WinEvent Test-Connection Get-WmiObject Write-EventLog
Örneğin, aşağıdaki komut Server01 uzak bilgisayarındaki hizmetleri alır:
Get-Service -ComputerName Server01
Genellikle, özel yapılandırma olmadan uzaktan iletişimi destekleyen cmdlet'lerin bir ComputerName parametresi vardır ve Session parametresi yoktur. Oturumunuzda bu cmdlet'leri bulmak için şunu yazın:
Get-Command | Where-Object { $_.Parameters.Keys -contains 'ComputerName' -and $_.Parameters.Keys -notcontains 'Session' }
UZAK KOMUT ÇALıŞTıRMA
Uzak bilgisayarlarda diğer komutları çalıştırmak için Invoke-Command cmdlet'ini kullanın.
Tek bir komut veya birkaç ilgisiz komut çalıştırmak için, uzak bilgisayarları belirtmek üzere Invoke-Command ComputerName parametresini kullanın. Komutu belirtmek için ScriptBlock parametresini kullanın.
Örneğin, aşağıdaki komut Server01 bilgisayarında bir Get-Culture komutu çalıştırır.
Invoke-Command -ComputerName Server01 -ScriptBlock {Get-Culture}
ComputerName parametresi, tek bir komutu veya bir veya birden çok bilgisayarda ilişkisiz birkaç komutu çalıştırdığınız durum için tasarlanmıştır. Uzak bir bilgisayara kalıcı bağlantı kurmak için Session parametresini kullanın.
KALıCı BAĞLANTı OLUŞTURMA (PSSESSION)
Invoke-Command cmdlet'in ComputerName parametresini kullandığınızda, Windows PowerShell yalnızca komutu için bir bağlantı kurar. Ardından, komut tamamlandığında bağlantıyı kapatır. komutunda tanımlanan tüm değişkenler veya işlevler kaybolur.
Uzak bilgisayara kalıcı bağlantı oluşturmak için New-PSSession cmdlet'ini kullanın. Örneğin, aşağıdaki komut Server01 ve Server02 bilgisayarlarında PSSessions oluşturur ve ardından PSSessions'ı $s değişkenine kaydeder.
$s = New-PSSession -ComputerName Server01, Server02
PSSESSION'DA KOMUT ÇALıŞTıRMA
PSSession ile işlevler, diğer adlar ve değişkenlerin değerleri gibi verileri paylaşan bir dizi uzak komut çalıştırabilirsiniz. PsSession'da komut çalıştırmak için Invoke-Command cmdlet'in Session parametresini kullanın.
Örneğin aşağıdaki komut, Server01 ve Server02 bilgisayarlarındaki PSSessions içinde bir Get-Process komutu çalıştırmak için Invoke-Command cmdlet'ini kullanır. komutu, her PSSession'da işlemleri bir $p değişkenine kaydeder.
Invoke-Command -Session $s -ScriptBlock {$p = Get-Process}
PSSession kalıcı bir bağlantı kullandığından, aynı PSSession içinde $p değişkenini kullanan başka bir komut çalıştırabilirsiniz. Aşağıdaki komut, $p kaydedilen işlemlerin sayısını sayar.
Invoke-Command -Session $s -ScriptBlock {$p.count}
BIRDEN ÇOK BILGISAYARDA UZAK KOMUT ÇALıŞTıRMA
Birden çok bilgisayarda uzak komut çalıştırmak için, Invoke-Command'un ComputerName parametresinin değerine tüm bilgisayar adlarını yazın. Adları virgülle ayırın.
Örneğin, aşağıdaki komut üç bilgisayarda bir Get-Culture komutu çalıştırır:
Invoke-Command -ComputerName S1, S2, S3 -ScriptBlock {Get-Culture}
Bir komutu birden çok PSSession içinde de çalıştırabilirsiniz. Aşağıdaki komutlar Server01, Server02 ve Server03 bilgisayarlarında PSSessions oluşturur ve ardından PSSessions'ın her birinde bir Get-Culture komutu çalıştırır.
$s = New-PSSession -ComputerName S1, S2, S3 Invoke-Command -Session $s -ScriptBlock {Get-Culture}
Bilgisayarların yerel bilgisayar listesini eklemek için, yerel bilgisayarın adını yazın, bir nokta (.) veya "localhost" yazın.
Invoke-Command -ComputerName S1, S2, S3, localhost -ScriptBlock {Get-Culture}
UZAK BILGISAYARLARDA BETIK ÇALıŞTıRMA
Uzak bilgisayarlarda yerel bir betik çalıştırmak için Invoke-Command dosyasının FilePath parametresini kullanın.
Örneğin, aşağıdaki komut S1 ve S2 bilgisayarlarda Sample.ps1 betiğini çalıştırır:
Invoke-Command -ComputerName S1, S2 -FilePath C:\Test\Sample.ps1
Betiğin sonuçları yerel bilgisayara döndürülür. Herhangi bir dosyayı kopyalamanız gerekmez.
UZAK KOMUTU DURDURMA
Bir komutu kesmek için CTRL+C tuşlarına basın. Kesme isteği uzak komutu sonlandırdığı uzak bilgisayara geçirilir.
DAHA FAZLA BİlGİ İÇİN
uzaktan iletişim için sistem gereksinimleri hakkında bilgi için bkz. about_Remote_Requirements.
Uzak çıkışı biçimlendirme yardımı için bkz. about_Remote_Output.
Uzaktan iletişimin nasıl çalıştığı, uzak verileri yönetme, özel yapılandırmalar, güvenlik sorunları ve diğer sık sorulan sorular hakkında bilgi için bkz. PowerShell Uzaktan İletişim SSS.
Uzaktan iletişim hatalarını çözme konusunda yardım için bkz. about_Remote_Troubleshooting.
PSSessions ve kalıcı bağlantılar hakkında bilgi için bkz. about_PSSessions.
PowerShell arka plan işleri hakkında bilgi için bkz. about_Jobs.
ANAHTAR KELİME -LER
about_Remoting