Invoke-Command
Komutları yerel ve uzak bilgisayarlarda çalıştırır.
Sözdizimi
Invoke-Command
[-ScriptBlock] <ScriptBlock>
[-NoNewScope]
[-InputObject <PSObject>]
[-ArgumentList <Object[]>]
[<CommonParameters>]
Invoke-Command
[[-Session] <PSSession[]>]
[-ThrottleLimit <Int32>]
[-AsJob]
[-HideComputerName]
[-JobName <String>]
[-ScriptBlock] <ScriptBlock>
[-InputObject <PSObject>]
[-ArgumentList <Object[]>]
[<CommonParameters>]
Invoke-Command
[[-Session] <PSSession[]>]
[-ThrottleLimit <Int32>]
[-AsJob]
[-HideComputerName]
[-JobName <String>]
[-FilePath] <String>
[-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]
[-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]
[-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]
[-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]
[-InputObject <PSObject>]
[-ArgumentList <Object[]>]
[<CommonParameters>]
Invoke-Command
-Credential <PSCredential>
[-ConfigurationName <String>]
[-ThrottleLimit <Int32>]
[-AsJob]
[-HideComputerName]
[-ScriptBlock] <ScriptBlock>
[-InputObject <PSObject>]
[-ArgumentList <Object[]>]
[-VMId] <Guid[]>
[<CommonParameters>]
Invoke-Command
-Credential <PSCredential>
[-ConfigurationName <String>]
[-ThrottleLimit <Int32>]
[-AsJob]
[-HideComputerName]
[-ScriptBlock] <ScriptBlock>
[-InputObject <PSObject>]
[-ArgumentList <Object[]>]
-VMName <String[]>
[<CommonParameters>]
Invoke-Command
-Credential <PSCredential>
[-ConfigurationName <String>]
[-ThrottleLimit <Int32>]
[-AsJob]
[-HideComputerName]
[-FilePath] <String>
[-InputObject <PSObject>]
[-ArgumentList <Object[]>]
[-VMId] <Guid[]>
[<CommonParameters>]
Invoke-Command
-Credential <PSCredential>
[-ConfigurationName <String>]
[-ThrottleLimit <Int32>]
[-AsJob]
[-HideComputerName]
[-FilePath] <String>
[-InputObject <PSObject>]
[-ArgumentList <Object[]>]
-VMName <String[]>
[<CommonParameters>]
Invoke-Command
[-ConfigurationName <String>]
[-ThrottleLimit <Int32>]
[-AsJob]
[-HideComputerName]
[-JobName <String>]
[-ScriptBlock] <ScriptBlock>
[-RunAsAdministrator]
[-InputObject <PSObject>]
[-ArgumentList <Object[]>]
-ContainerId <String[]>
[<CommonParameters>]
Invoke-Command
[-ConfigurationName <String>]
[-ThrottleLimit <Int32>]
[-AsJob]
[-HideComputerName]
[-JobName <String>]
[-FilePath] <String>
[-RunAsAdministrator]
[-InputObject <PSObject>]
[-ArgumentList <Object[]>]
-ContainerId <String[]>
[<CommonParameters>]
Description
Invoke-Command
Cmdlet, komutları yerel veya uzak bir bilgisayarda çalıştırır ve hatalar da dahil olmak üzere komutlardan gelen tüm çıktıları döndürür. Tek Invoke-Command
bir komut kullanarak komutları birden çok bilgisayarda çalıştırabilirsiniz.
Uzak bilgisayarda tek bir komut çalıştırmak için ComputerName parametresini kullanın. Veri paylaşan bir dizi ilgili komut çalıştırmak için cmdlet'ini New-PSSession
kullanarak uzak bilgisayarda bir PSSession (kalıcı bağlantı) oluşturun ve ardından komutunu PSSession'da çalıştırmak için Session parametresini Invoke-Command
kullanın. Bağlantısı kesilmiş bir oturumda komut çalıştırmak için InDisconnectedSession parametresini kullanın. Bir arka plan işinde komut çalıştırmak için AsJob parametresini kullanın.
Komut dosyası bloğunu komut olarak çalıştırmak için yerel bilgisayarda da kullanabilirsiniz Invoke-Command
. PowerShell, betik bloğunu geçerli kapsamın alt kapsamında hemen çalıştırır.
Uzak bilgisayarda komut çalıştırmak için kullanmadan Invoke-Command
önce about_Remote okuyun.
Bazı kod örnekleri, satır uzunluğunu azaltmak için sıçramayı kullanır. Daha fazla bilgi için bkz . about_Splatting.
Örnekler
Örnek 1: Sunucuda betik çalıştırma
Bu örnek, betiği Server01 bilgisayarında çalıştırır Test.ps1
.
Invoke-Command -FilePath c:\scripts\test.ps1 -ComputerName Server01
FilePath parametresi, yerel bilgisayarda bulunan bir betiği belirtir. Betik uzak bilgisayarda çalışır ve sonuçlar yerel bilgisayara döndürülür.
Örnek 2: Uzak sunucuda komut çalıştırma
Bu örnek, Server01 uzak bilgisayarında bir Get-Culture
komut çalıştırır.
Invoke-Command -ComputerName Server01 -Credential Domain01\User01 -ScriptBlock {
Get-Culture
}
ComputerName parametresi uzak bilgisayarın adını belirtir. Credential parametresi komutu, komut çalıştırma iznine sahip bir kullanıcı olan Domain01\User01 güvenlik bağlamında ç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 bir kimlik doğrulama yöntemini istemektedir. Ardından Server01 bilgisayarında komutunu çalıştırır ve sonucu döndürür.
Örnek 3: Kalıcı bir bağlantıda komut çalıştırma
Bu örnek, sunucu02 adlı uzak bilgisayarda kalıcı bir bağlantı kullanarak bir oturumda aynı Get-Culture
komutu çalıştırır.
$s = New-PSSession -ComputerName Server02 -Credential Domain01\User01
Invoke-Command -Session $s -ScriptBlock { Get-Culture }
Cmdlet, New-PSSession
Server02 uzak bilgisayarında bir oturum oluşturur ve bunu değişkene $s
kaydeder. Genellikle, yalnızca uzak bilgisayarda bir dizi komut çalıştırdığınızda oturum oluşturursunuz.
cmdlet'i Invoke-Command
Server02'de komutunu çalıştırır Get-Culture
. Session parametresi değişkene $s
kaydedilen oturumu belirtir.
Yanıt olarak PowerShell, Server02 bilgisayarındaki oturumda komutunu çalıştırır.
Örnek 4: Veri paylaşan bir dizi komut çalıştırmak için oturum kullanma
Bu örnek, computername ve session parametrelerini kullanmanın etkilerini karşılaştırırInvoke-Command
. Aynı verileri paylaşan bir dizi komutu çalıştırmak için 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ında komut çalıştırmak için computername parametresini Invoke-Command
kullanır. İlk komut, uzak bilgisayarda PowerShell işlemini almak ve değişkene kaydetmek için cmdlet'ini $p
kullanırGet-Process
. İkinci komut, PowerShell işleminin VirtualMemorySize özelliğinin değerini alır.
ComputerName parametresini kullandığınızda PowerShell komutu çalıştırmak için yeni bir oturum oluşturur.
Komut tamamlandığında oturum kapatılır. Değişken $p
tek bir bağlantıda oluşturuldu, ancak ikinci komut için oluşturulan bağlantıda yok.
Sorun, uzak bilgisayarda kalıcı bir oturum oluşturup aynı oturumda iki komutu da çalıştırarak çözülür.
Cmdlet, New-PSSession
Server02 bilgisayarında kalıcı bir oturum oluşturur ve oturumu değişkene $s
kaydeder. İzleyen Invoke-Command
satırlar, aynı oturumda her iki komutu da çalıştırmak için Session parametresini kullanır. Her iki komut da aynı oturumda çalıştırıldığından $p
, değer etkin kalır.
Örnek 5: Bir değişkende depolanan bir betik bloğuyla komut çağırma
Bu örnek, bir değişkende betik bloğu olarak depolanan bir komutun nasıl çalıştırıldığını gösterir. Betik bloğu bir değişkene kaydedildiğinde, değişkeni ScriptBlock parametresinin değeri olarak belirtebilirsiniz.
$command = {
Get-EventLog -LogName 'Windows PowerShell' |
Where-Object { $_.Message -like '*certificate*' }
}
Invoke-Command -ComputerName S1, S2 -ScriptBlock $command
değişkeni, $command
betik bloğu olarak biçimlendirilmiş komutu depolar Get-EventLog
. , Invoke-Command
S1 ve S2 uzak bilgisayarlarda depolanan $command
komutu çalıştırır.
Örnek 6: Birkaç bilgisayarda tek bir komut çalıştırma
Bu örnekte, birden çok bilgisayarda tek bir komutu çalıştırmak için nasıl kullanılacağı Invoke-Command
gösterilmektedir.
$parameters = @{
ComputerName = 'Server01', 'Server02', 'TST-0143', 'localhost'
ConfigurationName = 'MySession.PowerShell'
ScriptBlock = { Get-EventLog 'Windows PowerShell' }
}
Invoke-Command @parameters
ComputerName 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ı belirtir. ScriptBlock parametresi, her bilgisayardan Windows PowerShell olay günlüklerini almak için çalışırGet-EventLog
.
Örnek 7: Birden çok bilgisayarda konak programının sürümünü alma
Bu örnek, 200 uzak bilgisayarda çalışan PowerShell konak programının sürümünü alır.
$version = Invoke-Command -ComputerName (Get-Content Machines.txt) -ScriptBlock {
(Get-Host).Version
}
Yalnızca 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 ComputerName parametresini kullanır. Bilgisayarları belirtmek için cmdlet'ini Get-Content
kullanarak Machine.txt dosyasının (bilgisayar adları dosyası) içeriğini alır.
Cmdlet uzak Invoke-Command
bilgisayarlarda bir Get-Host
komut çalıştırır. PowerShell ana bilgisayarının Version özelliğini almak için noktalı gösterimi kullanır.
Bu komutlar birer birer çalışır. Komutlar tamamlandığında, tüm bilgisayarlardaki komutların çıkışı değişkene $version
kaydedilir. Çıktı, verilerin kaynaklandığı bilgisayarın adını içerir.
Örnek 8: Birkaç uzak bilgisayarda arka plan işi çalıştırma
Bu örnek, iki uzak bilgisayarda bir komut çalıştırır. Komutun Invoke-Command
arka plan işi olarak çalışması için AsJob parametresini kullanır. Komutlar uzak bilgisayarlarda çalışır, ancak iş yerel bilgisayarda bulunur. 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
cmdlet'i New-PSSession
Server01 ve Server02 uzak bilgisayarlarında oturumlar oluşturur. Invoke-Command
Cmdlet, oturumların her birinde bir arka plan işi çalıştırır. komutu , asjob parametresini kullanarak komutu arka plan işi olarak çalıştırır. Bu komut, iki uzak bilgisayarda çalıştırılacak 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 değişkene $j
kaydeder. Daha $j
sonra değişken, iş nesnesinin Format-List
tüm özelliklerini bir listede görüntülemek için cmdlet'ine kanalize edilir. Son komut işlerin sonuçlarını alır. içindeki iş nesnesini cmdlet'ine $j
Receive-Job
aktarır ve sonuçları değişkende $results
depolar.
Örnek 9: Uzak bilgisayardaki bir komut çalıştırmasında yerel değişkenleri ekleme
Bu örnekte, uzak bilgisayarda çalıştırılacak bir komutta yerel değişkenlerin değerlerinin nasıl dahil olduğu gösterilmektedir. komutu, uzak komuttaki Using
bir yerel değişkeni tanımlamak için kapsam değiştiricisini kullanır. Varsayılan olarak, tüm değişkenlerin uzak oturumda tanımlandığı varsayılır. Kapsam Using
değiştirici PowerShell 3.0'da kullanıma sunulmuştur. Kapsam değiştirici hakkında Using
daha fazla bilgi için bkz . about_Remote_Variables ve about_Scopes.
$Log = 'Windows PowerShell'
Invoke-Command -ComputerName Server01 -ScriptBlock {
Get-EventLog -LogName $Using:Log -Newest 10
}
$Log
değişkeni, olay günlüğünün adı olan Windows PowerShell'i depolar. Cmdlet, Invoke-Command
olay günlüğünden en yeni on olayı almak için Server01 üzerinde çalışır Get-EventLog
. LogName parametresinin $Log
değeri, uzak oturumda değil yerel oturumda oluşturulduğunu belirtmek için kapsam değiştirici tarafından Using
önekli değişkendir.
Örnek 10: Bilgisayar adını gizleme
Bu örnekte, parametresinin HideComputerName parametresini Invoke-Command
kullanmanın etkisi gösterilir.
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
komut çalıştırmak için kullanırInvoke-Command
. İlk komutun çıktısı, komutun çalıştırıldığı bilgisayarın adını içeren PsComputerName özelliğini içerir. HideComputerName kullanan ikinci komutun çıktısı PsComputerName sütununu içermez.
Örnek 11: Betik bloğunda Param anahtar sözcüğünü kullanma
Param
Anahtar sözcüğü ve ArgumentList parametresi, bir betik bloğundaki adlandırılmış parametrelere değişken değerleri geçirmek için kullanılır. Bu örnekte harfle a
başlayan ve uzantıya .pdf
sahip dosya adları görüntülenir.
Anahtar sözcük hakkında Param
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
ve $param2
adlı iki değişkeni $param1
tanımlayan ScriptBlock parametresini kullanır. Get-ChildItem
değişken adlarıyla Name ve Include adlı adlandırılmış parametreleri kullanır. ArgumentList değerleri değişkenlere geçirir.
Örnek 12: Betik bloğunda $args otomatik değişkenini kullanma
Otomatik $args
değişken ve ArgumentList parametresi, dizi değerlerini bir betik bloğundaki parametre konumlarına geçirmek için kullanılır. Bu örnekte, bir sunucunun dosyaların dizin içeriği .txt
görüntülenir. Get-ChildItem
Path parametresi konum 0, Filter parametresi ise konum 1'dir.
Değişken hakkında $args
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
ve $args[1]
dizi değerlerini belirtir$args[0]
. ArgumentList, dizi değerlerini Get-ChildItem
Yol ve Filtre için parametre konumlarına geçirir$args
.
Örnek 13: Metin dosyasında listelenen tüm bilgisayarlarda betik çalıştırma
Bu örnek, betiği dosyada listelenen tüm bilgisayarlarda çalıştırmak Sample.ps1
için cmdlet'ini Servers.txt
kullanırInvoke-Command
. Komut, betik dosyasını belirtmek için FilePath parametresini kullanır. Bu komut, betik dosyasına uzak bilgisayarlar tarafından erişilemese bile betiği 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, dosyanın içeriği Sample.ps1
bir betik bloğuna kopyalanır ve betik bloğu uzak bilgisayarların her birinde çalıştırılır. Bu yordam, betiğin içeriğini göndermek için ScriptBlock parametresini kullanmaya eşdeğerdir.
Örnek 14: URI kullanarak uzak bilgisayarda komut çalıştırma
Bu örnekte, tekdüzen Kaynak Tanımlayıcısı (URI) ile tanımlanan uzak bir bilgisayarda komutun nasıl çalıştırıldığı gösterilmektedir. Bu özel örnek, uzak exchange sunucusunda bir Set-Mailbox
komut ç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, değişkende Get-Credential
Windows Live ID kimlik bilgilerini depolamak için cmdlet'ini $LiveCred
kullanır. PowerShell, kullanıcıdan Windows Live ID kimlik bilgilerini girmesini ister.
$parameters
değişkeni, cmdlet'ine geçirilecek Invoke-Command
parametreleri içeren bir karma tablodur. Cmdlet, Invoke-Command
Microsoft.Exchange oturum yapılandırmasını kullanarak bir Set-Mailbox
komut çalıştırır. ConnectionURI parametresi, Exchange sunucusu uç noktasının URL'sini belirtir. Credential parametresi, değişkende $LiveCred
depolanan kimlik bilgilerini belirtir. AuthenticationMechanism parametresi, temel kimlik doğrulamasının kullanımını belirtir. ScriptBlock parametresi, komutunu içeren bir betik bloğu belirtir.
Örnek 15: Oturum seçeneği kullanma
Bu örnekte SessionOption parametresi oluşturma ve kullanma gösterilmektedir.
$so = New-PSSessionOption -SkipCACheck -SkipCNCheck -SkipRevocationCheck
$parameters = @{
ComputerName = 'server01'
UseSSL = $true
ScriptBlock = { Get-HotFix }
SessionOption = $so
Credential = 'server01\user01'
}
Invoke-Command @parameters
Cmdlet, New-PSSessionOption
uzak ucun gelen HTTPS bağlantısını değerlendirirken Sertifika Yetkilisi, Kurallı Ad ve İptal Listeleri'ni doğrulamamalarına neden olan bir oturum seçeneği nesnesi oluşturur. SessionOption nesnesi değişkene $so
kaydedilir.
Not
Bu denetimleri devre dışı bırakmak sorun giderme için uygundur, ancak açıkça güvenli değildir.
Invoke-Command
Cmdlet uzaktan bir Get-HotFix
komut çalıştırır. SessionOption parametresine $so
değişkeni verilir.
Örnek 16: Uzak komutta URI yeniden yönlendirmesini yönetme
Bu örnekte, uzak bir komutta URI yeniden yönlendirmesini yönetmek için AllowRedirection ve SessionOption parametrelerinin nasıl kullanılacağı gösterilmektedir.
$max = New-PSSessionOption -MaximumRedirection 1
$parameters = @{
ConnectionUri = 'https://ps.exchangelabs.com/PowerShell'
ScriptBlock = { Get-Mailbox dan }
AllowRedirection = $true
SessionOption = $max
}
Invoke-Command @parameters
cmdlet değişkenine New-PSSessionOption
kaydedilmiş $max
bir PSSessionOption nesnesi oluşturur. Komut, PSSessionOption nesnesinin MaximumConnectionRedirectionCount özelliğini 1 olarak ayarlamak için MaximumRedirection parametresini kullanır.
Cmdlet uzak Invoke-Command
bir Microsoft Exchange Server'da bir Get-Mailbox
komut çalıştırır. AllowRedirection parametresi, bağlantıyı alternatif bir uç noktaya yönlendirmek için açık izin sağlar. SessionOption parametresi değişkeninde $max
depolanan oturum nesnesini kullanır.
Sonuç olarak, ConnectionURI tarafından belirtilen uzak bilgisayar yeniden yönlendirme iletisi döndürürse, PowerShell bağlantıyı yeniden yönlendirir, ancak yeni hedef başka bir yeniden yönlendirme iletisi döndürürse, 1'in yeniden yönlendirme sayısı değeri aşılır ve Invoke-Command
sonlandırılmayan bir hata döndürür.
Örnek 17: Uzak oturumda ağ paylaşımına erişme
Bu örnekte, uzak oturumdan bir ağ paylaşımına nasıl erişildi gösterilmektedir. Örneği göstermek için üç bilgisayar kullanılır. Server01 yerel bilgisayar, Server02 uzak bilgisayar ve Net03 ağ paylaşımını içerir. Server01, Server02'ye bağlanır ve ardından Sunucu02 ağ paylaşımına erişmek için Net03'e ikinci bir atlama yapar. PowerShell uzaktan iletişiminin bilgisayarlar arasında atlamaları nasıl desteklediği hakkında daha fazla bilgi için bkz . PowerShell Uzaktan İletişimi'nde ikinci atlamayı yapma.
Gerekli Kimlik Bilgisi Güvenlik Destek Sağlayıcısı (CredSSP) temsilcisi yerel bilgisayardaki istemci ayarlarında ve uzak bilgisayardaki hizmet ayarlarında etkinleştirilir. Bu örnekteki komutları çalıştırmak için yerel bilgisayarda ve uzak bilgisayarda Administrators grubunun bir ü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 = @{
Session = $s
ScriptBlock = { Get-Item \\Net03\Scripts\LogFiles.ps1 }
Authentication = 'CredSSP'
Credential = 'Domain01\Admin01'
}
Invoke-Command @parameters
cmdlet'i Enable-WSManCredSSP
, Server01 yerel bilgisayarından Server02 uzak bilgisayarına CredSSP temsilini etkinleştirir. Role parametresi, yerel bilgisayarda CredSSP istemci ayarını yapılandırmak için İstemci'yi belirtir.
New-PSSession
Server02 için bir PSSession nesnesi oluşturur ve nesnesini değişkende $s
depolar.
cmdlet'i Invoke-Command
, uzak bilgisayar Olan Server02'ye bağlanmak için değişkenini $s
kullanır. ScriptBlock parametresi uzak bilgisayarda çalışırEnable-WSManCredSSP
. Role parametresi, Uzak bilgisayarda CredSSP sunucu ayarının yapılandırılır sunucusunu belirtir.
değişkeni, $parameters
ağ paylaşımına bağlanmak için parametre değerlerini içerir. cmdlet'i Invoke-Command
içindeki $s
oturumda bir Get-Item
komut çalıştırır. Bu komut ağ paylaşımından \\Net03\Scripts
bir betik alır. Komut, CredSSP değeriyle Authentication parametresini ve Domain01\Admin01 değeriyle Credential parametresini kullanır.
Örnek 18: Birçok uzak bilgisayarda betik başlatma
Bu örnek, yüzden fazla bilgisayarda bir betik çalıştırır. Yerel bilgisayar üzerindeki etkiyi en aza indirmek için her bilgisayara bağlanır, betiği başlatır ve ardından her bilgisayarla bağlantıyı keser. Betik bağlantısı kesilmiş 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
komutu betiği çalıştırmak için kullanır Invoke-Command
. ComputerName parametresinin değeri, uzak bilgisayarların adlarını bir metin dosyasından alan bir komutdurGet-Content
. InDisconnectedSession parametresi, komutu başlatır başlatmaz oturumların bağlantısını keser. FilePath parametresinin değeri, her bilgisayarda çalışan betiktirInvoke-Command
.
SessionOption değeri bir karma tablodur. OutputBufferingMode değeri olarakDrop
, IdleTimeout değeri ise 12 saat olarak ayarlanır.
Bağlantısız oturumlarda çalışan komut ve betiklerin sonuçlarını almak için cmdlet'ini Receive-PSSession
kullanın.
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 yönlendirme yönergesi döndürebilir. Varsayılan olarak, PowerShell bağlantıları yeniden yönlendirmez, ancak bağlantıyı yeniden yönlendirmesine izin vermek için bu parametreyi kullanabilirsiniz.
Ayrıca MaximumConnectionRedirectionCount oturum seçeneği değerini değiştirerek bağlantının yeniden yönlendirilme sayısını sınırlayabilirsiniz. Cmdlet'in New-PSSessionOption
MaximumRedirection parametresini kullanın veya tercih değişkeninin MaximumConnectionRedirectionCount özelliğini $PSSessionOption
ayarlayın. Varsayılan değer 5'tir.
Tür: | SwitchParameter |
Position: | Named |
Default value: | False |
Gerekli: | False |
İşlem hattı girişini kabul et: | False |
Joker karakterleri kabul et: | False |
-ApplicationName
Bağlantı URI'sinin uygulama adı kesimini belirtir. Komutunda ConnectionURI parametresini kullanmadığınızda uygulama adını belirtmek için bu parametreyi kullanın.
Varsayılan değer, yerel bilgisayardaki tercih değişkeninin değeridir $PSSessionApplicationName
. Bu tercih değişkeni tanımlanmamışsa, varsayılan değer WSMAN'dır. 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 vermek üzere 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.
Tür: | String |
Position: | Named |
Default value: | $PSSessionApplicationName if set on the local computer, otherwise WSMAN |
Gerekli: | False |
İşlem hattı girişini kabul et: | True |
Joker karakterleri kabul et: | False |
-ArgumentList
Betik bloğu için parametrelerin değerlerini sağlar. Betik bloğundaki parametreler ArgumentList'e sağlanan dizi değerinden konuma göre geçirilir. Bu, dizi sıçraması olarak bilinir. ArgumentList'in davranışı hakkında daha fazla bilgi için bkz. about_Splatting.
Tür: | Object[] |
Diğer adlar: | Args |
Position: | Named |
Default value: | None |
Gerekli: | False |
İşlem hattı girişini kabul et: | False |
Joker karakterleri kabul et: | False |
-AsJob
Bu cmdlet'in uzak bir bilgisayarda arka plan işi olarak komutunu çalıştırdığını gösterir. Tamamlanması 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. İş tamamlarken oturumda çalışmaya devam edebilirsiniz. İşi yönetmek için cmdlet'lerini *-Job
kullanın. İş sonuçlarını almak için cmdlet'ini Receive-Job
kullanın.
AsJob parametresi, cmdlet'i kullanarak cmdlet'i Start-Job
uzaktan çalıştırmaya benzerInvoke-Command
. Ancak AsJob ile, iş uzak bir bilgisayarda çalıştırılıyor olsa bile 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.
Tür: | SwitchParameter |
Position: | Named |
Default value: | False |
Gerekli: | False |
İşlem hattı girişini kabul et: | 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
- Credssp
- Düzenlemek
- Kerberos
- Anlaşma
- NegotiateWithImplicitCredential
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 uzak bir bilgisayara geçirildiği Kimlik Bilgisi Güvenlik Destek Sağlayıcısı (CredSSP) kimlik doğrulaması, uzak ağ paylaşımına erişme gibi birden fazla kaynakta kimlik doğrulaması gerektiren komutlar için tasarlanmıştır. Bu mekanizma, uzak işlemin güvenlik riskini artırır. Uzak bilgisayarın güvenliği aşılırsa, bu bilgisayara geçirilen kimlik bilgileri ağ oturumunu denetlemek için kullanılabilir. Daha fazla bilgi için bkz . Kimlik Bilgisi Güvenlik Desteği Sağlayıcısı.
Tür: | AuthenticationMechanism |
Kabul edilen değerler: | Default, Basic, Negotiate, NegotiateWithImplicitCredential, Credssp, Digest, Kerberos |
Position: | Named |
Default value: | Default |
Gerekli: | False |
İşlem hattı girişini kabul et: | False |
Joker karakterleri kabul et: | False |
-CertificateThumbprint
Bağlantısı kesilmiş oturuma bağlanma izni olan 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ğrulamasında kullanılır. Bunlar yalnızca yerel kullanıcı hesaplarıyla eşlenebilir ve etki alanı hesaplarıyla çalışmaz.
Sertifika parmak izi almak için PowerShell Cert: sürücüsünde veya Get-Item
Get-ChildItem
komutunu kullanın.
Tür: | String |
Position: | Named |
Default value: | None |
Gerekli: | False |
İşlem hattı girişini kabul et: | False |
Joker karakterleri kabul et: | False |
-ComputerName
Komutun üzerinde çalıştığı bilgisayarları belirtir. Varsayılan, yerel bilgisayardır.
ComputerName parametresini kullandığınızda, PowerShell yalnızca belirtilen komutu çalıştırmak için kullanılan geçici bir bağlantı oluşturur ve ardından kapatılır. Kalıcı bir bağlantıya ihtiyacınız varsa Session parametresini kullanın.
Virgülle ayrılmış bir listeye bir veya daha fazla bilgisayarın NETBIOS adını, IP adresini veya tam etki alanı adını yazın. Yerel bilgisayarı belirtmek için bilgisayar adını, localhost'ı veya nokta (.
) yazın.
ComputerName değerinde bir IP adresi kullanmak için komutun Credential parametresini içermesi gerekir. Bilgisayar HTTPS aktarımı için yapılandırılmalıdır veya uzak bilgisayarın IP adresi yerel bilgisayarın WinRM TrustedHosts listesine eklenmelidir. TrustedHosts listesine bilgisayar adı ekleme yönergeleri için bkz. Güvenilen Ana Bilgisayar Listesine Bilgisayar Ekleme.
Windows Vista ve Windows işletim sisteminin sonraki sürümlerinde, yerel bilgisayarı ComputerName değerine eklemek için PowerShell'i Yönetici olarak çalıştır seçeneğini kullanarak çalıştırmanız gerekir.
Tür: | String[] |
Diğer adlar: | Cn |
Position: | 0 |
Default value: | Local computer |
Gerekli: | False |
İşlem hattı girişini kabul et: | False |
Joker karakterleri kabul et: | False |
-ConfigurationName
Yeni PSSession için kullanılan oturum yapılandırmasını belirtir.
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'sinin başına eklenir: http://schemas.microsoft.com/PowerShell
.
Oturumun oturum yapılandırması uzak bilgisayarda bulunur. Belirtilen oturum yapılandırması uzak bilgisayarda yoksa, komut başarısız olur.
Varsayılan değer, yerel bilgisayardaki tercih değişkeninin değeridir $PSSessionConfigurationName
. Bu tercih değişkeni ayarlı değilse, varsayılan değer Microsoft.PowerShell'dir. Daha fazla bilgi için bkz . about_Preference_Variables.
Tür: | String |
Position: | Named |
Default value: | $PSSessionConfigurationName if set on the local computer, otherwise Microsoft.PowerShell |
Gerekli: | False |
İşlem hattı girişini kabul et: | True |
Joker karakterleri kabul et: | False |
-ConnectionUri
Oturumun bağlantı uç noktasını tanımlayan bir Tekdüzen Kaynak Tanımlayıcısı (URI) belirtir. URI tam olarak nitelenmiş olmalıdır.
Bu dizenin biçimi aşağıdaki gibidir:
<Transport>://<ComputerName>:<Port>/<ApplicationName>
Varsayılan değer aşağıdaki gibidir:
http://localhost:5985/WSMAN
Bağlantı URI'sini belirtmezseniz, bağlantı URI'si değerlerini belirtmek için UseSSL ve Bağlantı Noktası parametrelerini kullanabilirsiniz.
URI'nin Aktarım kesimi için geçerli değerler HTTP ve HTTPS'dir. Aktarım kesimiyle bağlantı URI'sini belirtirseniz ancak bağlantı noktası belirtmezseniz, oturum şu standart bağlantı noktalarıyla oluşturulur: HTTP için 80 ve HTTPS için 443. PowerShell uzaktan iletişiminde varsayılan bağlantı noktalarını kullanmak için HTTP için 5985 veya HTTPS için 5986 numaralı bağlantı noktasını belirtin.
Hedef bilgisayar bağlantıyı farklı bir URI'ye yönlendirirse, komutunda AllowRedirection parametresini kullanmadığınız sürece PowerShell yeniden yönlendirmeyi engeller.
Tür: | Uri[] |
Diğer adlar: | URI, CU |
Position: | 0 |
Default value: | http://localhost:5985/WSMAN |
Gerekli: | False |
İşlem hattı girişini kabul et: | False |
Joker karakterleri kabul et: | False |
-ContainerId
Kapsayıcı kimlikleri dizisini belirtir.
Tür: | String[] |
Position: | Named |
Default value: | None |
Gerekli: | True |
İşlem hattı girişini kabul et: | True |
Joker karakterleri kabul et: | False |
-Credential
Bu eylemi gerçekleştirme iznine sahip bir kullanıcı hesabı belirtir. Varsayılan, mevcut kullanıcıdır.
User01 veya Domain01\User01 gibi bir kullanıcı adı yazın veya cmdlet tarafından Get-Credential
oluşturulan bir PSCredential nesnesi girin. Bir kullanıcı adı yazarsanız parolayı girmeniz istenir.
Kimlik bilgileri bir PSCredential nesnesinde depolanır ve parola SecureString olarak depolanır.
Not
SecureString veri koruması hakkında daha fazla bilgi için bkz. SecureString ne kadar güvenli?.
Tür: | PSCredential |
Position: | Named |
Default value: | Current user |
Gerekli: | False |
İşlem hattı girişini kabul et: | True |
Joker karakterleri kabul et: | False |
-EnableNetworkAccess
Bu cmdlet'in geri döngü oturumlarına etkileşimli bir güvenlik belirteci eklediğini gösterir. Etkileşimli belirteç, geri döngü oturumunda diğer bilgisayarlardan veri alan komutları çalıştırmanıza olanak tanır. Örneğin, oturumda xml dosyalarını uzak bir bilgisayardan yerel bilgisayara kopyalayan bir komut çalıştırabilirsiniz.
Geri döngü oturumu, aynı bilgisayarda kaynaklanıp biten bir PSSession'dır . Geri döngü oturumu oluşturmak için ComputerName parametresini atlar veya değerini nokta (.
), localhost veya yerel bilgisayarın adı olarak ayarlayın.
Varsayılan olarak, geri döngü oturumları bir ağ belirteci kullanılarak oluşturulur ve bu da uzak bilgisayarlarda kimlik doğrulaması için yeterli izin sağlamayabilir.
EnableNetworkAccess parametresi yalnızca geri döngü oturumlarında etkilidir. Uzak bilgisayarda oturum oluştururken EnableNetworkAccess kullanıyorsanız, komut başarılı olur, ancak parametre yoksayılır.
Oturum kimlik bilgilerini diğer bilgisayarlara devreden Authentication parametresinin CredSSP değerini kullanarak bir geri dö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ş geri döngü oturumları yalnızca oturumun oluşturulduğu bilgisayardan yeniden bağlanabilir. CredSSP kimlik doğrulaması kullanan bağlantısız oturumlar diğer bilgisayarlardan yeniden bağlanabilir. Daha fazla bilgi için bkz. Disconnect-PSSession
.
Bu parametre PowerShell 3.0'da kullanıma sunulmuştur.
Tür: | SwitchParameter |
Position: | Named |
Default value: | False |
Gerekli: | False |
İşlem hattı girişini kabul et: | False |
Joker karakterleri kabul et: | False |
-FilePath
Bu cmdlet'in bir veya daha fazla uzak bilgisayarda çalıştırıldığı yerel bir betik belirtir. Betiğin yolunu ve dosya adını girin veya bir betik yolunu adresine yöneltin Invoke-Command
. Betik yerel bilgisayarda veya yerel bilgisayarın erişebileceği bir dizinde bulunmalıdır. Betikteki parametrelerin değerlerini belirtmek için ArgumentList 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.
Tür: | String |
Diğer adlar: | PSPath |
Position: | 1 |
Default value: | None |
Gerekli: | True |
İşlem hattı girişini kabul et: | False |
Joker karakterleri kabul et: | False |
-HideComputerName
Bu cmdlet'in çıkış ekranındaki her nesnenin bilgisayar adını atladığını gösterir. 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.
Tür: | SwitchParameter |
Diğer adlar: | HCN |
Position: | Named |
Default value: | None |
Gerekli: | False |
İşlem hattı girişini kabul et: | False |
Joker karakterleri kabul et: | False |
-InDisconnectedSession
Bu cmdlet'in bağlantısı kesilmiş bir oturumda bir komut veya betik çalıştırdığını gösterir.
InDisconnectedSession parametresini kullandığınızda, Invoke-Command
her uzak bilgisayarda kalıcı bir oturum oluşturur, ScriptBlock veya FilePath parametresi tarafından belirtilen komutu başlatır ve oturum bağlantısını keser. Komutlar bağlantısız oturumlarda çalışmaya devam eder. InDisconnectedSession , uzak oturumlara bağlantı kurmadan komutları çalıştırmanızı sağlar. Sonuç döndürülmeden önce oturumun bağlantısı kesildiğinden 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'i Session parametresiyle veya AsJob parametresiyle kullanamazsınız.
InDisconnectedSession kullanan komutlar, bağlantısı kesilmiş oturumu temsil eden bir PSSession nesnesi döndürür. Komut çıkışını döndürmez. Bağlantısı kesilmiş oturuma bağlanmak için veya Receive-PSSession
cmdlet'lerini Connect-PSSession
kullanın. Oturumda çalıştırılan komutların sonuçlarını almak için cmdlet'ini Receive-PSSession
kullanın. Bağlantısı kesilmiş bir oturumda çıkış oluşturan komutları çalıştırmak için OutputBufferingMode oturum seçeneğinin değerini Bırak olarak ayarlayın. Bağlantısı kesilmiş oturuma bağlanmayı planlıyorsanız oturumu silmeden önce bağlanmanız için yeterli süre sağlayacak şekilde oturumdaki boşta kalma zaman aşımını ayarlayın.
SessionOption parametresinde veya tercih değişkeninde çıkış arabelleği modunu ve boşta kalma zaman aşımını $PSSessionOption
ayarlayabilirsiniz. Oturum seçenekleri hakkında daha fazla bilgi için bkz New-PSSessionOption
. ve about_Preference_Variables.
Bağlantısı Kesilmiş Oturumlar özelliği hakkında daha fazla bilgi için bkz . about_Remote_Disconnected_Sessions.
Bu parametre PowerShell 3.0'da kullanıma sunulmuştur.
Tür: | SwitchParameter |
Diğer adlar: | Disconnected |
Position: | Named |
Default value: | False |
Gerekli: | False |
İşlem hattı girişini kabul et: | False |
Joker karakterleri kabul et: | False |
-InputObject
Komutun girişini 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 otomatik değişkeni kullanın$Input
.
Tür: | PSObject |
Position: | Named |
Default value: | None |
Gerekli: | False |
İşlem hattı girişini kabul et: | 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 Job<n>
; 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 Invoke-Command
komuta AsJob eklemeseniz bile bir iş nesnesi döndürür.
PowerShell arka plan işleri hakkında daha fazla bilgi için bkz . about_Jobs.
Tür: | String |
Position: | Named |
Default value: | Job<n> |
Gerekli: | False |
İşlem hattı girişini kabul et: | False |
Joker karakterleri kabul et: | False |
-NoNewScope
Bu cmdlet'in geçerli kapsamda belirtilen komutu ç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ılacak komutlarda, yani Hem ComputerName hem de Session parametrelerini atlayan komutlarda geçerlidir.
Bu parametre PowerShell 3.0'da kullanıma sunulmuştur.
Tür: | SwitchParameter |
Position: | Named |
Default value: | False |
Gerekli: | False |
İşlem hattı girişini kabul et: | False |
Joker karakterleri kabul et: | False |
-Port
Bu komut için kullanılan uzak bilgisayardaki ağ bağlantı noktasını belirtir. Uzak bilgisayara bağlanmak için, uzak bilgisayar bağlantının kullandığı bağlantı noktasında dinliyor olmalıdır. 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\>
Gerekmediği sürece Bağlantı Noktası parametresini kullanmayın. Komutta ayarlanan bağlantı noktası, komutun çalıştığı tüm bilgisayarlar veya oturumlar için geçerlidir. Alternatif bir bağlantı noktası ayarı, komutun tüm bilgisayarlarda çalışmasını engelleyebilir.
Tür: | Int32 |
Position: | Named |
Default value: | None |
Gerekli: | False |
İşlem hattı girişini kabul et: | False |
Joker karakterleri kabul et: | False |
-RunAsAdministrator
Bu cmdlet'in yönetici olarak bir komut çağırdığını gösterir.
Tür: | SwitchParameter |
Position: | Named |
Default value: | False |
Gerekli: | False |
İşlem hattı girişini kabul et: | False |
Joker karakterleri kabul et: | False |
-ScriptBlock
Çalıştırılacak komutları belirtir. Betik bloğu oluşturmak için komutları küme ayraçları ({ }
) içine alın. komutu uzaktan çalıştırmak için kullanılırken Invoke-Command
, komuttaki tüm değişkenler uzak bilgisayarda değerlendirilir.
Not
Betik bloğunun parametreleri yalnızca konuma göre ArgumentList'ten geçirilebilir. Anahtar parametreleri konuma göre geçirilemez. SwitchParameter türü gibi davranan bir parametreye ihtiyacınız varsa, bunun yerine Boole türü kullanın.
Tür: | ScriptBlock |
Diğer adlar: | Command |
Position: | 0 |
Default value: | None |
Gerekli: | True |
İşlem hattı girişini kabul et: | False |
Joker karakterleri kabul et: | False |
-Session
Bu cmdlet'in komutunu çalıştırdığı bir oturum dizisini belirtir. PSSession nesnelerini içeren bir değişken veya veya Get-PSSession
komutu gibi PSSession nesnelerini oluşturan veya alan bir New-PSSession
komut girin.
PSSession oluşturduğunuzda PowerShell uzak bilgisayara kalıcı bir bağlantı kurar. Veri paylaşan bir dizi ilgili komutu çalıştırmak için PSSession kullanın. Tek bir komut veya ilişkisiz bir dizi komut çalıştırmak için ComputerName parametresini kullanın. Daha fazla bilgi için bkz . about_PSSessions.
Tür: | PSSession[] |
Position: | 0 |
Default value: | None |
Gerekli: | False |
İşlem hattı girişini kabul et: | False |
Joker karakterleri kabul et: | False |
-SessionName
Bağlantısı kesilmiş bir oturum için kolay bir ad belirtir. Komutu gibi Get-PSSession
sonraki komutlarda oturuma başvurmak için bu adı kullanabilirsiniz. Bu parametre yalnızca InDisconnectedSession parametresiyle geçerlidir.
Bu parametre PowerShell 3.0'da kullanıma sunulmuştur.
Tür: | String[] |
Position: | Named |
Default value: | None |
Gerekli: | False |
İşlem hattı girişini kabul et: | False |
Joker karakterleri kabul et: | False |
-SessionOption
Oturum için gelişmiş seçenekleri belirtir. Cmdlet'ini kullanarak New-PSSessionOption
oluşturduğunuz gibi bir SessionOption nesnesi veya anahtarların oturum seçeneği adları ve değerlerin oturum seçeneği değerleri olduğu bir karma tablo girin.
Not
SessionOption için bir karma tablo belirtirseniz PowerShell, karma tabloyu System.Management.Automation.Remoting.PSSessionOption nesnesine dönüştürür. Karma tablo içinde belirtilen anahtarların değerleri, nesnenin eşleşen özelliğine yazılır. Bu, çağrısından New-PSSessionOption
farklı davranır. Örneğin, IdleTimeout gibi zaman aşımı özellikleri için System.TimeSpan değerleri, bir tamsayı değerini milisaniye yerine onay işaretine dönüştürür.
PSSessionOption nesnesi ve özellikleri hakkında daha fazla bilgi için bkz. PSSessionOption
Seçenekler için varsayılan değerler, ayarlanmışsa tercih değişkeninin $PSSessionOption
değerine göre belirlenir. Aksi takdirde, varsayılan değerler oturum yapılandırmasında ayarlanan seçenekler tarafından oluşturulur.
Oturum seçeneği değerleri, tercih değişkeninde ve oturum yapılandırmasında $PSSessionOption
ayarlanan oturumlar için varsayılan değerlerden önceliklidir. Ancak, bunlar oturum yapılandırmasında ayarlanan maksimum değer, kota veya sınırlardan öncelikli değildir.
Varsayılan değerleri içeren oturum seçeneklerinin açıklaması için bkz New-PSSessionOption
. . Tercih değişkeni hakkında $PSSessionOption
bilgi için bkz . about_Preference_Variables. Oturum yapılandırmaları hakkında daha fazla bilgi edinmek için bkz. about_Session_Configurations.
Tür: | PSSessionOption |
Position: | Named |
Default value: | None |
Gerekli: | False |
İşlem hattı girişini kabul et: | False |
Joker karakterleri kabul et: | False |
-ThrottleLimit
Bu komutu çalıştırmak için oluşturulabilecek en fazla eşzamanlı bağlantı sayısını belirtir. Bu parametreyi atlar veya 0 değerini girerseniz, varsayılan değer olan 32 kullanılır.
Kısıtlama sınırı yalnızca geçerli komut için geçerlidir, oturuma veya bilgisayara uygulanmaz.
Tür: | Int32 |
Position: | Named |
Default value: | 32 |
Gerekli: | False |
İşlem hattı girişini kabul et: | False |
Joker karakterleri kabul et: | False |
-UseSSL
Bu cmdlet'in uzak bilgisayara bağlantı kurmak için Güvenli Yuva Katmanı (SSL) protokolunu kullandığını gösterir. 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ıyorsanız ancak komut için kullanılan bağlantı noktasında SSL kullanılamıyorsa, komut başarısız olur.
Tür: | SwitchParameter |
Position: | Named |
Default value: | False |
Gerekli: | False |
İşlem hattı girişini kabul et: | False |
Joker karakterleri kabul et: | False |
-VMId
Sanal makinelerin kimlik dizisini belirtir.
Tür: | Guid[] |
Diğer adlar: | VMGuid |
Position: | 0 |
Default value: | None |
Gerekli: | True |
İşlem hattı girişini kabul et: | True |
Joker karakterleri kabul et: | False |
-VMName
Sanal makinelerin ad dizisini belirtir.
Tür: | String[] |
Position: | Named |
Default value: | None |
Gerekli: | True |
İşlem hattı girişini kabul et: | True |
Joker karakterleri kabul et: | False |
Girişler
Betik bloğundaki bir komutu öğesine yöneltebilirsiniz Invoke-Command
. Komuttaki $Input
giriş nesnelerini göstermek için 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.
InDisconnectedSession parametresini kullanırsanız, bu cmdlet bir PSSession nesnesi döndürür.
Varsayılan olarak, bu cmdlet ScriptBlock parametresinin değeri olan çağrılan komutun çıkışını döndürür.
Notlar
Windows PowerShell için aşağıdaki diğer adları Invoke-Command
içerir:
icm
Windows Vista'da ve Windows işletim sisteminin sonraki sürümlerinde, yerel bilgisayarda bir komut çalıştırmak için ComputerName parametresini Invoke-Command
kullanmak için, Yönetici olarak çalıştır seçeneğini kullanarak PowerShell'i çalıştırmanız gerekir.
Komutları birden çok bilgisayarda ç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 ve bu farklı olabilir.
Komutun çalıştırıldığından kaynaklanan hatalar, komut Invoke-Command
sonuçlarına eklenir.
Yerel komuttaki hataları sonlandıracak hatalar, uzak bir komutta sonlandırılmayan hatalar olarak değerlendirilir. Bu strateji, bir bilgisayardaki sonlandırıcı hataların çalıştırıldığı tüm bilgisayarlarda komutu kapatmamasını sağlar. Bu uygulama, tek bir bilgisayarda uzak 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-Management'taki güvenilen konaklar listesine eklemek için, sağlayıcıda WSMAN
aşağıdaki komutu kullanın; burada <Remote-Computer-Name>
uzak bilgisayarın adıdır:
Set-Item -Path WSMan:\Localhost\Client\TrustedHosts -Value \<Remote-Computer-Name\>
InDisconnectedSession parametresini kullanarak pssession bağlantısını kestiğinizde, oturum durumu Bağlantısı Kesildi ve kullanılabilirlik Yok şeklindedir. State özelliğinin değeri geçerli oturuma göredir. Bağlantısı 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ğini göstermez. Farklı bir oturuma bağlı olabilir. Oturuma bağlanıp bağlanamayacağınızı veya oturuma yeniden bağlanıp bağlanamayacağınızı belirlemek için Kullanılabilirlik özelliğini kullanın.
Hiçbiri Kullanılabilirlik değeri 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 Kullanılabilirlik özelliğinin değerleri hakkında daha fazla bilgi için bkz. RunspaceAvailability.
İlişkili Bağlantılar
PowerShell