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 Server01

FilePath 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 @parameters

BilgisayarAdı 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-Job

New-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.pdf

Invoke-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.txt

Invoke-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 @parameters

Komutu 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 @parameters

New-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 @parameters

New-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 @parameters

Enable-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 @parameters

Komut, 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 $options

Parametreler

-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/WSMAN

Bir 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 İş olarak adlandırılır; burada <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* -Recurse
New-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:

  1. komut satırı seçenekleri
  2. kullanıcının yapılandırma dosyası (~/.ssh/config)
  3. 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).

İlgili makaleler