Invoke-Command (Microsoft.PowerShell.Core)
Invoke-Command
- Modül:
- Microsoft.PowerShell.Core
Komutları yerel ve uzak bilgisayarlarda çalıştırır.
Sözdizimi
Invoke-Command
[-StrictMode <Version>]
[-ScriptBlock] <ScriptBlock>
[-NoNewScope]
[-InputObject <PSObject>]
[-ArgumentList <Object[]>]
[<CommonParameters>]Invoke-Command
[[-Session] <PSSession[]>]
[-ThrottleLimit <Int32>]
[-AsJob]
[-HideComputerName]
[-JobName <String>]
[-FilePath] <String>
[-RemoteDebug]
[-InputObject <PSObject>]
[-ArgumentList <Object[]>]
[<CommonParameters>]Invoke-Command
[[-Session] <PSSession[]>]
[-ThrottleLimit <Int32>]
[-AsJob]
[-HideComputerName]
[-JobName <String>]
[-ScriptBlock] <ScriptBlock>
[-RemoteDebug]
[-InputObject <PSObject>]
[-ArgumentList <Object[]>]
[<CommonParameters>]Invoke-Command
[[-ComputerName] <String[]>]
[-Credential <PSCredential>]
[-Port <Int32>]
[-UseSSL]
[-ConfigurationName <String>]
[-ApplicationName <String>]
[-ThrottleLimit <Int32>]
[-AsJob]
[-InDisconnectedSession]
[-SessionName <String[]>]
[-HideComputerName]
[-JobName <String>]
[-FilePath] <String>
[-SessionOption <PSSessionOption>]
[-Authentication <AuthenticationMechanism>]
[-EnableNetworkAccess]
[-RemoteDebug]
[-InputObject <PSObject>]
[-ArgumentList <Object[]>]
[<CommonParameters>]Invoke-Command
[[-ComputerName] <String[]>]
[-Credential <PSCredential>]
[-Port <Int32>]
[-UseSSL]
[-ConfigurationName <String>]
[-ApplicationName <String>]
[-ThrottleLimit <Int32>]
[-AsJob]
[-InDisconnectedSession]
[-SessionName <String[]>]
[-HideComputerName]
[-JobName <String>]
[-ScriptBlock] <ScriptBlock>
[-SessionOption <PSSessionOption>]
[-Authentication <AuthenticationMechanism>]
[-EnableNetworkAccess]
[-RemoteDebug]
[-InputObject <PSObject>]
[-ArgumentList <Object[]>]
[-CertificateThumbprint <String>]
[<CommonParameters>]Invoke-Command
[-Credential <PSCredential>]
[-ConfigurationName <String>]
[-ThrottleLimit <Int32>]
[[-ConnectionUri] <Uri[]>]
[-AsJob]
[-InDisconnectedSession]
[-HideComputerName]
[-JobName <String>]
[-ScriptBlock] <ScriptBlock>
[-AllowRedirection]
[-SessionOption <PSSessionOption>]
[-Authentication <AuthenticationMechanism>]
[-EnableNetworkAccess]
[-RemoteDebug]
[-InputObject <PSObject>]
[-ArgumentList <Object[]>]
[-CertificateThumbprint <String>]
[<CommonParameters>]Invoke-Command
[-Credential <PSCredential>]
[-ConfigurationName <String>]
[-ThrottleLimit <Int32>]
[[-ConnectionUri] <Uri[]>]
[-AsJob]
[-InDisconnectedSession]
[-HideComputerName]
[-JobName <String>]
[-FilePath] <String>
[-AllowRedirection]
[-SessionOption <PSSessionOption>]
[-Authentication <AuthenticationMechanism>]
[-EnableNetworkAccess]
[-RemoteDebug]
[-InputObject <PSObject>]
[-ArgumentList <Object[]>]
[<CommonParameters>]Invoke-Command
-Credential <PSCredential>
[-ConfigurationName <String>]
[-ThrottleLimit <Int32>]
[-AsJob]
[-HideComputerName]
[-ScriptBlock] <ScriptBlock>
[-RemoteDebug]
[-InputObject <PSObject>]
[-ArgumentList <Object[]>]
[-VMId] <Guid[]>
[<CommonParameters>]Invoke-Command
-Credential <PSCredential>
[-ConfigurationName <String>]
[-ThrottleLimit <Int32>]
[-AsJob]
[-HideComputerName]
[-ScriptBlock] <ScriptBlock>
[-RemoteDebug]
[-InputObject <PSObject>]
[-ArgumentList <Object[]>]
-VMName <String[]>
[<CommonParameters>]Invoke-Command
-Credential <PSCredential>
[-ConfigurationName <String>]
[-ThrottleLimit <Int32>]
[-AsJob]
[-HideComputerName]
[-FilePath] <String>
[-RemoteDebug]
[-InputObject <PSObject>]
[-ArgumentList <Object[]>]
[-VMId] <Guid[]>
[<CommonParameters>]Invoke-Command
-Credential <PSCredential>
[-ConfigurationName <String>]
[-ThrottleLimit <Int32>]
[-AsJob]
[-HideComputerName]
[-FilePath] <String>
[-RemoteDebug]
[-InputObject <PSObject>]
[-ArgumentList <Object[]>]
-VMName <String[]>
[<CommonParameters>]Invoke-Command
[-Port <Int32>]
[-AsJob]
[-HideComputerName]
[-JobName <String>]
[-ScriptBlock] <ScriptBlock>
-HostName <String[]>
[-UserName <String>]
[-KeyFilePath <String>]
[-Subsystem <String>]
[-ConnectingTimeout <Int32>]
[-SSHTransport]
[-Options <Hashtable>]
[-RemoteDebug]
[-InputObject <PSObject>]
[-ArgumentList <Object[]>]
[<CommonParameters>]Invoke-Command
[-ConfigurationName <String>]
[-ThrottleLimit <Int32>]
[-AsJob]
[-HideComputerName]
[-JobName <String>]
[-ScriptBlock] <ScriptBlock>
[-RunAsAdministrator]
[-RemoteDebug]
[-InputObject <PSObject>]
[-ArgumentList <Object[]>]
-ContainerId <String[]>
[<CommonParameters>]Invoke-Command
[-ConfigurationName <String>]
[-ThrottleLimit <Int32>]
[-AsJob]
[-HideComputerName]
[-JobName <String>]
[-FilePath] <String>
[-RunAsAdministrator]
[-RemoteDebug]
[-InputObject <PSObject>]
[-ArgumentList <Object[]>]
-ContainerId <String[]>
[<CommonParameters>]Invoke-Command
[-AsJob]
[-HideComputerName]
[-JobName <String>]
[-ScriptBlock] <ScriptBlock>
-SSHConnection <Hashtable[]>
[-RemoteDebug]
[-InputObject <PSObject>]
[-ArgumentList <Object[]>]
[<CommonParameters>]Invoke-Command
[-AsJob]
[-HideComputerName]
[-FilePath] <String>
-HostName <String[]>
[-UserName <String>]
[-KeyFilePath <String>]
[-Subsystem <String>]
[-ConnectingTimeout <Int32>]
[-SSHTransport]
[-Options <Hashtable>]
[-RemoteDebug]
[-InputObject <PSObject>]
[-ArgumentList <Object[]>]
[<CommonParameters>]Invoke-Command
[-AsJob]
[-HideComputerName]
[-FilePath] <String>
-SSHConnection <Hashtable[]>
[-RemoteDebug]
[-InputObject <PSObject>]
[-ArgumentList <Object[]>]
[<CommonParameters>]Tanım
Invoke-Command cmdlet'i, komutları yerel veya uzak bir bilgisayarda çalıştırır ve hatalar da dahil olmak üzere komutların tüm çıktılarını döndürür. Tek bir Invoke-Command komutunu kullanarak komutları birden fazla bilgisayarda çalıştırabilirsiniz.
Uzak bilgisayarda tek bir komut çalıştırmak için BilgisayarAdı parametresini kullanın. Verileri paylaşan bir dizi ilgili komutu çalıştırmak için New-PSSession cmdlet'ini kullanarak uzak bilgisayarda bir PSSession (kalıcı bağlantı) oluşturun ve ardından < Komutu PSSession'da çalıştırmak için Invoke-Command'ınSession parametresi. Bağlantısı kesilmiş bir oturumda komut çalıştırmak için InDisconnectedSession parametresini kullanın. Arka planda bir işte komut çalıştırmak için AsJob parametresini kullanın.
Komut dosyası bloğunu çalıştırmak için yerel bir bilgisayardaki Invoke-Command komutunu da kullanabilirsiniz. PowerShell, komut dosyası bloğunu hemen geçerli kapsamın alt kapsamında çalıştırır.
Uzak bilgisayarda komut çalıştırmak için Invoke-Command'ı kullanmadan önce about_Remote'u okuyun.
PowerShell 6.0'dan itibaren uzak bilgisayarlarla bağlantı kurmak ve komutları çağırmak için Secure Shell'i (SSH) kullanabilirsiniz. Yerel bilgisayara SSH yüklenmeli ve uzak bilgisayar bir PowerShell SSH uç noktasıyla yapılandırılmalıdır. SSH tabanlı PowerShell uzaktan oturumunun avantajı, birden fazla platformda (Windows, Linux, macOS) çalışmasıdır. SSH tabanlı oturum için, uzak bilgisayarı ve ilgili bağlantı bilgilerini belirtmek üzere HostName veya SSHConnection parametrelerini kullanırsınız. PowerShell SSH uzaktan iletişiminin nasıl kurulacağı hakkında daha fazla bilgi için bkz. SSH Üzerinden PowerShell Uzaktan İletişim.
Bazı kod örneklerinde satır uzunluğunu azaltmak için sıçrama kullanılır. Daha fazla bilgi için bkz. about_Splatting.
Örnekler
Örnek 1: Sunucuda bir komut dosyası çalıştırma
Bu örnek, Server01 bilgisayarında Test.ps1 komut dosyasını çalıştırır.
Invoke-Command -FilePath c:\scripts\test.ps1 -ComputerName Server01FilePath parametresi, yerel bilgisayarda bulunan bir komut dosyasını belirtir. Komut uzak bilgisayarda çalışır ve sonuçlar yerel bilgisayara döndürülür.
Örnek 2: Uzak sunucuda bir komut çalıştırma
Bu örnek, Server01 uzak bilgisayarında bir Get-Culture komutunu çalıştırır.
Invoke-Command -ComputerName Server01 -Credential Domain01\User01 -ScriptBlock {
Get-Culture
}BilgisayarAdı parametresi uzak bilgisayarın adını belirtir. Kimlik Bilgisi parametresi, komutları çalıştırma iznine sahip bir kullanıcı olan Domain01\User01'in güvenlik bağlamında komutu çalıştırmak için kullanılır. ScriptBlock parametresi uzak bilgisayarda çalıştırılacak komutu belirtir.
Yanıt olarak PowerShell, User01 hesabı için parolayı ve kimlik doğrulama yöntemini ister. Daha sonra komutu Server01 bilgisayarında çalıştırır ve sonucu döndürür.
Örnek 3: Kalıcı bir bağlantıda komut çalıştırma
Bu örnek, Server02 adlı uzak bilgisayarda, kalıcı bir bağlantı kullanarak aynı Get-Culture komutunu bir oturumda çalıştırır.
$s = New-PSSession -ComputerName Server02 -Credential Domain01\User01
Invoke-Command -Session $s -ScriptBlock { Get-Culture }New-PSSession cmdlet'i, Server02 uzak bilgisayarında bir oturum oluşturur ve bunu $s değişkenine kaydeder. Genellikle, yalnızca uzaktaki bilgisayarda bir dizi komutu çalıştırdığınızda bir oturum oluşturursunuz.
Invoke-Command cmdlet'i Sunucu02'de Get-Culture komutunu çalıştırır. Oturum parametresi, $s değişkenine kaydedilen oturumu belirtir.
Yanıt olarak PowerShell, komutu Server02 bilgisayarındaki oturumda çalıştırır.
Örnek 4: Verileri paylaşan bir dizi komutu çalıştırmak için bir oturum kullanma
Bu örnek, Invoke-Command'ın ComputerName ve Session parametrelerini kullanmanın etkilerini karşılaştırır. Aynı verileri paylaşan bir dizi komutu çalıştırmak için bir oturumun nasıl kullanılacağını gösterir.
Invoke-Command -ComputerName Server02 -ScriptBlock { $p = Get-Process PowerShell }
Invoke-Command -ComputerName Server02 -ScriptBlock { $p.VirtualMemorySize }
$s = New-PSSession -ComputerName Server02
Invoke-Command -Session $s -ScriptBlock { $p = Get-Process PowerShell }
Invoke-Command -Session $s -ScriptBlock { $p.VirtualMemorySize }
17930240İlk iki komut, Server02 uzak bilgisayarındaki komutları çalıştırmak için Invoke-Command'ın BilgisayarAdı parametresini kullanır. İlk komut, PowerShell işlemini uzaktaki bilgisayara almak ve onu $p değişkenine kaydetmek için Get-Process cmdlet'ini kullanır. İkinci komut, PowerShell işleminin VirtualMemorySize özelliğinin değerini alır.
BilgisayarAdı parametresini kullandığınızda PowerShell, komutu çalıştırmak için yeni bir oturum oluşturur. Komut tamamlandığında oturum kapatılır. $p değişkeni bir bağlantıda oluşturuldu ancak ikinci komut için oluşturulan bağlantıda mevcut değil.
Uzak bilgisayarda kalıcı bir oturum oluşturup ardından her iki komutu da aynı oturumda çalıştırarak sorun çözülür.
New-PSSession cmdlet'i Server02 bilgisayarında kalıcı bir oturum oluşturur ve oturumu $s değişkenine kaydeder. Aşağıdaki Invoke-Command satırları, her iki komutu da aynı oturumda çalıştırmak için Session parametresini kullanır. Her iki komut da aynı oturumda çalıştığından $p değeri aktif kalır.
Örnek 5: Bir değişkende saklanan komut dosyası bloğuyla bir komutu çağırma
Bu örnek, bir değişkende kod bloğu olarak saklanan bir komutun nasıl çalıştırılacağını gösterir. Komut dosyası bloğu bir değişkene kaydedildiğinde, değişkeni ScriptBlock parametresinin değeri olarak belirtebilirsiniz.
$command = {
Get-WinEvent -LogName PowerShellCore/Operational |
Where-Object -FilterScript { $_.Message -like '*certificate*' }
}
Invoke-Command -ComputerName S1, S2 -ScriptBlock $command$command değişkeni, komut dosyası bloğu olarak biçimlendirilmiş Get-WinEvent komutunu saklar. Invoke-Command, S1 ve S2 uzak bilgisayarlarındaki $command dosyasında saklanan komutu çalıştırır.
Örnek 6: Tek bir komutu birden fazla bilgisayarda çalıştırma
Bu örnek, tek bir komutu birden fazla bilgisayarda çalıştırmak için Invoke-Command'ın nasıl kullanılacağını gösterir.
$parameters = @{
ComputerName = 'Server01', 'Server02', 'TST-0143', 'localhost'
ConfigurationName = 'MySession.PowerShell'
ScriptBlock = { Get-WinEvent -LogName PowerShellCore/Operational }
}
Invoke-Command @parametersBilgisayarAdı parametresi, bilgisayar adlarının virgülle ayrılmış bir listesini belirtir. Bilgisayar listesi, yerel bilgisayarı temsil eden localhost değerini içerir. ConfigurationName parametresi alternatif bir oturum yapılandırmasını belirtir. ScriptBlock parametresi, her bilgisayardan PowerShellCore/Operational olay günlüklerini almak için Get-WinEvent'i çalıştırır.
Örnek 7: Birden çok bilgisayardaki ana bilgisayar programının sürümünü alma
Bu örnek, 200 uzak bilgisayarda çalışan PowerShell ana bilgisayar programının sürümünü alır.
$version = Invoke-Command -ComputerName (Get-Content Machines.txt) -ScriptBlock {
(Get-Host).Version
}Yalnızca tek bir komut çalıştırıldığından, bilgisayarların her birine kalıcı bağlantılar oluşturmanız gerekmez. Bunun yerine komut, bilgisayarları belirtmek için BilgisayarAdı parametresini kullanır. Bilgisayarları belirtmek için, bilgisayar adlarından oluşan bir dosya olan Machine.txt dosyasının içeriğini almak için Get-Content cmdlet'ini kullanır.
Invoke-Command cmdlet'i uzak bilgisayarlarda bir Get-Host komutunu çalıştırır. PowerShell ana bilgisayarının Version özelliğini almak için nokta gösterimini kullanır.
Bu komutlar birer birer çalıştırılır. Komutlar tamamlandığında tüm bilgisayarlardan gelen komutların çıktısı $version değişkenine kaydedilir. Çıktı, verinin kaynaklandığı bilgisayarın adını içerir.
Örnek 8: Birkaç uzak bilgisayarda bir arka plan işi çalıştırma
Bu örnek, iki uzak bilgisayarda bir komut çalıştırır. Invoke-Command komutu, AsJob parametresini kullanarak komutun bir arka plan işi olarak çalışmasını sağlar. Komutlar uzak bilgisayarlarda çalışır ancak iş yerel bilgisayarda mevcuttur. Sonuçlar yerel bilgisayara iletilir.
$s = New-PSSession -ComputerName Server01, Server02
Invoke-Command -Session $s -ScriptBlock { Get-EventLog system } -AsJob
Id Name State HasMoreData Location Command
--- ---- ----- ----- ----------- ---------------
1 Job1 Running True Server01,Server02 Get-EventLog system
$j = Get-Job
$j | Format-List -Property *
HasMoreData : True
StatusMessage :
Location : Server01,Server02
Command : Get-EventLog system
JobStateInfo : Running
Finished : System.Threading.ManualResetEvent
InstanceId : e124bb59-8cb2-498b-a0d2-2e07d4e030ca
Id : 1
Name : Job1
ChildJobs : {Job2, Job3}
Output : {}
Error : {}
Progress : {}
Verbose : {}
Debug : {}
Warning : {}
StateChanged :
$results = $j | Receive-JobNew-PSSession cmdlet'i, Server01 ve Server02 uzak bilgisayarlarında oturumlar oluşturur. Invoke-Command cmdlet'i her oturumda bir arka plan işi çalıştırır. Komut, komutu bir arka plan işi olarak çalıştırmak için AsJob parametresini kullanır. Bu komut, iki uzak bilgisayarda çalıştırılan işlerin her biri için bir tane olmak üzere iki alt iş nesnesi içeren bir iş nesnesi döndürür.
Get-Job komutu, iş nesnesini $j değişkenine kaydeder. Daha sonra $j değişkeni, iş nesnesinin tüm özelliklerini bir listede görüntülemek için Format-List cmdlet'ine aktarılır. Son komut işlerin sonuçlarını alır. $j içindeki iş nesnesini Receive-Job cmdlet'ine yönlendirir ve sonuçları $results değişkeninde saklar.
Örnek 9: Uzak bilgisayardaki bir komut çalıştırmaya yerel değişkenleri dahil etme
Bu örnek, yerel değişkenlerin değerlerinin uzak bilgisayardaki bir komut çalıştırmaya nasıl dahil edileceğini gösterir. Komut, uzak komuttaki yerel bir değişkeni tanımlamak için Kullanma kapsam değiştiricisini kullanır. Varsayılan olarak tüm değişkenlerin uzak oturumda tanımlandığı varsayılır. Kullanma kapsam değiştiricisi PowerShell 3,0'da kullanıma sunuldu. Kullanma kapsam değiştiricisi hakkında daha fazla bilgi için bkz. about_Remote_Variables ve about_Scopes.
$Log = 'PowerShellCore/Operational'
Invoke-Command -ComputerName Server01 -ScriptBlock {
Get-WinEvent -LogName $Using:Log -MaxEvents 10
}$Log değişkeni, olay günlüğünün adını (PowerShellCore/Operational) saklar. Invoke-Command cmdlet'i, olay günlüğünden en yeni on olayı almak için Sunucu01'de Get-WinEvent'i çalıştırır. LogName parametresinin değeri, yerel oturumda oluşturulduğunu belirtmek için Using kapsam değiştiricisinin önüne eklenen $Log değişkenidir. , uzak oturumda değil.
Örnek 10: Bilgisayar adını gizleyin
Bu örnek, Invoke-Command'ın HideComputerName parametresini kullanmanın etkisini gösterir. HideComputerName bu cmdlet'in döndürdüğü nesneyi değiştirmez. Yalnızca ekranı değiştirir. Etkilenen nesnelerden herhangi birinin PsComputerName özelliğini görüntülemek için Format cmdlet'lerini kullanmaya devam edebilirsiniz.
Invoke-Command -ComputerName S1, S2 -ScriptBlock { Get-Process PowerShell }
PSComputerName Handles NPM(K) PM(K) WS(K) VM(M) CPU(s) Id ProcessName
-------------- ------- ------ ----- ----- ----- ------ -- -----------
S1 575 15 45100 40988 200 4.68 1392 PowerShell
S2 777 14 35100 30988 150 3.68 67 PowerShell
Invoke-Command -ComputerName S1, S2 -HideComputerName -ScriptBlock {
Get-Process PowerShell
}
Handles NPM(K) PM(K) WS(K) VM(M) CPU(s) Id ProcessName
------- ------ ----- ----- ----- ------ -- -----------
575 15 45100 40988 200 4.68 1392 PowerShell
777 14 35100 30988 150 3.68 67 PowerShellİlk iki komut, PowerShell işlemi için bir Get-Process komutunu çalıştırmak üzere Invoke-Command'ı kullanır. İlk komutun çıktısı, komutun çalıştırıldığı bilgisayarın adını içeren PsComputerName özelliğini içerir. HideComputerName'i kullanan ikinci komutun çıktısı PsComputerName sütununu içermez.
Örnek 11: Bir kod bloğunda Param anahtar sözcüğünü kullanın
Param anahtar sözcüğü ve ArgumentList parametresi, değişken değerlerini bir komut dosyası bloğundaki adlandırılmış parametrelere geçirmek için kullanılır. Bu örnekte a harfiyle başlayan ve .pdf uzantısına sahip dosya adları görüntülenir.
Param anahtar kelimesi hakkında daha fazla bilgi için bkz. about_Language_Keywords.
$parameters = @{
ComputerName = 'Server01'
ScriptBlock = {
Param ($param1, $param2)
Get-ChildItem -Name $param1 -Include $param2
}
ArgumentList = 'a*', '*.pdf'
}
Invoke-Command @parameters
aa.pdf
ab.pdf
ac.pdf
az.pdfInvoke-Command, $param1 ve $param2 olmak üzere iki değişkeni tanımlayan ScriptBlock parametresini kullanır. Get-ChildItem, değişken adlarıyla birlikte Ad ve Include adlı parametreleri kullanır. ArgumentList, değerleri değişkenlere aktarır.
Örnek 12: Bir kod bloğunda $args otomatik değişkenini kullanın
$args otomatik değişkeni ve ArgumentList parametresi, dizi değerlerini bir komut dosyası bloğundaki parametre konumlarına aktarmak için kullanılır. Bu örnek, bir sunucunun .txt dosyalarının dizin içeriğini görüntüler. Get-ChildItem Path parametresi 0 konumunda ve Filter parametresi 1 konumunda.
$args değişkeni hakkında daha fazla bilgi için bkz. about_Automatic_Variables
$parameters = @{
ComputerName = 'Server01'
ScriptBlock = { Get-ChildItem $args[0] $args[1] }
ArgumentList = 'C:\Test', '*.txt*'
}
Invoke-Command @parameters
Directory: C:\Test
Mode LastWriteTime Length Name
---- ------------- ------ ----
-a--- 6/12/2019 15:15 128 alog.txt
-a--- 7/27/2019 15:16 256 blog.txt
-a--- 9/28/2019 17:10 64 zlog.txtInvoke-Command bir ScriptBlock parametresi kullanır ve Get-ChildItem, $args[0] ve 'i belirtir $args[1] dizi değerleri. ArgumentList, $args dizi değerlerini Path ve Filter için Get-ChildItem parametre konumlarına aktarır .
Örnek 13: Bir metin dosyasında listelenen tüm bilgisayarlarda bir komut dosyasını çalıştırın
Bu örnek, Servers.txt dosyasında listelenen tüm bilgisayarlarda Sample.ps1 komut dosyasını çalıştırmak için Invoke-Command cmdlet'ini kullanır. Komut, komut dosyasını belirtmek için FilePath parametresini kullanır. Bu komut, komut dosyasına uzak bilgisayarlar tarafından erişilemese bile, komut dosyasını uzak bilgisayarlarda çalıştırmanıza olanak tanır.
$parameters = @{
ComputerName = (Get-Content Servers.txt)
FilePath = 'C:\Scripts\Sample.ps1'
ArgumentList = 'Process', 'Service'
}
Invoke-Command @parametersKomutu gönderdiğinizde Sample.ps1 dosyasının içeriği bir komut dosyası bloğuna kopyalanır ve komut dosyası bloğu uzak bilgisayarların her birinde çalıştırılır. Bu prosedür, komut dosyasının içeriğini göndermek için ScriptBlock parametresini kullanmaya eşdeğerdir.
Örnek 14: Uzak bilgisayarda URI kullanarak komut çalıştırma
Bu örnek, Tekdüzen Kaynak Tanımlayıcısı (URI) tarafından tanımlanan uzak bir bilgisayarda bir komutun nasıl çalıştırılacağını gösterir. Bu özel örnek, uzak bir Exchange sunucusunda Set-Mailbox komutunu çalıştırır.
$LiveCred = Get-Credential
$parameters = @{
ConfigurationName = 'Microsoft.Exchange'
ConnectionUri = 'https://ps.exchangelabs.com/PowerShell'
Credential = $LiveCred
Authentication = 'Basic'
ScriptBlock = { Set-Mailbox Dan -DisplayName 'Dan Park' }
}
Invoke-Command @parametersİlk satır, Windows Live ID kimlik bilgilerini $LiveCred değişkeninde depolamak için Get-Credential cmdlet'ini kullanır. PowerShell, kullanıcıdan Windows Live ID kimlik bilgilerini girmesini ister.
$parameters değişkeni, Invoke-Command cmdlet'ine aktarılacak parametreleri içeren bir karma tablodur. Invoke-Command cmdlet'i, Microsoft.Exchange oturum yapılandırmasını kullanarak bir Set-Mailbox komutunu çalıştırır. ConnectionURI parametresi, Exchange sunucusu uç noktasının URL'sini belirtir. Kimlik Bilgileri parametresi, $LiveCred değişkeninde saklanan kimlik bilgilerini belirtir. AuthenticationMechanism parametresi, temel kimlik doğrulamanın kullanımını belirtir. ScriptBlock parametresi, komutu içeren bir komut dosyası bloğunu belirtir.
Örnek 15: Bir oturum seçeneğini kullanın
Bu örnek, bir SessionOption parametresinin nasıl oluşturulacağını ve kullanılacağını gösterir.
$so = New-PSSessionOption -SkipCACheck -SkipCNCheck -SkipRevocationCheck
$parameters = @{
ComputerName = 'server01'
UseSSL = $true
ScriptBlock = { Get-HotFix }
SessionOption = $so
Credential = 'server01\user01'
}
Invoke-Command @parametersNew-PSSessionOption cmdlet'i, uzak ucun gelen HTTPS bağlantısını değerlendirirken Sertifika Yetkilisini, Kurallı Adı ve İptal Listelerini doğrulamamasına neden olan bir oturum seçeneği nesnesi oluşturur. SessionOption nesnesi $so değişkenine kaydedilir.
Not
Bu kontrollerin devre dışı bırakılması sorun giderme açısından uygundur ancak kesinlikle güvenli değildir.
Invoke-Command cmdlet'i uzaktan bir Get-HotFix komutunu çalıştırır. SessionOption parametresine $so değişkeni verilir.
Örnek 16: Uzak komutta URI yönlendirmesini yönetme
Bu örnek, uzak bir komutta URI yönlendirmesini yönetmek için AllowRedirection ve SessionOption parametrelerinin nasıl kullanılacağını gösterir.
$max = New-PSSessionOption -MaximumRedirection 1
$parameters = @{
ConnectionUri = 'https://ps.exchangelabs.com/PowerShell'
ScriptBlock = { Get-Mailbox dan }
AllowRedirection = $true
SessionOption = $max
}
Invoke-Command @parametersNew-PSSessionOption cmdlet'i, $max değişkenine kaydedilen bir PSSessionOption nesnesi oluşturur. Komut, PSSessionOption nesnesinin MaximumConnectionRedirectionCount özelliğini 1'e ayarlamak için MaximumRedirection parametresini kullanır.
Invoke-Command cmdlet'i uzak bir Microsoft Exchange Sunucusunda bir Get-Mailbox komutunu çalıştırır. AllowRedirection parametresi, bağlantıyı alternatif bir uç noktaya yönlendirmek için açık izin sağlar. SessionOption parametresi, $max değişkeninde depolanan oturum nesnesini kullanır.
Sonuç olarak, ConnectionURI tarafından belirtilen uzak bilgisayar bir yönlendirme mesajı döndürürse PowerShell bağlantıyı yeniden yönlendirir, ancak yeni hedef başka bir yönlendirme mesajı döndürürse yönlendirme sayısı değeri 1 aşılır ve Invoke-Command, sonlandırılmayan bir hata döndürür.
Örnek 17: Uzak oturumda bir ağ paylaşımına erişme
Bu örnek, uzak bir oturumdan ağ paylaşımına nasıl erişileceğini gösterir. Örneği göstermek için üç bilgisayar kullanıldı. Sunucu01 yerel bilgisayar, Sunucu02 uzak bilgisayar ve Net03 ağ paylaşımını içerir. Sunucu01, Sunucu02'ye bağlanır ve ardından Sunucu02, ağ paylaşımına erişmek için Net03'e ikinci bir atlama yapar. PowerShell Uzaktan İletişimin bilgisayarlar arasındaki atlamaları nasıl desteklediği hakkında daha fazla bilgi için bkz. PowerShell Uzaktan İletişimde ikinci atlamayı yapma.
Gerekli Kimlik Bilgisi Güvenliği Destek Sağlayıcısı (CredSSP) delegasyonu, yerel bilgisayardaki istemci ayarlarında ve uzak bilgisayardaki hizmet ayarlarında etkinleştirilir. Bu örnekteki komutları çalıştırmak için yerel bilgisayardaki ve uzak bilgisayardaki Yöneticiler grubunun üyesi olmanız gerekir.
Enable-WSManCredSSP -Role Client -DelegateComputer Server02
$s = New-PSSession Server02
Invoke-Command -Session $s -ScriptBlock { Enable-WSManCredSSP -Role Server -Force }
$parameters = @{
ComputerName = 'Server02'
ScriptBlock = { Get-Item \\Net03\Scripts\LogFiles.ps1 }
Authentication = 'CredSSP'
Credential = 'Domain01\Admin01'
}
Invoke-Command @parametersEnable-WSManCredSSP cmdlet'i, Server01 yerel bilgisayarından Server02 uzak bilgisayarına CredSSP delegasyonunu etkinleştirir. Rol parametresi, yerel bilgisayardaki CredSSP istemci ayarını yapılandırmak için İstemci'yi belirtir.
New-PSSession, Server02 için bir PSSession nesnesi oluşturur ve nesneyi $s değişkeninde saklar.
Invoke-Command cmdlet'i uzak bilgisayar Server02'ye bağlanmak için $s değişkenini kullanır. ScriptBlock parametresi uzak bilgisayarda Enable-WSManCredSSP'yi çalıştırır. Rol parametresi uzak bilgisayardaki CredSSP sunucu ayarını yapılandırmak için Sunucu'yu belirtir.
$parameters değişkeni ağ paylaşımına bağlanacak parametre değerlerini içerir. Invoke-Command cmdlet'i, $s içindeki oturumda bir Get-Item komutunu çalıştırır. Bu komut, \\Net03\Scripts ağ paylaşımından bir komut dosyası alır. Komut, CredSSP değeriyle Kimlik Doğrulama parametresini ve Domain01\Admin01 değeriyle Kimlik Bilgisi parametresini kullanır. .
Örnek 18: Birçok uzak bilgisayarda komut dosyalarını başlatın
Bu örnek, yüzden fazla bilgisayarda bir komut dosyasını çalıştırıyor. Yerel bilgisayar üzerindeki etkiyi en aza indirmek için her bilgisayara bağlanır, betiği başlatır ve ardından her bilgisayarla olan bağlantıyı keser. Komut dosyası, bağlantısı kesilen oturumlarda çalışmaya devam eder.
$parameters = @{
ComputerName = (Get-Content -Path C:\Test\Servers.txt)
InDisconnectedSession = $true
FilePath = '\\Scripts\Public\ConfigInventory.ps1'
SessionOption = @{
OutputBufferingMode = 'Drop'
IdleTimeout = [timespan]::FromHours(12)
}
}
Invoke-Command @parametersKomut, betiği çalıştırmak için Invoke-Command'ı kullanır. BilgisayarAdı parametresinin değeri, uzak bilgisayarların adlarını bir metin dosyasından alan bir Get-Content komutudur. InDisconnectedSession parametresi, komutu başlatır başlatmaz oturumların bağlantısını keser. FilePath parametresinin değeri, Invoke-Command'ın her bilgisayarda çalıştırdığı komut dosyasıdır.
SessionOption'un değeri bir karma tablosudur. OutputBufferingMode değeri Drop olarak ayarlanır ve IdleTimeout değeri 12 saat olarak ayarlanır.
Bağlantısı kesilmiş oturumlarda çalışan komutların ve komut dosyalarının sonuçlarını almak için Receive-PSSession cmdlet'ini kullanın.
Örnek 19: Uzak bilgisayarda SSH kullanarak komut çalıştırma
Bu örnek, Secure Shell (SSH) kullanılarak uzaktaki bir bilgisayarda bir komutun nasıl çalıştırılacağını gösterir. Uzak bilgisayarda SSH şifre isteyecek şekilde yapılandırılmışsa bir şifre istemi alırsınız. Aksi takdirde SSH anahtar tabanlı kullanıcı kimlik doğrulamasını kullanmanız gerekecektir.
Invoke-Command -HostName UserA@LinuxServer01 -ScriptBlock { Get-MailBox * }Örnek 20: Uzak bilgisayarda SSH kullanarak bir komut çalıştırın ve bir kullanıcı kimlik doğrulama anahtarı belirtin
Bu örnek, uzak bir bilgisayarda SSH kullanarak bir komutun nasıl çalıştırılacağını ve kullanıcı kimlik doğrulaması için bir anahtar dosyasının nasıl belirleneceğini gösterir. Anahtar kimlik doğrulaması başarısız olmadığı ve uzaktaki bilgisayar temel parola kimlik doğrulamasına izin verecek şekilde yapılandırılmadığı sürece sizden parola istenmeyecektir.
$parameters = @{
HostName = 'UserA@LinuxServer01'
ScriptBlock = { Get-MailBox * }
KeyFilePath = '/UserA/UserAKey_rsa'
}
Invoke-CommandÖrnek 21: SSH'yi iş olarak kullanarak birden fazla uzak bilgisayarda bir komut dosyasını çalıştırın
Bu örnek, SSH ve SSHConnection parametre kümesi kullanılarak birden fazla uzak bilgisayarda bir komut dosyasının nasıl çalıştırılacağını gösterir. SSHConnection parametresi, her bilgisayar için bağlantı bilgilerini içeren bir karma tablo dizisi alır. Bu örnek, hedef uzak bilgisayarların anahtar tabanlı kullanıcı kimlik doğrulamasını destekleyecek şekilde yapılandırılmış SSH'ye sahip olmasını gerektirir.
$sshConnections = @(
@{
HostName = "WinServer1"
UserName = "Domain\UserA"
KeyFilePath = "C:\Users\UserA\id_rsa"
}
@{
HostName = "UserB@LinuxServer5"
KeyFilePath = "/Users/UserB/id_rsa"
}
)
$results = Invoke-Command -FilePath c:\Scripts\GetInfo.ps1 -SSHConnection $sshConnectionsÖrnek 22: SSH seçeneklerini kullanarak uzak bir SSH oturumuna bağlanın
Bu örnek, SSH seçeneklerini kullanarak uzak Linux tabanlı bir makinede bir komut dosyasının nasıl çalıştırılacağını gösterir. Seçenekler parametresi, uzak sistemle bağlantı kurmak için temel ssh komutuna seçenek olarak iletilen değerlerin karma tablosunu alır.
$options = @{
Port=22
User = 'UserB'
Host = 'LinuxServer5'
}
$results = Invoke-Command -FilePath c:\Scripts\CollectEvents.ps1 -KeyFilePath '/Users/UserB/id_rsa' -Options $optionsParametreler
-AllowRedirection
Bu bağlantının alternatif bir Tekdüzen Kaynak Tanımlayıcısına (URI) yeniden yönlendirilmesine izin verir.
ConnectionURI parametresini kullandığınızda uzak hedef, farklı bir URI'ye yeniden yönlendirme talimatı döndürebilir. Varsayılan olarak PowerShell bağlantıları yönlendirmez ancak bağlantıyı yeniden yönlendirmesine izin vermek için bu parametreyi kullanabilirsiniz.
MaximumConnectionRedirectionCount oturum seçeneği değerini değiştirerek bağlantının yeniden yönlendirilme sayısını da sınırlayabilirsiniz. New-PSSessionOption cmdlet'inin MaximumRedirection parametresini kullanın veya $PSSessionOption tercih değişkeninin MaximumConnectionRedirectionCount özelliğini ayarlayın. Varsayılan değer 5'tir.
- Tip :
SwitchParameter
- Konum:
Adlandırılmış
- Varsayılan değer:
False
- Gerekli:
False
- Boru hattı girişini kabul edin:
False
- Joker karakterleri kabul et:
False
-ApplicationName
Bağlantı URI'sinin uygulama adı bölümünü belirtir. Komutta ConnectionURI parametresini kullanmadığınızda uygulama adını belirtmek için bu parametreyi kullanın.
Varsayılan değer, yerel bilgisayardaki $PSSessionApplicationName tercih değişkeninin değeridir. Bu tercih değişkeni tanımlanmamışsa varsayılan değer WSMAN'dir. Bu değer çoğu kullanım için uygundur. Daha fazla bilgi için bkz. about_Preference_Variables.
WinRM hizmeti, bağlantı isteğine hizmet verecek bir dinleyici seçmek için uygulama adını kullanır. Bu parametrenin değeri, uzak bilgisayardaki dinleyicinin URLPrefix özelliğinin değeriyle eşleşmelidir.
- Tip :
String
- Konum:
Adlandırılmış
- Varsayılan değer:
Yerel bilgisayarda ayarlanmışsa $PSSessionApplicationName, aksi halde WSMAN
- Gerekli:
False
- Boru hattı girişini kabul edin:
True
- Joker karakterleri kabul et:
False
-ArgumentList
Betik bloğu için parametrelerin değerlerini sağlar. Komut dosyası bloğundaki parametreler, ArgumentList'e sağlanan dizi değerinden konuma göre aktarılır. Bu dizi sıçraması olarak bilinir. ArgumentList'in davranışı hakkında daha fazla bilgi için bkz. about_Splatting.
- Tip :
Object[]
- Takma adlar:
Args
- Konum:
Adlandırılmış
- Varsayılan değer:
None
- Gerekli:
False
- Boru hattı girişini kabul edin:
False
- Joker karakterleri kabul et:
False
-AsJob
Bu cmdlet'in komutu uzak bilgisayarda arka plan işi olarak çalıştırdığını belirtir. Bitirilmesi uzun zaman alan komutları çalıştırmak için bu parametreyi kullanın.
AsJob parametresini kullandığınızda komut, işi temsil eden bir nesne döndürür ve ardından komut istemini görüntüler. İş bitene kadar oturumda çalışmaya devam edebilirsiniz. İşi yönetmek için *-Job cmdlet'lerini kullanın. İş sonuçlarını almak için Receive-Job cmdlet'ini kullanın.
AsJob parametresi, bir Start-Job cmdlet'ini uzaktan çalıştırmak için Invoke-Command cmdlet'ini kullanmaya benzer. Ancak AsJob'da, iş uzak bir bilgisayarda çalışsa bile iş yerel bilgisayarda oluşturulur. Uzak işin sonuçları otomatik olarak yerel bilgisayara döndürülür.
PowerShell arka plan işleri hakkında daha fazla bilgi için bkz. about_Jobs ve about_Remote_Jobs.
- Tip :
SwitchParameter
- Konum:
Adlandırılmış
- Varsayılan değer:
False
- Gerekli:
False
- Boru hattı girişini kabul edin:
False
- Joker karakterleri kabul et:
False
-Authentication
Kullanıcının kimlik bilgilerini doğrulamak için kullanılan mekanizmayı belirtir. CredSSP kimlik doğrulaması yalnızca Windows Vista, Windows Server 2008 ve Windows işletim sisteminin sonraki sürümlerinde kullanılabilir.
Bu parametre için kabul edilebilir değerler aşağıdaki gibidir:
- Varsayılan
- Temel
- Kredisp
- Özet
- Kerberos
- Pazarlık etmek
- Örtülü Kimlik Bilgileriyle Anlaşma Yapın
Varsayılan değer Varsayılan'dır.
Bu parametrenin değerleri hakkında daha fazla bilgi için bkz. AuthenticationMechanism Numaralandırması.
Dikkat
Kullanıcının kimlik bilgilerinin, kimlik doğrulaması için uzaktaki bir bilgisayara iletildiği Kimlik Bilgisi Güvenliği Destek Sağlayıcısı (CredSSP) kimlik doğrulaması, uzak bir ağ paylaşımına erişim gibi birden fazla kaynakta kimlik doğrulaması gerektiren komutlar için tasarlanmıştır. Bu mekanizma uzaktan işlemin güvenlik riskini artırır. Uzak bilgisayarın güvenliği ihlal edilirse, kendisine iletilen kimlik bilgileri ağ oturumunu denetlemek için kullanılabilir. Daha fazla bilgi için bkz. Kimlik Bilgisi Güvenliği Destek Sağlayıcısı.
- Tip :
AuthenticationMechanism
- Kabul edilen değerler:
Temel, Varsayılan, Credssp, Özet, Kerberos, Anlaşma, NegotiateWithImplicitCredential
- Konum:
Adlandırılmış
- Varsayılan değer:
Varsayılan
- Gerekli:
False
- Boru hattı girişini kabul edin:
False
- Joker karakterleri kabul et:
False
-CertificateThumbprint
Bağlantısı kesilen oturuma bağlanma iznine sahip bir kullanıcı hesabının dijital ortak anahtar sertifikasını (X509) belirtir. Sertifikanın sertifika parmak izini girin.
Sertifikalar, istemci sertifikası tabanlı kimlik doğrulamada kullanılır. Yalnızca yerel kullanıcı hesaplarıyla eşlenebilirler ve etki alanı hesaplarıyla çalışmazlar.
Sertifika parmak izi almak için PowerShell Cert: sürücüsünde Get-Item veya Get-ChildItem komutunu kullanın.
- Tip :
String
- Konum:
Adlandırılmış
- Varsayılan değer:
None
- Gerekli:
False
- Boru hattı girişini kabul edin:
False
- Joker karakterleri kabul et:
False
-ComputerName
Komutun çalıştığı bilgisayarları belirtir. Varsayılan yerel bilgisayardır.
BilgisayarAdı parametresini kullandığınızda PowerShell, yalnızca belirtilen komutu çalıştırmak için kullanılan ve ardından kapatılan geçici bir bağlantı oluşturur. Kalıcı bir bağlantıya ihtiyacınız varsa Oturum parametresini kullanın.
Bir veya daha fazla bilgisayarın NETBIOS adını, IP adresini veya tam etki alanı adını virgülle ayrılmış bir listeye yazın. Yerel bilgisayarı belirtmek için bilgisayar adını, localhost'u veya bir noktayı (.) yazın.
BilgisayarAdı değerinde bir IP adresi kullanmak için komutun Kimlik Bilgisi parametresini içermesi gerekir. Bilgisayarın HTTPS aktarımı için yapılandırılması veya uzak bilgisayarın IP adresinin yerel bilgisayarın WinRM Güvenilen Ana Bilgisayarlar listesine dahil edilmesi gerekir. Güvenilen Ana Bilgisayarlar listesine bilgisayar adı ekleme talimatları için bkz. Güvenilir Ana Bilgisayar Listesine Bilgisayar Ekleme.
Windows Vista'da ve Windows işletim sisteminin sonraki sürümlerinde, yerel bilgisayarı BilgisayarAdı değerine dahil etmek için Yönetici olarak çalıştır seçeneğini kullanarak PowerShell'i çalıştırmanız gerekir.
- Tip :
String[]
- Takma adlar:
Cn
- Konum:
0
- Varsayılan değer:
Yerel bilgisayar
- Gerekli:
False
- Boru hattı girişini kabul edin:
False
- Joker karakterleri kabul et:
False
-ConfigurationName
Yeni PSSession için kullanılan oturum yapılandırmasını belirtir.
Bir oturum yapılandırması için bir yapılandırma adı veya tam kaynak URI'sini girin. Yalnızca yapılandırma adını belirtirseniz aşağıdaki şema URI'si eklenir: http://schemas.microsoft.com/PowerShell.
SSH ile kullanıldığında bu parametre, sshd_config'de tanımlandığı gibi hedefte kullanılacak alt sistemi belirtir. SSH için varsayılan değer powershell alt sistemidir.
Bir oturumun oturum yapılandırması uzak bilgisayarda bulunur. Belirtilen oturum yapılandırması uzak bilgisayarda mevcut değilse komut başarısız olur.
Varsayılan değer, yerel bilgisayardaki $PSSessionConfigurationName tercih değişkeninin değeridir. Bu tercih değişkeni ayarlanmazsa varsayılan değer Microsoft.PowerShell'dir. Daha fazla bilgi için bkz. about_Preference_Variables.
- Tip :
String
- Konum:
Adlandırılmış
- Varsayılan değer:
Yerel bilgisayarda ayarlanmışsa $PSSessionConfigurationName, aksi takdirde Microsoft.PowerShell
- Gerekli:
False
- Boru hattı girişini kabul edin:
True
- Joker karakterleri kabul et:
False
-ConnectingTimeout
İlk SSH bağlantısının tamamlanması için izin verilen süreyi milisaniye cinsinden belirtir. Bağlantı belirtilen süre içinde tamamlanmazsa bir hata döndürülür.
Bu parametre PowerShell 7,2'de tanıtıldı
- Tip :
Int32
- Konum:
Adlandırılmış
- Varsayılan değer:
Sınırsız
- Gerekli:
False
- Boru hattı girişini kabul edin:
False
- Joker karakterleri kabul et:
False
-ConnectionUri
Oturumun bağlantı uç noktasını tanımlayan bir Tekdüzen Kaynak Tanımlayıcısını (URI) belirtir. URI tam olarak nitelenmiş olmalıdır.
Bu dizenin formatı aşağıdaki gibidir:
<Transport>://<ComputerName>:<Port>/<ApplicationName>Varsayılan değer aşağıdaki gibidir:
http://localhost:5985/WSMANBir bağlantı URI'sı belirtmezseniz bağlantı URI değerlerini belirtmek için UseSSL ve Port parametrelerini kullanabilirsiniz.
URI'nin Aktarım segmenti için geçerli değerler HTTP ve HTTPS'dir. Aktarım segmenti ile bir bağlantı URI'si belirtirseniz ancak bir bağlantı noktası belirtmezseniz, oturum standart bağlantı noktalarıyla oluşturulur: HTTP için 80 ve HTTPS için 443. PowerShell uzaktan iletişimi için varsayılan bağlantı noktalarını kullanmak üzere HTTP için bağlantı noktası 5985'i veya HTTPS için 5986 bağlantı noktasını belirtin.
Hedef bilgisayar bağlantıyı farklı bir URI'ye yönlendirirse PowerShell, komutta AllowRedirection parametresini kullanmadığınız sürece yeniden yönlendirmeyi engeller.
- Tip :
Uri[]
- Takma adlar:
URI, CU
- Konum:
0
- Varsayılan değer:
http://localhost:5985/WSMAN
- Gerekli:
False
- Boru hattı girişini kabul edin:
False
- Joker karakterleri kabul et:
False
-ContainerId
Bir kapsayıcı kimlikleri dizisini belirtir.
- Tip :
String[]
- Konum:
Adlandırılmış
- Varsayılan değer:
None
- Gerekli:
True
- Boru hattı girişini kabul edin:
True
- Joker karakterleri kabul et:
False
-Credential
Bu eylemi gerçekleştirme iznine sahip bir kullanıcı hesabını belirtir. Varsayılan geçerli kullanıcıdır.
User01 veya Domain01\User01 gibi bir kullanıcı adı yazın veya Get-Credential tarafından oluşturulan bir PSCredential nesnesi girin kod > cmdlet'i seçin. Bir kullanıcı adı yazarsanız parolayı girmeniz istenir.
Kimlik bilgileri bir PSCredential nesnesinde, parola ise SecureString olarak depolanır.
Not
SecureString veri koruması hakkında daha fazla bilgi için bkz. SecureString ne kadar güvenli?.
- Tip :
PSCredential'ı
- Konum:
Adlandırılmış
- Varsayılan değer:
Geçerli kullanıcı
- Gerekli:
False
- Boru hattı girişini kabul edin:
True
- Joker karakterleri kabul et:
False
-EnableNetworkAccess
Bu cmdlet'in geridöngü oturumlarına etkileşimli bir güvenlik belirteci eklediğini belirtir. Etkileşimli belirteç, geridöngü oturumunda diğer bilgisayarlardan veri alan komutları çalıştırmanıza olanak tanır. Örneğin, XML dosyalarını uzak bilgisayardan yerel bilgisayara kopyalayan bir komutu oturumda çalıştırabilirsiniz.
Geridöngü oturumu, aynı bilgisayarda başlayıp biten bir PSSession'dur. Bir geridöngü oturumu oluşturmak için BilgisayarAdı parametresini atlayın veya değerini nokta (.), localhost veya yerel bilgisayarın adı olarak ayarlayın.
Varsayılan olarak geridöngü oturumları, uzak bilgisayarlarda kimlik doğrulaması yapmak için yeterli izni sağlayamayabilecek bir ağ belirteci kullanılarak oluşturulur.
EnableNetworkAccess parametresi yalnızca geri döngü oturumlarında etkilidir. Uzak bilgisayarda bir oturum oluştururken EnableNetworkAccess'i kullanırsanız komut başarılı olur ancak parametre dikkate alınmaz.
Oturum kimlik bilgilerini diğer bilgisayarlara devreden Kimlik Doğrulama parametresinin CredSSP değerini kullanarak geridöngü oturumunda uzaktan erişime izin verebilirsiniz.
Bilgisayarı kötü amaçlı erişimden korumak için, EnableNetworkAccess kullanılarak oluşturulan etkileşimli belirteçlere sahip bağlantısı kesilmiş geridöngü oturumlarına yalnızca oturumun oluşturulduğu bilgisayardan yeniden bağlanılabilir. CredSSP kimlik doğrulamasını kullanan bağlantısı kesilmiş oturumlar diğer bilgisayarlardan yeniden bağlanabilir. Daha fazla bilgi için bkz. Disconnect-PSSession.
Bu parametre PowerShell 3,0'da tanıtıldı.
- Tip :
SwitchParameter
- Konum:
Adlandırılmış
- Varsayılan değer:
False
- Gerekli:
False
- Boru hattı girişini kabul edin:
False
- Joker karakterleri kabul et:
False
-FilePath
Bu cmdlet'in bir veya daha fazla uzak bilgisayarda çalıştıracağı yerel komut dosyasını belirtir. Komut dosyasının yolunu ve dosya adını girin veya Invoke-Command'a bir komut dosyası yolu yönlendirin. Komut dosyasının yerel bilgisayarda veya yerel bilgisayarın erişebileceği bir dizinde bulunması gerekir. Komut dosyasındaki parametrelerin değerlerini belirtmek için ArgumentList'i kullanın.
Bu parametreyi kullandığınızda PowerShell, belirtilen betik dosyasının içeriğini bir betik bloğuna dönüştürür, betik bloğunu uzak bilgisayara iletir ve uzak bilgisayarda çalıştırır.
- Tip :
String
- Takma adlar:
PSPath
- Konum:
1
- Varsayılan değer:
None
- Gerekli:
True
- Boru hattı girişini kabul edin:
False
- Joker karakterleri kabul et:
False
-HideComputerName
Bu cmdlet'in her nesnenin bilgisayar adını çıktı ekranından çıkardığını belirtir. Varsayılan olarak nesneyi oluşturan bilgisayarın adı ekranda görünür.
Bu parametre yalnızca çıkış görüntüsünü etkiler. Nesneyi değiştirmez.
- Tip :
SwitchParameter
- Takma adlar:
HCN
- Konum:
Adlandırılmış
- Varsayılan değer:
False
- Gerekli:
False
- Boru hattı girişini kabul edin:
False
- Joker karakterleri kabul et:
False
-HostName
Secure Shell (SSH) tabanlı bir bağlantı için bir dizi bilgisayar adı belirtir. Bu, uzak bilgisayarla bağlantının Windows WinRM yerine SSH kullanılarak yapılması dışında BilgisayarAdı parametresine benzer.
Bu parametre PowerShell 6,0'da tanıtıldı.
- Tip :
String[]
- Konum:
Adlandırılmış
- Varsayılan değer:
None
- Gerekli:
True
- Boru hattı girişini kabul edin:
False
- Joker karakterleri kabul et:
False
-InDisconnectedSession
Bu cmdlet'in bağlantısı kesilmiş bir oturumda bir komut veya komut dosyası çalıştırdığını belirtir.
InDisconnectedSession parametresini kullandığınızda, Invoke-Command her uzak bilgisayarda kalıcı bir oturum oluşturur ve ScriptBlock veya tarafından belirtilen komutu başlatır. >FilePath parametresini kullanır ve ardından oturumla olan bağlantıyı keser. Bağlantısı kesilen oturumlarda komutlar çalışmaya devam eder. InDisconnectedSession, uzak oturumlarla bağlantınızı sürdürmeden komutları çalıştırmanıza olanak tanır. Ayrıca herhangi bir sonuç döndürülmeden oturumun bağlantısı kesildiği için InDisconnectedSession, tüm komut sonuçlarının oturumlar arasında bölünmek yerine yeniden bağlanan oturuma döndürülmesini sağlar.
InDisconnectedSession'ı Session parametresi veya AsJob parametresiyle birlikte kullanamazsınız.
InDisconnectedSession'ı kullanan komutlar, bağlantısı kesilen oturumu temsil eden bir PSSession nesnesi döndürür. Komut çıktısını döndürmezler. Bağlantısı kesilen oturuma bağlanmak için Connect-PSSession veya Receive-PSSession cmdlet'lerini kullanın. Oturumda çalıştırılan komutların sonuçlarını almak için Receive-PSSession cmdlet'ini kullanın. Bağlantısı kesilmiş bir oturumda çıktı üreten komutları çalıştırmak için OutputBufferingMode oturum seçeneğinin değerini Bırak olarak ayarlayın. Bağlantısı kesilen oturuma bağlanmayı düşünüyorsanız, oturumu silmeden önce bağlanmanız için yeterli süreyi sağlayacak şekilde oturumdaki boşta kalma zaman aşımını ayarlayın.
Çıkış arabelleğe alma modunu ve boşta kalma zaman aşımını SessionOption parametresinde veya $PSSessionOption tercih değişkeninde ayarlayabilirsiniz. Oturum seçenekleri hakkında daha fazla bilgi için New-PSSessionOption ve about_Preference_Variables'a bakın.
Bağlantısı Kesilen Oturumlar özelliği hakkında daha fazla bilgi için bkz. about_Remote_Disconnected_Sessions.
Bu parametre PowerShell 3,0'da tanıtıldı.
- Tip :
SwitchParameter
- Takma adlar:
Disconnected
- Konum:
Adlandırılmış
- Varsayılan değer:
False
- Gerekli:
False
- Boru hattı girişini kabul edin:
False
- Joker karakterleri kabul et:
False
-InputObject
Komuta girişi belirtir. Nesneleri içeren bir değişken girin veya nesneleri alan bir komut veya ifade yazın.
InputObject parametresini kullanırken, giriş nesnelerini temsil etmek için ScriptBlock parametresinin değerindeki $Input otomatik değişkenini kullanın.
- Tip :
PSObject
- Konum:
Adlandırılmış
- Varsayılan değer:
None
- Gerekli:
False
- Boru hattı girişini kabul edin:
True
- Joker karakterleri kabul et:
False
-JobName
Arka plan işi için kolay bir ad belirtir. Varsayılan olarak işler İş<n> bir sıra numarasıdır.
Bir komutta JobName parametresini kullanırsanız, komut bir iş olarak çalıştırılır ve siz Invoke-Command bir iş nesnesi döndürür. >AsJob'u seçin.
PowerShell arka plan işleri hakkında daha fazla bilgi için bkz. about_Jobs.
- Tip :
String
- Konum:
Adlandırılmış
- Varsayılan değer:
İş
- Gerekli:
False
- Boru hattı girişini kabul edin:
False
- Joker karakterleri kabul et:
False
-KeyFilePath
Uzak bilgisayardaki bir kullanıcının kimliğini doğrulamak için Secure Shell (SSH) tarafından kullanılan anahtar dosya yolunu belirtir.
SSH, temel şifre kimlik doğrulamasına alternatif olarak kullanıcı kimlik doğrulamasının özel ve genel anahtarlar aracılığıyla gerçekleştirilmesine olanak tanır. Uzak bilgisayar anahtar kimlik doğrulaması için yapılandırılmışsa bu parametre, kullanıcıyı tanımlayan anahtarı sağlamak için kullanılabilir.
Bu parametre PowerShell 6,0'da tanıtıldı.
- Tip :
String
- Takma adlar:
IdentityFilePath
- Konum:
Adlandırılmış
- Varsayılan değer:
None
- Gerekli:
False
- Boru hattı girişini kabul edin:
False
- Joker karakterleri kabul et:
False
-NoNewScope
Bu cmdlet'in belirtilen komutu geçerli kapsamda çalıştırdığını gösterir. Varsayılan olarak Invoke-Command, komutları kendi kapsamlarında çalıştırır.
Bu parametre yalnızca geçerli oturumda çalıştırılan komutlarda, yani hem BilgisayarAdı hem de Oturum parametrelerini atlayan komutlarda geçerlidir.
Bu parametre PowerShell 3,0'da tanıtıldı.
- Tip :
SwitchParameter
- Konum:
Adlandırılmış
- Varsayılan değer:
False
- Gerekli:
False
- Boru hattı girişini kabul edin:
False
- Joker karakterleri kabul et:
False
-Options
Uzak SSH tabanlı bir oturuma bağlanırken kullanılan SSH seçeneklerinin karma tablosunu belirtir. Olası seçenekler, ssh komutunun Unix tabanlı sürümü tarafından desteklenen herhangi bir değerdir.
Parametreler tarafından açıkça iletilen tüm değerler, Seçenekler karma tablosunda iletilen değerlere göre önceliklidir. Örneğin, Bağlantı Noktası parametresinin kullanılması, Seçenekler karma tablosunda iletilen tüm Bağlantı Noktası anahtar/değer çiftini geçersiz kılar.
Bu parametre PowerShell 7.3'e eklenmiştir.
- Tip :
Karma tablo
- Konum:
Adlandırılmış
- Varsayılan değer:
None
- Gerekli:
False
- Boru hattı girişini kabul edin:
False
- Joker karakterleri kabul et:
False
-Port
Bu komut için kullanılan uzak bilgisayardaki ağ bağlantı noktasını belirtir. Uzak bir bilgisayara bağlanmak için uzak bilgisayarın, bağlantının kullandığı bağlantı noktasını dinlemesi gerekir. Varsayılan bağlantı noktaları 5985 (HTTP için WinRM bağlantı noktası) ve 5986'dır (HTTPS için WinRM bağlantı noktası).
Alternatif bir bağlantı noktası kullanmadan önce, uzak bilgisayardaki WinRM dinleyicisini bu bağlantı noktasını dinleyecek şekilde yapılandırın. Dinleyiciyi yapılandırmak için PowerShell istemine aşağıdaki iki komutu yazın:
Remove-Item -Path WSMan:\Localhost\listener\listener* -RecurseNew-Item -Path WSMan:\Localhost\listener -Transport http -Address * -Port \<port-number\>Zorunlu olmadıkça Bağlantı Noktası parametresini kullanmayın. Komutta ayarlanan bağlantı noktası, komutun çalıştığı tüm bilgisayarlar veya oturumlar için geçerlidir. Alternatif bağlantı noktası ayarı, komutun tüm bilgisayarlarda çalışmasını engelleyebilir.
- Tip :
Int32
- Konum:
Adlandırılmış
- Varsayılan değer:
None
- Gerekli:
False
- Boru hattı girişini kabul edin:
False
- Joker karakterleri kabul et:
False
-RemoteDebug
Çağrılan komutu uzak PowerShell oturumunda hata ayıklama modunda çalıştırmak için kullanılır.
- Tip :
SwitchParameter
- Konum:
Adlandırılmış
- Varsayılan değer:
False
- Gerekli:
False
- Boru hattı girişini kabul edin:
False
- Joker karakterleri kabul et:
False
-RunAsAdministrator
Bu cmdlet'in Yönetici olarak bir komutu çağırdığını belirtir.
- Tip :
SwitchParameter
- Konum:
Adlandırılmış
- Varsayılan değer:
False
- Gerekli:
False
- Boru hattı girişini kabul edin:
False
- Joker karakterleri kabul et:
False
-ScriptBlock
Çalıştırılacak komutları belirtir. Bir komut dosyası bloğu oluşturmak için komutları parantez ({ ) içine alın. Bir komutu uzaktan çalıştırmak için Invoke-Command kullanıldığında, komuttaki tüm değişkenler uzak bilgisayarda değerlendirilir.
Not
Komut dosyası bloğuna ilişkin parametreler yalnızca ArgumentList'ten konuma göre aktarılabilir. Anahtar parametreleri konuma göre aktarılamaz. SwitchParameter türü gibi davranan bir parametreye ihtiyacınız varsa bunun yerine Boolean türünü kullanın.
- Tip :
ScriptBlock
- Takma adlar:
Command
- Konum:
0
- Varsayılan değer:
None
- Gerekli:
True
- Boru hattı girişini kabul edin:
False
- Joker karakterleri kabul et:
False
-Session
Bu cmdlet'in komutu çalıştırdığı oturum dizisini belirtir. PSSession nesnelerini içeren bir değişken veya PSSession nesnelerini oluşturan veya alan bir komut girin (örneğin, New-PSSession veya Get) -PSSession komutu.
PSSession oluşturduğunuzda PowerShell uzak bilgisayarla kalıcı bir bağlantı kurar. Verileri paylaşan bir dizi ilgili komutu çalıştırmak için bir PSSession kullanın. Tek bir komutu veya bir dizi ilgisiz komutu çalıştırmak için BilgisayarAdı parametresini kullanın. Daha fazla bilgi için bkz. about_PSSessions.
- Tip :
PSOturumu[]
- Konum:
0
- Varsayılan değer:
None
- Gerekli:
False
- Boru hattı girişini kabul edin:
False
- Joker karakterleri kabul et:
False
-SessionName
Bağlantısı kesilmiş bir oturum için kolay bir ad belirtir. Get-PSSession komutu gibi sonraki komutlarda oturuma atıfta bulunmak için bu adı kullanabilirsiniz. Bu parametre yalnızca InDisconnectedSession parametresiyle geçerlidir.
Bu parametre PowerShell 3,0'da tanıtıldı.
- Tip :
String[]
- Konum:
Adlandırılmış
- Varsayılan değer:
None
- Gerekli:
False
- Boru hattı girişini kabul edin:
False
- Joker karakterleri kabul et:
False
-SessionOption
Oturum için gelişmiş seçenekleri belirtir. New-PSSessionOption cmdlet'ini kullanarak oluşturduğunuz gibi bir SessionOption nesnesi veya anahtarların oturum seçeneği adları ve değerlerin oturum seçeneği olduğu bir karma tablo girin değerler.
Not
SessionOption için bir karma tablosu belirtirseniz PowerShell, karma tablosunu bir System.Management.Autiomation.Remoting.PSSessionOption nesnesine dönüştürür. Hash tablosunda belirtilen anahtarların değerleri, nesnenin eşleşen özelliğine aktarılır. Bu, New-PSSessionOption'un çağrılmasından farklı davranır. Örneğin, IdleTimeout gibi zaman aşımı özelliklerine ilişkin System.TimeSpan değerleri, bir tamsayı değerini milisaniye yerine işaretlere dönüştürür. PSSessionOption nesnesi ve özellikleri hakkında daha fazla bilgi için bkz. PSSessionOption
Seçeneklerin varsayılan değerleri, eğer ayarlanmışsa, $PSSessionOption tercih değişkeninin değerine göre belirlenir. Aksi halde, varsayılan değerler oturum yapılandırmasında ayarlanan seçenekler tarafından belirlenir.
Oturum seçeneği değerleri, $PSSessionOption tercih değişkeninde ve oturum yapılandırmasında ayarlanan oturumlar için varsayılan değerlerden önceliklidir. Ancak oturum yapılandırmasında belirlenen maksimum değerler, kotalar veya sınırlar üzerinde öncelik taşımazlar.
Varsayılan değerleri içeren oturum seçeneklerinin açıklaması için bkz. New-PSSessionOption. $PSSessionOption tercih değişkeni hakkında bilgi için bkz. about_Preference_Variables. Oturum yapılandırmaları hakkında daha fazla bilgi için bkz. about_Session_Configurations.
- Tip :
PSSessionOption
- Konum:
Adlandırılmış
- Varsayılan değer:
None
- Gerekli:
False
- Boru hattı girişini kabul edin:
False
- Joker karakterleri kabul et:
False
-SSHConnection
Bu parametre, her karma tablosunun bir Güvenli Kabuk (SSH) bağlantısı kurmak için gereken bir veya daha fazla bağlantı parametresini içerdiği bir dizi karma tablosunu alır. SSHConnection parametresi, her oturumun farklı bağlantı bilgileri gerektirdiği birden çok oturum oluşturmak için kullanışlıdır.
Karma tablonun aşağıdaki üyeleri vardır:
- BilgisayarAdı (veya Ana BilgisayarAdı)
- Bağlantı noktası
- KullanıcıAdı
- KeyFilePath (veya IdentityFilePath)
BilgisayarAdı (veya Ana BilgisayarAdı) gerekli olan tek anahtar/değer çiftidir.
Bu parametre PowerShell 6,0'da tanıtıldı.
- Tip :
Hashtable[]
- Konum:
Adlandırılmış
- Varsayılan değer:
None
- Gerekli:
True
- Boru hattı girişini kabul edin:
False
- Joker karakterleri kabul et:
False
-SSHTransport
Uzak bağlantının Secure Shell (SSH) kullanılarak kurulduğunu belirtir.
Varsayılan olarak PowerShell, uzak bir bilgisayara bağlanmak için Windows WinRM'yi kullanır. Bu anahtar, PowerShell'i SSH tabanlı uzak bağlantı kurmak için HostName parametresini kullanmaya zorlar.
Bu parametre PowerShell 6,0'da tanıtıldı.
- Tip :
SwitchParameter
- Kabul edilen değerler:
doğru
- Konum:
Adlandırılmış
- Varsayılan değer:
False
- Gerekli:
False
- Boru hattı girişini kabul edin:
False
- Joker karakterleri kabul et:
False
-Subsystem
Yeni PSSession için kullanılan SSH alt sistemini belirtir.
Bu, sshd_config'de tanımlandığı gibi hedefte kullanılacak alt sistemi belirtir. Alt sistem, önceden tanımlanmış parametrelerle belirli bir PowerShell sürümünü başlatır. Belirtilen alt sistem uzak bilgisayarda mevcut değilse komut başarısız olur.
Bu parametre kullanılmazsa varsayılan powershell alt sistemidir.
- Tip :
String
- Konum:
Adlandırılmış
- Varsayılan değer:
güç kabuğu
- Gerekli:
False
- Boru hattı girişini kabul edin:
False
- Joker karakterleri kabul et:
False
-ThrottleLimit
Bu komutu çalıştırmak için kurulabilecek maksimum eşzamanlı bağlantı sayısını belirtir. Bu parametreyi atlarsanız veya 0 değerini girerseniz varsayılan değer olan 32 kullanılır.
Kısma sınırı yalnızca geçerli komut için geçerlidir; oturum veya bilgisayar için geçerli değildir.
- Tip :
Int32
- Konum:
Adlandırılmış
- Varsayılan değer:
32
- Gerekli:
False
- Boru hattı girişini kabul edin:
False
- Joker karakterleri kabul et:
False
-UserName
Uzak bilgisayarda bir komutu çalıştırmak için kullanılan hesabın kullanıcı adını belirtir. Kullanıcı kimlik doğrulama yöntemi, uzak bilgisayarda Secure Shell'in (SSH) nasıl yapılandırıldığına bağlıdır.
SSH, temel parola kimlik doğrulaması için yapılandırıldıysa sizden kullanıcı parolası istenir.
SSH, anahtar tabanlı kullanıcı kimlik doğrulaması için yapılandırılmışsa KeyFilePath parametresi aracılığıyla bir anahtar dosya yolu sağlanabilir ve herhangi bir şifre istemi gerçekleşmez. İstemci kullanıcısı anahtar dosyası SSH tarafından bilinen bir konumda bulunuyorsa anahtar tabanlı kimlik doğrulama için KeyFilePath parametresine gerek yoktur ve kullanıcı kimlik doğrulaması, kullanıcı adına göre otomatik olarak gerçekleşir. Daha fazla bilgi için platformunuzun anahtar tabanlı kullanıcı kimlik doğrulamasıyla ilgili SSH belgelerine bakın.
Bu gerekli bir parametre değil. KullanıcıAdı parametresi belirtilmezse bağlantı için oturum açmış olan mevcut kullanıcı adı kullanılır.
Bu parametre PowerShell 6,0'da tanıtıldı.
- Tip :
String
- Konum:
Adlandırılmış
- Varsayılan değer:
None
- Gerekli:
False
- Boru hattı girişini kabul edin:
False
- Joker karakterleri kabul et:
False
-UseSSL
Bu cmdlet'in uzak bilgisayarla bağlantı kurmak için Güvenli Yuva Katmanı (SSL) protokolünü kullandığını belirtir. Varsayılan olarak SSL kullanılmaz.
WS-Management, ağ üzerinden iletilen tüm PowerShell içeriğini şifreler. UseSSL parametresi, verileri HTTP yerine HTTPS üzerinden gönderen ek bir korumadır.
Bu parametreyi kullanırsanız ancak komut için kullanılan bağlantı noktasında SSL yoksa komut başarısız olur.
- Tip :
SwitchParameter
- Konum:
Adlandırılmış
- Varsayılan değer:
False
- Gerekli:
False
- Boru hattı girişini kabul edin:
False
- Joker karakterleri kabul et:
False
-VMId
Sanal makinelerin kimlik dizisini belirtir.
- Tip :
Rehber[]
- Takma adlar:
VMGuid
- Konum:
0
- Varsayılan değer:
None
- Gerekli:
True
- Boru hattı girişini kabul edin:
True
- Joker karakterleri kabul et:
False
-VMName
Sanal makinelerin adlarının bir dizisini belirtir.
- Tip :
String[]
- Konum:
Adlandırılmış
- Varsayılan değer:
None
- Gerekli:
True
- Boru hattı girişini kabul edin:
True
- Joker karakterleri kabul et:
False
Girişler
ScriptBlock
Bir komut dosyası bloğundaki bir komutu Invoke-Command'a yönlendirebilirsiniz. Komuttaki giriş nesnelerini temsil etmek için $Input otomatik değişkenini kullanın.
Çıkışlar
System.Management.Automation.PSRemotingJob
AsJob parametresini kullanırsanız bu cmdlet bir iş nesnesi döndürür.
PSSession
InDisconnectedSession parametresini kullanırsanız bu cmdlet bir PSSession nesnesi döndürür.
Nesne
Varsayılan olarak bu cmdlet, ScriptBlock parametresinin değeri olan çağrılan komutun çıktısını döndürür.
Notlar
PowerShell, Invoke-Command için aşağıdaki takma adları içerir:
Tüm platformlar:
icm
Windows Vista'da ve Windows işletim sisteminin sonraki sürümlerinde, yerel bilgisayarda bir komut çalıştırmak amacıyla Invoke-Command'ın BilgisayarAdı parametresini kullanmak için PowerShell'i şunu kullanarak çalıştırmalısınız: Yönetici olarak çalıştır seçeneğini seçin.
Birden çok bilgisayarda komut çalıştırdığınızda PowerShell, bilgisayarlara listede göründükleri sırayla bağlanır. Ancak komut çıktısı uzak bilgisayarlardan alınma sırasına göre görüntülenir; bu sıra farklı olabilir.
Invoke-Command'ın çalıştırdığı komuttan kaynaklanan hatalar, komut sonuçlarına dahil edilir. Yerel bir komuttaki hataları sonlandıran hatalar, uzak komutta sonlandırılmayan hatalar olarak değerlendirilir. Bu strateji, bir bilgisayardaki hataların sonlandırılmasının, komutun çalıştırıldığı tüm bilgisayarlarda kapanmamasını sağlar. Bu uygulama, tek bir bilgisayarda uzaktan komut çalıştırıldığında bile kullanılır.
Uzak bilgisayar, yerel bilgisayarın güvendiği bir etki alanında değilse bilgisayar, kullanıcının kimlik bilgilerini doğrulayamayabilir. Uzak bilgisayarı WS Yönetimindeki güvenilen ana bilgisayarlar listesine eklemek için WSMAN sağlayıcısında aşağıdaki komutu kullanın; burada <Uzak-Bilgisayar-Adı> addır uzaktaki bilgisayarın:
Set-Item -Path WSMan:\Localhost\Client\TrustedHosts -Value \<Remote-Computer-Name\>InDisconnectedSession parametresini kullanarak bir PSSession'un bağlantısını kestiğinizde, oturum durumu Bağlantı Kesildi ve kullanılabilirlik Yok olur. Durum özelliğinin değeri geçerli oturuma göredir. Bağlantı Kesildi değeri, PSSession'un geçerli oturuma bağlı olmadığı anlamına gelir. Ancak bu, PSSession'un tüm oturumlarla bağlantısının kesildiği anlamına gelmez. Farklı bir oturuma bağlı olabilir. Oturuma bağlanıp bağlanamayacağınızı veya yeniden bağlanıp bağlanamayacağınızı belirlemek için Kullanılabilirlik özelliğini kullanın.
Kullanılabilirlik değeri olan Yok, oturuma bağlanabileceğinizi gösterir. Meşgul değeri, başka bir oturuma bağlı olduğundan PSSession'a bağlanamadığınızı gösterir. Oturumların State özelliğinin değerleri hakkında daha fazla bilgi için bkz. RunspaceState. Oturumların Availability özelliğinin değerleri hakkında daha fazla bilgi için bkz. RunspaceAvailability.
HostName ve SSHConnection parametreleri PowerShell 6.0'dan itibaren dahil edilmiştir. Secure Shell'e (SSH) dayalı PowerShell uzaktan iletişimi sağlamak için eklendiler. PowerShell ve SSH birden fazla platformda (Windows, Linux, macOS) desteklenir ve PowerShell uzaktan iletişimi, PowerShell ve SSH'nin kurulup yapılandırıldığı bu platformlar üzerinde çalışır. Bu, WinRM'yi temel alan önceki Windows'a özel uzaktan iletişimden farklıdır ve WinRM'ye özgü birçok özellik ve sınırlama geçerli değildir. Örneğin WinRM tabanlı kotalar, oturum seçenekleri, özel uç nokta yapılandırması ve bağlantıyı kesme/yeniden bağlanma özellikleri şu anda desteklenmemektedir. PowerShell SSH uzaktan iletişiminin nasıl kurulacağı hakkında daha fazla bilgi için bkz. SSH Üzerinden PowerShell Uzaktan İletişim.
ssh yürütülebilir dosyası, yapılandırma verilerini aşağıdaki kaynaklardan aşağıdaki sırayla alır:
- komut satırı seçenekleri
- kullanıcının yapılandırma dosyası (~/.ssh/config)
- sistem çapında yapılandırma dosyası (/etc/ssh/ssh_config)
Aşağıdaki cmdlet parametreleri ssh parametrelerine ve seçeneklerine eşlenir:
| Cmdlet parameter | ssh parameter | equivalent ssh -o option |
|---|---|---|
-KeyFilePath |
-i <KeyFilePath> |
-o IdentityFile=<KeyFilePath> |
-UserName |
-l <UserName> |
-o User=<UserName> |
-Port |
-p <Port> |
-o Port=<Port> |
-ComputerName -Subsystem |
-s <ComputerName> <Subsystem> |
-o Host=<ComputerName> |
Parametreler tarafından açıkça iletilen tüm değerler, Seçenekler karma tablosunda iletilen değerlere göre önceliklidir. ssh_config dosyaları hakkında daha fazla bilgi için bkz. ssh_config(5).