Invoke-Command
Parancsokat futtat helyi és távoli számítógépeken.
Syntax
Invoke-Command
[-ScriptBlock] <scriptblock>
[-NoNewScope]
[-InputObject <psobject>]
[-ArgumentList <Object[]>]
[<CommonParameters>]
Invoke-Command
[[-Session] <PSSession[]>]
[-ScriptBlock] <scriptblock>
[-ThrottleLimit <int>]
[-AsJob]
[-HideComputerName]
[-JobName <string>]
[-RemoteDebug]
[-InputObject <psobject>]
[-ArgumentList <Object[]>]
[<CommonParameters>]
Invoke-Command
[[-Session] <PSSession[]>]
[-FilePath] <string>
[-ThrottleLimit <int>]
[-AsJob]
[-HideComputerName]
[-JobName <string>]
[-RemoteDebug]
[-InputObject <psobject>]
[-ArgumentList <Object[]>]
[<CommonParameters>]
Invoke-Command
[[-ComputerName] <string[]>]
[-ScriptBlock] <scriptblock>
[-Credential <pscredential>]
[-Port <int>]
[-UseSSL]
[-ConfigurationName <string>]
[-ApplicationName <string>]
[-ThrottleLimit <int>]
[-AsJob]
[-InDisconnectedSession]
[-SessionName <string[]>]
[-HideComputerName]
[-JobName <string>]
[-SessionOption <PSSessionOption>]
[-Authentication <AuthenticationMechanism>]
[-EnableNetworkAccess]
[-RemoteDebug]
[-InputObject <psobject>]
[-ArgumentList <Object[]>]
[-CertificateThumbprint <string>]
[<CommonParameters>]
Invoke-Command
[[-ComputerName] <string[]>]
[-FilePath] <string>
[-Credential <pscredential>]
[-Port <int>]
[-UseSSL]
[-ConfigurationName <string>]
[-ApplicationName <string>]
[-ThrottleLimit <int>]
[-AsJob]
[-InDisconnectedSession]
[-SessionName <string[]>]
[-HideComputerName]
[-JobName <string>]
[-SessionOption <PSSessionOption>]
[-Authentication <AuthenticationMechanism>]
[-EnableNetworkAccess]
[-RemoteDebug]
[-InputObject <psobject>]
[-ArgumentList <Object[]>]
[<CommonParameters>]
Invoke-Command
[[-ConnectionUri] <uri[]>]
[-ScriptBlock] <scriptblock>
[-Credential <pscredential>]
[-ConfigurationName <string>]
[-ThrottleLimit <int>]
[-AsJob]
[-InDisconnectedSession]
[-HideComputerName]
[-JobName <string>]
[-AllowRedirection]
[-SessionOption <PSSessionOption>]
[-Authentication <AuthenticationMechanism>]
[-EnableNetworkAccess]
[-RemoteDebug]
[-InputObject <psobject>]
[-ArgumentList <Object[]>]
[-CertificateThumbprint <string>]
[<CommonParameters>]
Invoke-Command
[[-ConnectionUri] <uri[]>]
[-FilePath] <string>
[-Credential <pscredential>]
[-ConfigurationName <string>]
[-ThrottleLimit <int>]
[-AsJob]
[-InDisconnectedSession]
[-HideComputerName]
[-JobName <string>]
[-AllowRedirection]
[-SessionOption <PSSessionOption>]
[-Authentication <AuthenticationMechanism>]
[-EnableNetworkAccess]
[-RemoteDebug]
[-InputObject <psobject>]
[-ArgumentList <Object[]>]
[<CommonParameters>]
Invoke-Command
[-VMId] <guid[]>
[-ScriptBlock] <scriptblock>
-Credential <pscredential>
[-ConfigurationName <string>]
[-ThrottleLimit <int>]
[-AsJob]
[-HideComputerName]
[-RemoteDebug]
[-InputObject <psobject>]
[-ArgumentList <Object[]>]
[<CommonParameters>]
Invoke-Command
[-ScriptBlock] <scriptblock>
-Credential <pscredential>
-VMName <string[]>
[-ConfigurationName <string>]
[-ThrottleLimit <int>]
[-AsJob]
[-HideComputerName]
[-RemoteDebug]
[-InputObject <psobject>]
[-ArgumentList <Object[]>]
[<CommonParameters>]
Invoke-Command
[-VMId] <guid[]>
[-FilePath] <string>
-Credential <pscredential>
[-ConfigurationName <string>]
[-ThrottleLimit <int>]
[-AsJob]
[-HideComputerName]
[-RemoteDebug]
[-InputObject <psobject>]
[-ArgumentList <Object[]>]
[<CommonParameters>]
Invoke-Command
[-FilePath] <string>
-Credential <pscredential>
-VMName <string[]>
[-ConfigurationName <string>]
[-ThrottleLimit <int>]
[-AsJob]
[-HideComputerName]
[-RemoteDebug]
[-InputObject <psobject>]
[-ArgumentList <Object[]>]
[<CommonParameters>]
Invoke-Command
[-ScriptBlock] <scriptblock>
-HostName <string[]>
[-Port <int>]
[-AsJob]
[-HideComputerName]
[-JobName <string>]
[-UserName <string>]
[-KeyFilePath <string>]
[-Subsystem <string>]
[-ConnectingTimeout <int>]
[-SSHTransport]
[-Options <hashtable>]
[-RemoteDebug]
[-InputObject <psobject>]
[-ArgumentList <Object[]>]
[<CommonParameters>]
Invoke-Command
[-ScriptBlock] <scriptblock>
-ContainerId <string[]>
[-ConfigurationName <string>]
[-ThrottleLimit <int>]
[-AsJob]
[-HideComputerName]
[-JobName <string>]
[-RunAsAdministrator]
[-RemoteDebug]
[-InputObject <psobject>]
[-ArgumentList <Object[]>]
[<CommonParameters>]
Invoke-Command
[-FilePath] <string>
-ContainerId <string[]>
[-ConfigurationName <string>]
[-ThrottleLimit <int>]
[-AsJob]
[-HideComputerName]
[-JobName <string>]
[-RunAsAdministrator]
[-RemoteDebug]
[-InputObject <psobject>]
[-ArgumentList <Object[]>]
[<CommonParameters>]
Invoke-Command
[-ScriptBlock] <scriptblock>
-SSHConnection <hashtable[]>
[-AsJob]
[-HideComputerName]
[-JobName <string>]
[-RemoteDebug]
[-InputObject <psobject>]
[-ArgumentList <Object[]>]
[<CommonParameters>]
Invoke-Command
-FilePath <string>
-HostName <string[]>
[-AsJob]
[-HideComputerName]
[-UserName <string>]
[-KeyFilePath <string>]
[-Subsystem <string>]
[-ConnectingTimeout <int>]
[-SSHTransport]
[-Options <hashtable>]
[-RemoteDebug]
[-InputObject <psobject>]
[-ArgumentList <Object[]>]
[<CommonParameters>]
Invoke-Command
-FilePath <string>
-SSHConnection <hashtable[]>
[-AsJob]
[-HideComputerName]
[-RemoteDebug]
[-InputObject <psobject>]
[-ArgumentList <Object[]>]
[<CommonParameters>]
Description
A Invoke-Command
parancsmag parancsokat futtat helyi vagy távoli számítógépen, és visszaadja a parancsok összes kimenetét, beleértve a hibákat is. Egyetlen Invoke-Command
paranccsal több számítógépen is futtathat parancsokat.
Ha egyetlen parancsot szeretne futtatni egy távoli számítógépen, használja a ComputerName paramétert . Ha adatokat osztó kapcsolódó parancsok sorozatát szeretné futtatni, a New-PSSession
parancsmaggal hozzon létre egy PSSessiont (állandó kapcsolatot) a távoli számítógépen, majd a munkamenet paraméterrel Invoke-Command
futtassa a parancsot a PSSessionban. Ha leválasztott munkamenetben szeretne parancsot futtatni, használja az InDisconnectedSession paramétert. Ha parancsot szeretne futtatni egy háttérfeladatban, használja az AsJob paramétert.
Helyi számítógépen parancsként szkriptblokkot is Invoke-Command
futtathat. A PowerShell azonnal futtatja a szkriptblokkot az aktuális hatókör gyermek hatókörében.
Invoke-Command
Mielőtt parancsokat futtatna távoli számítógépen, olvassa el a about_Remote.
A PowerShell 6.0-tól kezdve a Secure Shell (SSH) használatával kapcsolatot létesíthet és parancsokat hívhat meg távoli számítógépeken. Az SSH-t telepíteni kell a helyi számítógépre, a távoli számítógépet pedig PowerShell SSH-végponttal kell konfigurálni. Az SSH-alapú Távoli PowerShell-munkamenet előnye, hogy több platformon (Windows, Linux, macOS) működik. SSH-alapú munkamenet esetén a HostName vagy az SSH Csatlakozás ion paraméterekkel adja meg a távoli számítógépet és a kapcsolódó kapcsolati adatokat. A PowerShell SSH-remoting beállításával kapcsolatos további információkért lásd : PowerShell Remoting Over SSH.
Egyes kódminták splatting használatával csökkentik a vonal hosszát. További információ: about_Splatting.
Példák
1. példa: Szkript futtatása kiszolgálón
Ez a példa a szkriptet Test.ps1
a Server01 számítógépen futtatja.
Invoke-Command -FilePath c:\scripts\test.ps1 -ComputerName Server01
A FilePath paraméter a helyi számítógépen található szkriptet adja meg. A szkript a távoli számítógépen fut, és az eredmények visszakerülnek a helyi számítógépre.
2. példa: Parancs futtatása távoli kiszolgálón
Ez a példa egy Get-Culture
parancsot futtat a Server01 távoli számítógépen.
Invoke-Command -ComputerName Server01 -Credential Domain01\User01 -ScriptBlock {
Get-Culture
}
A ComputerName paraméter a távoli számítógép nevét adja meg. A Hitelesítő paraméter a parancs futtatására szolgál a Domain01\User01 biztonsági környezetben, amely egy olyan felhasználó, aki rendelkezik engedéllyel a parancsok futtatására. A ScriptBlock paraméter megadja a távoli számítógépen futtatandó parancsot.
Válaszul a PowerShell kéri a jelszót és egy hitelesítési módszert a User01-fiókhoz. Ezután futtatja a parancsot a Server01 számítógépen, és visszaadja az eredményt.
3. példa: Parancs futtatása állandó kapcsolatban
Ez a példa ugyanazt Get-Culture
a parancsot futtatja egy munkamenetben, állandó kapcsolat használatával a Server02 nevű távoli számítógépen.
$s = New-PSSession -ComputerName Server02 -Credential Domain01\User01
Invoke-Command -Session $s -ScriptBlock { Get-Culture }
A New-PSSession
parancsmag létrehoz egy munkamenetet a Server02 távoli számítógépen, és menti a $s
változóba. Általában csak akkor hoz létre munkamenetet, ha parancsok sorozatát futtatja a távoli számítógépen.
A Invoke-Command
parancsmag futtatja a parancsot a Get-Culture
Server02 kiszolgálón. A Munkamenet paraméter a változóban mentett munkamenetet $s
adja meg.
Válaszul a PowerShell futtatja a parancsot a munkamenetben a Server02 számítógépen.
4. példa: Munkamenet használata adatok megosztására szolgáló parancsok sorozatának futtatásához
Ez a példa összehasonlítja a ComputerName és a Session paraméterek használatával járó hatásokatInvoke-Command
. Bemutatja, hogyan futtathat munkameneteket olyan parancsok sorozatához, amelyek ugyanazokat az adatokat használják.
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
Az első két parancs a ComputerName paraméterrel Invoke-Command
futtat parancsokat a Server02 távoli számítógépen. Az első parancs a Get-Process
parancsmaggal lekéri a PowerShell-folyamatot a távoli számítógépen, és menti a $p
változóba. A második parancs lekéri a PowerShell-folyamat VirtualMemorySize tulajdonságának értékét.
A ComputerName paraméter használatakor a PowerShell létrehoz egy új munkamenetet a parancs futtatásához.
A munkamenet a parancs befejeződésekor lezárul. A $p
változó egy kapcsolatban lett létrehozva, de nem létezik a második parancshoz létrehozott kapcsolatban.
A probléma megoldásához hozzon létre egy állandó munkamenetet a távoli számítógépen, majd futtassa mindkét parancsot ugyanabban a munkamenetben.
A New-PSSession
parancsmag létrehoz egy állandó munkamenetet a Server02 számítógépen, és menti a munkamenetet a $s
változóban. Azokat Invoke-Command
a sorokat, amelyek a Munkamenet paramétert követve futtatják a két parancsot ugyanabban a munkamenetben. Mivel mindkét parancs ugyanabban a munkamenetben fut, az $p
érték aktív marad.
5. példa: Parancs meghívása változóban tárolt szkriptblokkkal
Ez a példa bemutatja, hogyan futtathat egy parancsot, amely szkriptblokkként van tárolva egy változóban. Amikor a szkriptblokkot egy változóba menti, megadhatja a változót a ScriptBlock paraméter értékeként.
$command = {
Get-WinEvent -LogName PowerShellCore/Operational |
Where-Object -FilterScript { $_.Message -like '*certificate*' }
}
Invoke-Command -ComputerName S1, S2 -ScriptBlock $command
A $command
változó a Get-WinEvent
szkriptblokkként formázott parancsot tárolja. A Invoke-Command
parancs az S1 és S2 távoli számítógépeken tárolt $command
parancsot futtatja.
6. példa: Egyetlen parancs futtatása több számítógépen
Ez a példa bemutatja, hogyan futtathat Invoke-Command
egyetlen parancsot több számítógépen.
$parameters = @{
ComputerName = 'Server01', 'Server02', 'TST-0143', 'localhost'
ConfigurationName = 'MySession.PowerShell'
ScriptBlock = { Get-WinEvent -LogName PowerShellCore/Operational }
}
Invoke-Command @parameters
A ComputerName paraméter a számítógépnevek vesszővel tagolt listáját adja meg. A számítógépek listája tartalmazza a localhost értéket, amely a helyi számítógépet jelöli. A ConfigurationName paraméter egy másik munkamenet-konfigurációt határoz meg. A ScriptBlock paraméter fut Get-WinEvent
, hogy lekérje a PowerShellCore/Operational eseménynaplókat az egyes számítógépekről.
7. példa: A gazdagépprogram verziójának lekérése több számítógépen
Ez a példa a PowerShell-gazdagépprogram 200 távoli számítógépen futó verzióját kapja meg.
$version = Invoke-Command -ComputerName (Get-Content Machines.txt) -ScriptBlock {
(Get-Host).Version
}
Mivel csak egy parancs fut, nem kell állandó kapcsolatokat létrehoznia az egyes számítógépekhez. Ehelyett a parancs a ComputerName paraméterrel jelzi a számítógépeket. A számítógépek megadásához a Get-Content
parancsmag használatával lekéri a Machine.txt fájl tartalmát, egy számítógépnévfájlt.
A Invoke-Command
parancsmag egy Get-Host
parancsot futtat a távoli számítógépeken. Pont jelölést használ a PowerShell-gazdagép Verzió tulajdonságának lekéréséhez.
Ezek a parancsok egyenként futnak. Amikor a parancsok befejeződnek, a rendszer az összes számítógép parancsainak kimenetét menti a $version
változóba. A kimenet tartalmazza annak a számítógépnek a nevét, ahonnan az adatok származnak.
8. példa: Háttérfeladat futtatása több távoli számítógépen
Ez a példa egy parancsot futtat két távoli számítógépen. A Invoke-Command
parancs az AsJob paramétert használja, hogy a parancs háttérfeladatként fusson. A parancsok a távoli számítógépeken futnak, de a feladat a helyi számítógépen létezik. Az eredményeket a rendszer a helyi számítógépre továbbítja.
$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
A New-PSSession
parancsmag munkameneteket hoz létre a Server01 és a Server02 távoli számítógépeken. A Invoke-Command
parancsmag minden munkamenetben futtat egy háttérfeladatot. A parancs az AsJob paraméterrel futtatja a parancsot háttérfeladatként. Ez a parancs egy feladatobjektumot ad vissza, amely két gyermekfeladat-objektumot tartalmaz, egyet a két távoli számítógépen futtatott feladatok mindegyikéhez.
A Get-Job
parancs menti a feladatobjektumot a $j
változóba. A $j
változó ezután a parancsmagra lesz állítva, Format-List
hogy megjelenítse a feladatobjektum összes tulajdonságát egy listában. Az utolsó parancs lekéri a feladatok eredményeit. A feladatobjektumot a parancsmagba $j
Receive-Job
csövezi, és az eredményeket a $results
változóban tárolja.
9. példa: Helyi változók belefoglalása távoli számítógépen futtatott parancsba
Ez a példa bemutatja, hogyan lehet a helyi változók értékeit belefoglalni egy távoli számítógépen futtatott parancsba. A parancs a Using
hatókör-módosító használatával azonosít egy helyi változót egy távoli parancsban. Alapértelmezés szerint a rendszer feltételezi, hogy az összes változó a távoli munkamenetben lesz definiálva. A Using
hatókör-módosító a PowerShell 3.0-ban lett bevezetve. A hatókör-módosítóról további információt a Using
about_Remote_Variables és a about_Scopes című témakörben talál.
$Log = 'PowerShellCore/Operational'
Invoke-Command -ComputerName Server01 -ScriptBlock {
Get-WinEvent -LogName $Using:Log -MaxEvents 10
}
A $Log
változó a PowerShellCore/Operational eseménynapló nevét tárolja. A Invoke-Command
parancsmag a Server01-en fut Get-WinEvent
, hogy lekérje a tíz legújabb eseményt az eseménynaplóból. A LogName paraméter értéke az a $Log
változó, amelyet a Using
hatókör-módosító előtaggal előtaggal jelez, hogy a helyi munkamenetben jött létre, nem a távoli munkamenetben.
10. példa: A számítógépnév elrejtése
Ez a példa a HideComputerName paraméter Invoke-Command
használatát mutatja be.
A HideComputerName nem módosítja a parancsmag által visszaadott objektumot. Csak a kijelzőt módosítja. A Formátum parancsmagokkal továbbra is megjelenítheti az érintett objektumok PsComputerName tulajdonságát.
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
Az első két parancs a PowerShell-folyamat parancsainak Get-Process
futtatására használhatóInvoke-Command
. Az első parancs kimenete tartalmazza a PsComputerName tulajdonságot, amely annak a számítógépnek a nevét tartalmazza, amelyen a parancs futott. A HideComputerName parancsot használó második parancs kimenete nem tartalmazza a PsComputerName oszlopot.
11. példa: A Param kulcsszó használata szkriptblokkban
A Param
kulcsszó és az ArgumentList paraméter változóértékeket ad át egy szkriptblokk nevesített paramétereinek. Ez a példa a betűvel a
kezdődő és a .pdf
kiterjesztéssel rendelkező fájlneveket jeleníti meg.
A kulcsszóval kapcsolatos további információkért lásd: Param
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
A ScriptBlock paramétert használja, amely két változót határoz meg, $param1
és $param2
. Get-ChildItem
A névvel ellátott paramétereket, a Név és a Belefoglalás változóneveket használja. Az Argumentumlista átadja az értékeket a változóknak.
12. példa: Az $args automatikus változó használata szkriptblokkban
Az $args
automatikus változó és az ArgumentList paraméter tömbértékek paraméterpozícióinak átadására szolgál egy szkriptblokkban. Ez a példa egy kiszolgáló fájlkönyvtár-tartalmát .txt
jeleníti meg. Az Get-ChildItem
Elérési út paraméter a 0. pozíció, a Szűrő paraméter pedig az 1. pozíció.
A változóval kapcsolatos további információkért $args
lásd : 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
Egy ScriptBlock paramétert használ, és Get-ChildItem
megadja a $args[0]
tömb értékeit.$args[1]
Az Argumentumlista átadja a $args
tömbértékeket az Get-ChildItem
Elérési út és szűrő paraméterpozícióinak.
13. példa: Szkript futtatása a szövegfájlban felsorolt összes számítógépen
Ez a példa a Invoke-Command
parancsmaggal futtatja a Sample.ps1
szkriptet a fájlban Servers.txt
felsorolt összes számítógépen. A parancs a FilePath paraméter használatával adja meg a szkriptfájlt. Ez a parancs lehetővé teszi a szkript futtatását a távoli számítógépeken, még akkor is, ha a szkriptfájl nem érhető el a távoli számítógépek számára.
$parameters = @{
ComputerName = (Get-Content Servers.txt)
FilePath = 'C:\Scripts\Sample.ps1'
ArgumentList = 'Process', 'Service'
}
Invoke-Command @parameters
A parancs elküldésekor a fájl tartalma Sample.ps1
egy szkriptblokkba lesz másolva, és a szkriptblokk minden távoli számítógépen fut. Ez az eljárás egyenértékű a ScriptBlock paraméter használatával a szkript tartalmának elküldéséhez.
14. példa: Parancs futtatása távoli számítógépen URI használatával
Ez a példa bemutatja, hogyan futtathat parancsokat egy olyan távoli számítógépen, amelyet egy egységes erőforrás-azonosító (URI) azonosít. Ez a példa egy távoli Exchange-kiszolgálón futtat egy Set-Mailbox
parancsot.
$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
Az első sor a Get-Credential
parancsmaggal tárolja a Windows Live ID hitelesítő adatait a $LiveCred
változóban. A PowerShell felszólítja a felhasználót, hogy adja meg a Windows Live ID hitelesítő adatait.
A $parameters
változó egy kivonattábla, amely a parancsmagnak Invoke-Command
továbbítandó paramétereket tartalmazza. A Invoke-Command
parancsmag egy Set-Mailbox
parancsot futtat a Microsoft.Exchange munkamenet-konfigurációval. A Csatlakozás ionURI paraméter az Exchange-kiszolgáló végpontjának URL-címét adja meg. A hitelesítő adat paraméter a változóban $LiveCred
tárolt hitelesítő adatokat adja meg. Az AuthenticationMechanism paraméter az alapszintű hitelesítés használatát határozza meg. A ScriptBlock paraméter a parancsot tartalmazó szkriptblokkot adja meg.
15. példa: Munkamenet-beállítás használata
Ez a példa bemutatja, hogyan hozhat létre és használhat SessionOption paramétert.
$so = New-PSSessionOption -SkipCACheck -SkipCNCheck -SkipRevocationCheck
$parameters = @{
ComputerName = 'server01'
UseSSL = $true
ScriptBlock = { Get-HotFix }
SessionOption = $so
Credential = 'server01\user01'
}
Invoke-Command @parameters
A New-PSSessionOption
parancsmag létrehoz egy munkamenet-beállításobjektumot, amely miatt a távoli végpont nem ellenőrzi a hitelesítésszolgáltatót, a canonical name és a visszavonási listákat a bejövő HTTPS-kapcsolat kiértékelése során. A SessionOption objektumot a rendszer a $so
változóba menti.
Feljegyzés
Ezeknek az ellenőrzéseknek a letiltása kényelmes a hibaelhárításhoz, de nyilvánvalóan nem biztonságos.
A Invoke-Command
parancsmag távolról futtat egy Get-HotFix
parancsot. A SessionOption paraméter adja meg a változót $so
.
16. példa: URI-átirányítás kezelése távoli parancsban
Ez a példa bemutatja, hogyan kezelheti az URI-átirányítást távoli parancsokban az AllowRedirection és a SessionOption paraméterekkel.
$max = New-PSSessionOption -MaximumRedirection 1
$parameters = @{
ConnectionUri = 'https://ps.exchangelabs.com/PowerShell'
ScriptBlock = { Get-Mailbox dan }
AllowRedirection = $true
SessionOption = $max
}
Invoke-Command @parameters
A New-PSSessionOption
parancsmag létrehoz egy PSSessionOption objektumot, amely a $max
változóba van mentve. A parancs a MaximumRedirection paramétert használja a PSSessionOption objektum Maximum Csatlakozás ionRedirectionCount tulajdonságának 1 értékre állításához.
A Invoke-Command
parancsmag egy távoli Microsoft Exchange Serveren futtat egy Get-Mailbox
parancsot. Az AllowRedirection paraméter explicit engedélyt ad a kapcsolat másik végpontra való átirányítására. A SessionOption paraméter a változóban $max
tárolt munkamenet-objektumot használja.
Ennek eredményeképpen, ha a Csatlakozás ionURI által megadott távoli számítógép átirányítási üzenetet ad vissza, a PowerShell átirányítja a kapcsolatot, de ha az új cél egy másik átirányítási üzenetet ad vissza, az átirányítási szám értéke túllépi az 1 értéket, és Invoke-Command
nem végződő hibát ad vissza.
17. példa: Hálózati megosztás elérése távoli munkamenetben
Ez a példa bemutatja, hogyan férhet hozzá egy hálózati megosztáshoz egy távoli munkamenetből. A példa szemléltetésére három számítógép szolgál. A Server01 a helyi számítógép, a Server02 a távoli számítógép, a Net03 pedig a hálózati megosztást tartalmazza. A Server01 csatlakozik a Server02-hez, majd a Server02 egy második ugrást végez a Net03-hoz a hálózati megosztás eléréséhez. További információ arról, hogy a PowerShell-újramotálás hogyan támogatja a számítógépek közötti ugrásokat, olvassa el a Második ugrás készítése a PowerShell-újraküldésben című témakört.
A szükséges hitelesítőadat-biztonsági támogatási szolgáltató (CredSSP) delegálása engedélyezve van a helyi számítógép ügyfélbeállításaiban és a távoli számítógépen található szolgáltatásbeállításokban. A példában szereplő parancsok futtatásához a helyi számítógépen és a távoli számítógépen található Rendszergazda istrators csoport tagjának kell lennie.
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
A Enable-WSManCredSSP
parancsmag lehetővé teszi a CredSSP delegálását a Server01 helyi számítógépről a Server02 távoli számítógépre. A Szerepkör paraméter megadja, hogy az ügyfél konfigurálja a CredSSP ügyfélbeállítást a helyi számítógépen.
New-PSSession
PSSession objektumot hoz létre a Server02-hez, és az objektumot a $s
változóban tárolja.
A Invoke-Command
parancsmag a változót használja a $s
Server02 távoli számítógéphez való csatlakozáshoz. A ScriptBlock paraméter a távoli számítógépen fut Enable-WSManCredSSP
. A Szerepkör paraméter megadja, hogy a kiszolgáló konfigurálja a CredSSP-kiszolgáló beállításait a távoli számítógépen.
A $parameters
változó tartalmazza a hálózati megosztáshoz való csatlakozás paraméterértékeit. A Invoke-Command
parancsmag egy Get-Item
parancsot futtat a munkamenetben a következőben $s
: . Ez a parancs egy szkriptet kap a \\Net03\Scripts
hálózati megosztásból. A parancs a Hitelesítési paramétert CredSSP értékkel, a Hitelesítő paramétert pedig Domain01\Rendszergazda 01 értékkel használja.
18. példa: Szkriptek indítása sok távoli számítógépen
Ez a példa több mint száz számítógépen futtat szkriptet. A helyi számítógépre gyakorolt hatás minimalizálása érdekében minden számítógéphez csatlakozik, elindítja a szkriptet, majd leválasztja az egyes számítógépeket. A szkript továbbra is fut a leválasztott munkamenetekben.
$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
A parancs a szkript futtatására használja Invoke-Command
. A ComputerName paraméter értéke egy Get-Content
olyan parancs, amely lekéri a távoli számítógépek nevét egy szövegfájlból. Az InDisconnectedSession paraméter leválasztja a munkameneteket, amint elindítja a parancsot. A FilePath paraméter értéke az egyes számítógépeken futó szkriptInvoke-Command
.
A SessionOption értéke egy kivonattábla. Az OutputBufferingMode érték értéke Drop
12 óra, az IdleTimeout érték pedig 12 óra.
A leválasztott munkamenetekben futó parancsok és szkriptek eredményeinek lekéréséhez használja a Receive-PSSession
parancsmagot.
19. példa: Parancs futtatása távoli számítógépen SSH használatával
Ez a példa bemutatja, hogyan futtathat parancsokat távoli számítógépen a Secure Shell (SSH) használatával. Ha az SSH úgy van konfigurálva a távoli számítógépen, hogy jelszavakat kérjen, akkor egy jelszókérést fog kapni. Ellenkező esetben SSH-kulcsalapú felhasználói hitelesítést kell használnia.
Invoke-Command -HostName UserA@LinuxServer01 -ScriptBlock { Get-MailBox * }
20. példa: Parancs futtatása távoli számítógépen SSH használatával és felhasználói hitelesítési kulcs megadása
Ez a példa bemutatja, hogyan futtathat egy parancsot egy távoli számítógépen SSH használatával, és hogyan adhat meg egy kulcsfájlt a felhasználói hitelesítéshez. A rendszer csak akkor kéri a jelszót, ha a kulcshitelesítés meghiúsul, és a távoli számítógép úgy van konfigurálva, hogy engedélyezze az alapszintű jelszóhitelesítést.
$parameters = @{
HostName = 'UserA@LinuxServer01'
ScriptBlock = { Get-MailBox * }
KeyFilePath = '/UserA/UserAKey_rsa'
}
Invoke-Command
21. példa: Szkriptfájl futtatása több távoli számítógépen SSH használatával feladatként
Ez a példa bemutatja, hogyan futtathat szkriptfájlt több távoli számítógépen az SSH és az SSH Csatlakozás ion paraméterkészlet használatával. Az SSH Csatlakozás ion paraméter az egyes számítógépek kapcsolati adatait tartalmazó kivonattáblák tömbjét használja. Ez a példa megköveteli, hogy a cél távoli számítógépek SSH-t konfigurálva támogassák a kulcsalapú felhasználói hitelesítést.
$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
22. példa: Csatlakozás távoli SSH-munkamenetbe SSH-beállítások használatával
Ez a példa bemutatja, hogyan futtathat szkriptfájlt távoli Linux-alapú gépen SSH-beállítások használatával. A Beállítások paraméter azokat az értékeket kivonatolhatja, amelyeket a rendszer a távoli rendszerrel létesített kapcsolat létesített alapjául szolgáló ssh
parancsnak ad át beállításokként.
$options = @{
Port=22
User = 'UserB'
Host = 'LinuxServer5'
}
$results = Invoke-Command -FilePath c:\Scripts\CollectEvents.ps1 -KeyFilePath '/Users/UserB/id_rsa' -Options $options
Paraméterek
-AllowRedirection
Lehetővé teszi a kapcsolat átirányítását egy alternatív egységes erőforrás-azonosítóra (URI).
A Csatlakozás ionURI paraméter használatakor a távoli cél egy utasítást adhat vissza egy másik URI-ra való átirányításhoz. A PowerShell alapértelmezés szerint nem irányítja át a kapcsolatokat, de ezzel a paramétersel engedélyezheti a kapcsolat átirányítását.
A Maximális Csatlakozás ionRedirectionCount munkamenet beállításértékének módosításával azt is korlátozhatja, hogy a rendszer hányszor irányítsa át a kapcsolatot. Használja a parancsmag MaximumRedirection paraméterétNew-PSSessionOption
, vagy állítsa be a beállításváltozó Maximum Csatlakozás ionRedirectionCount tulajdonságát$PSSessionOption
. Az alapértelmezett érték 5.
Type: | SwitchParameter |
Position: | Named |
Default value: | False |
Required: | False |
Accept pipeline input: | False |
Accept wildcard characters: | False |
-ApplicationName
Megadja a kapcsolati URI alkalmazásnév-szegmensét. Ezzel a paraméterrel adhatja meg az alkalmazás nevét, ha nem használja a Csatlakozás ionURI paramétert a parancsban.
Az alapértelmezett érték a helyi számítógépen található $PSSessionApplicationName
beállítási változó értéke. Ha ez a beállítási változó nincs definiálva, az alapértelmezett érték a WSMAN. Ez az érték a legtöbb felhasználáshoz megfelelő. További információ: about_Preference_Variables.
A WinRM szolgáltatás az alkalmazás nevével választ ki egy figyelőt a kapcsolatkérés kiszolgálásához. A paraméter értékének meg kell egyeznie a távoli számítógépen lévő figyelő URLPrefix tulajdonságának értékével.
Type: | String |
Position: | Named |
Default value: | $PSSessionApplicationName if set on the local computer, otherwise WSMAN |
Required: | False |
Accept pipeline input: | True |
Accept wildcard characters: | False |
-ArgumentList
Megadja a szkriptblokk paramétereinek értékeit. A szkriptblokk paramétereit az Argumentumlista tömbértékének pozíciója adja át. Ezt tömbplatformnak nevezzük. Az Argumentumlista működésével kapcsolatos további információkért lásd: about_Splatting.
Type: | Object[] |
Aliases: | Args |
Position: | Named |
Default value: | None |
Required: | False |
Accept pipeline input: | False |
Accept wildcard characters: | False |
-AsJob
Azt jelzi, hogy ez a parancsmag háttérfeladatként futtatja a parancsot egy távoli számítógépen. Ezzel a paramétersel olyan parancsokat futtathat, amelyek végrehajtása sok időt vesz igénybe.
Az AsJob paraméter használatakor a parancs egy, a feladatot jelképező objektumot ad vissza, majd megjeleníti a parancssort. Folytathatja a munkát a munkamenetben, amíg a feladat befejeződik. A feladat kezeléséhez használja a *-Job
parancsmagokat. A feladat eredményeinek lekéréséhez használja a Receive-Job
parancsmagot.
Az AsJob paraméter hasonlít a Invoke-Command
parancsmag távoli futtatásához Start-Job
. Az AsJob használatával azonban a feladat a helyi számítógépen jön létre, annak ellenére, hogy a feladat távoli számítógépen fut. A távoli feladat eredményei automatikusan visszakerülnek a helyi számítógépre.
További információ a PowerShell háttérfeladatairól: about_Jobs és about_Remote_Jobs.
Type: | SwitchParameter |
Position: | Named |
Default value: | False |
Required: | False |
Accept pipeline input: | False |
Accept wildcard characters: | False |
-Authentication
Megadja a felhasználó hitelesítő adatainak hitelesítéséhez használt mechanizmust. A CredSSP-hitelesítés csak a Windows Vista, a Windows Server 2008 és a Windows operációs rendszer újabb verzióiban érhető el.
A paraméter elfogadható értékei a következők:
- Alapértelmezett
- Alap
- Credssp
- Digest
- Kerberos
- Tárgyalni
- NegotiateWithImplicitCredential
Az alapértelmezett érték az Alapértelmezett érték.
A paraméter értékeivel kapcsolatos további információkért lásd : AuthenticationMechanism Enumeration.
Figyelemfelhívás
A hitelesítő adatok biztonsági támogatási szolgáltatójának (CredSSP) hitelesítése, amelyben a felhasználó hitelesítő adatai átadva vannak egy hitelesítendő távoli számítógépnek, olyan parancsokhoz készült, amelyek több erőforráson is hitelesítést igényelnek, például távoli hálózati megosztáshoz való hozzáféréshez. Ez a mechanizmus növeli a távoli művelet biztonsági kockázatát. Ha a távoli számítógép biztonsága sérül, a neki átadott hitelesítő adatokkal szabályozható a hálózati munkamenet. További információ: Hitelesítő adatok biztonsági támogatási szolgáltatója.
Type: | AuthenticationMechanism |
Accepted values: | Basic, Default, Credssp, Digest, Kerberos, Negotiate, NegotiateWithImplicitCredential |
Position: | Named |
Default value: | Default |
Required: | False |
Accept pipeline input: | False |
Accept wildcard characters: | False |
-CertificateThumbprint
Megadja egy olyan felhasználói fiók digitális nyilvános kulcsú tanúsítványát (X509), amely jogosult csatlakozni a leválasztott munkamenethez. Adja meg a tanúsítvány ujjlenyomatát.
A tanúsítványok az ügyféltanúsítvány-alapú hitelesítésben használatosak. Ezek csak helyi felhasználói fiókokra képezhetők le, és nem működnek tartományi fiókokkal.
Tanúsítvány ujjlenyomatának lekéréséhez használjon egy vagy Get-ChildItem
több Get-Item
parancsot a PowerShell Cert: meghajtón.
Type: | String |
Position: | Named |
Default value: | None |
Required: | False |
Accept pipeline input: | False |
Accept wildcard characters: | False |
-ComputerName
Meghatározza azokat a számítógépeket, amelyeken a parancs fut. Alapértelmezés szerint a helyi számítógép.
A ComputerName paraméter használatakor a PowerShell létrehoz egy ideiglenes kapcsolatot, amely csak a megadott parancs futtatására szolgál, majd bezárul. Ha állandó kapcsolatra van szüksége, használja a Munkamenet paramétert.
Írja be egy vagy több számítógép NETBIOS-nevét, IP-címét vagy teljes tartománynevét egy vesszővel tagolt listában. A helyi számítógép megadásához írja be a számítógép nevét, a localhost vagy a pont (.
).
Ha IP-címet szeretne használni a ComputerName értékben, a parancsnak tartalmaznia kell a hitelesítő adatot. A számítógépet https-átvitelre kell konfigurálni, vagy a távoli számítógép IP-címét fel kell venni a helyi számítógép WinRM TrustedHosts listájába. A Számítógép hozzáadása a megbízható gazdagépek listájához című témakörben olvashat arról, hogyan adhat hozzá számítógépnevet a Megbízható gazdagépek listájához.
A Windows Vista és a Windows operációs rendszer újabb verzióiban ahhoz, hogy a helyi számítógép szerepeljen a ComputerName értékben, a PowerShellt a Futtatás rendszergazdaként lehetőséggel kell futtatnia.
Type: | String[] |
Aliases: | Cn |
Position: | 0 |
Default value: | Local computer |
Required: | False |
Accept pipeline input: | False |
Accept wildcard characters: | False |
-ConfigurationName
Megadja az új PSSession-hez használt munkamenet-konfigurációt.
Adja meg a konfiguráció nevét vagy a munkamenet-konfiguráció teljes erőforrás-URI-címét. Ha csak a konfiguráció nevét adja meg, a rendszer a következő séma URI-ját előpendálta: http://schemas.microsoft.com/PowerShell
.
Az SSH-val való használat esetén ez a paraméter határozza meg a célon használni kívánt alrendszert a megadott módon sshd_config
. Az SSH alapértelmezett értéke az powershell
alrendszer.
Egy munkamenet munkamenet-konfigurációja a távoli számítógépen található. Ha a megadott munkamenet-konfiguráció nem létezik a távoli számítógépen, a parancs meghiúsul.
Az alapértelmezett érték a helyi számítógépen található $PSSessionConfigurationName
beállítási változó értéke. Ha ez a beállítási változó nincs beállítva, az alapértelmezett a Microsoft.PowerShell. További információ: about_Preference_Variables.
Type: | String |
Position: | Named |
Default value: | $PSSessionConfigurationName if set on the local computer, otherwise Microsoft.PowerShell |
Required: | False |
Accept pipeline input: | True |
Accept wildcard characters: | False |
-ConnectingTimeout
Ezredmásodpercben adja meg, hogy a kezdeti SSH-kapcsolat befejeződjön. Ha a kapcsolat nem fejeződik be a megadott időn belül, hibaüzenet jelenik meg.
Ez a paraméter a PowerShell 7.2-ben lett bevezetve
Type: | Int32 |
Position: | Named |
Default value: | Unlimited |
Required: | False |
Accept pipeline input: | False |
Accept wildcard characters: | False |
-ConnectionUri
Egy egységes erőforrás-azonosítót (URI) ad meg, amely meghatározza a munkamenet kapcsolati végpontját. Az URI-nak teljes mértékben minősítettnek kell lennie.
A sztring formátuma a következő:
<Transport>://<ComputerName>:<Port>/<ApplicationName>
Az alapértelmezett érték a következő:
http://localhost:5985/WSMAN
Ha nem ad meg kapcsolati URI-t, a UseSSL és a Port paraméterekkel megadhatja a kapcsolat URI-értékeit.
Az URI átviteli szegmensének érvényes értékei a HTTP és a HTTPS. Ha egy átviteli szegmenshez tartozó kapcsolati URI-t ad meg, de nem ad meg portot, a munkamenet a szabványportokkal jön létre: HTTP-hez 80, HTTPS-hez pedig 443. A PowerShell-újraküldés alapértelmezett portjának használatához adja meg az 5985-ös portot a HTTP-hez, a HTTPS-hez pedig az 5986-os portot.
Ha a célszámítógép átirányítja a kapcsolatot egy másik URI-ra, a PowerShell megakadályozza az átirányítást, hacsak nem használja az AllowRedirection paramétert a parancsban.
Type: | Uri[] |
Aliases: | URI, CU |
Position: | 0 |
Default value: | http://localhost:5985/WSMAN |
Required: | False |
Accept pipeline input: | False |
Accept wildcard characters: | False |
-ContainerId
Tárolóazonosítók tömbje.
Type: | String[] |
Position: | Named |
Default value: | None |
Required: | True |
Accept pipeline input: | True |
Accept wildcard characters: | False |
-Credential
A művelet végrehajtásához engedéllyel rendelkező felhasználói fiókot ad meg. Alapértelmezés szerint az aktuális felhasználó.
Írjon be egy felhasználónevet (például User01 vagy Domain01\User01), vagy írjon be egy PSCredential objektumot, amelyet a Get-Credential
parancsmag hoz létre. Ha beír egy felhasználónevet, a rendszer kéri a jelszó megadását.
A hitelesítő adatokat PSCredential objektum tárolja, a jelszót pedig SecureStringként tárolja a rendszer.
Feljegyzés
További információ a SecureString adatvédelemről: Mennyire biztonságos a SecureString?.
Type: | PSCredential |
Position: | Named |
Default value: | Current user |
Required: | False |
Accept pipeline input: | True |
Accept wildcard characters: | False |
-EnableNetworkAccess
Azt jelzi, hogy ez a parancsmag egy interaktív biztonsági jogkivonatot ad hozzá a visszacsatolási munkamenetekhez. Az interaktív jogkivonat segítségével parancsokat futtathat a visszacsatolási munkamenetben, amelyek adatokat kapnak más számítógépekről. Futtathat például egy parancsot a munkamenetben, amely XML-fájlokat másol egy távoli számítógépről a helyi számítógépre.
A visszacsatolási munkamenet olyan PSSession , amely ugyanahhoz a számítógéphez kapcsolódik és végződik. Visszacsatolási munkamenet létrehozásához hagyja ki a ComputerName paramétert, vagy állítsa az értékét pont (.
), localhost vagy a helyi számítógép nevére.
Alapértelmezés szerint a visszacsatolási munkamenetek hálózati jogkivonat használatával jönnek létre, ami nem feltétlenül biztosít elegendő engedélyt a távoli számítógépek hitelesítéséhez.
Az EnableNetworkAccess paraméter csak visszacsatolási munkamenetekben érvényes. Ha az EnableNetworkAccess szolgáltatást használja, amikor munkamenetet hoz létre egy távoli számítógépen, a parancs sikeres lesz, de a paraméter figyelmen kívül lesz hagyva.
A visszacsatolási munkamenetben a távelérést a hitelesítési paraméter CredSSP értékével engedélyezheti, amely a munkamenet hitelesítő adatait más számítógépekre delegálja.
A számítógép rosszindulatú hozzáférés elleni védelme érdekében az interaktív jogkivonatokkal rendelkező leválasztott visszacsatolási munkamenetek, amelyek az EnableNetworkAccess használatával lettek létrehozva, csak attól a számítógéptől csatlakoztathatók újra, amelyen a munkamenet létre lett hozva. A CredSSP-hitelesítést használó leválasztott munkamenetek újra csatlakoztathatók más számítógépekről. További információ: Disconnect-PSSession
.
Ezt a paramétert a PowerShell 3.0-ban vezettük be.
Type: | SwitchParameter |
Position: | Named |
Default value: | False |
Required: | False |
Accept pipeline input: | False |
Accept wildcard characters: | False |
-FilePath
Egy helyi szkriptet ad meg, amelyet ez a parancsmag egy vagy több távoli számítógépen futtat. Adja meg a szkript elérési útját és fájlnevét, vagy írja be a szkript elérési útját.Invoke-Command
A szkriptnek a helyi számítógépen vagy egy olyan könyvtárban kell lennie, amelyhez a helyi számítógép hozzáférhet. Az Argumentumlista használatával adja meg a szkript paramétereinek értékeit.
Ha ezt a paramétert használja, a PowerShell szkriptblokkmá alakítja a megadott szkriptfájl tartalmát, továbbítja a szkriptblokkot a távoli számítógépre, és a távoli számítógépen futtatja.
Type: | String |
Aliases: | PSPath |
Position: | 1 |
Default value: | None |
Required: | True |
Accept pipeline input: | False |
Accept wildcard characters: | False |
-HideComputerName
Azt jelzi, hogy ez a parancsmag kihagyja az egyes objektumok számítógépnevét a kimeneti kijelzőből. Alapértelmezés szerint az objektumot létrehozó számítógép neve jelenik meg a kijelzőn.
Ez a paraméter csak a kimeneti megjelenítésre van hatással. Ez nem módosítja az objektumot.
Type: | SwitchParameter |
Aliases: | HCN |
Position: | Named |
Default value: | False |
Required: | False |
Accept pipeline input: | False |
Accept wildcard characters: | False |
-HostName
Egy SSH-alapú kapcsolat számítógépneveinek tömbjét adja meg. Ez hasonló a ComputerName paraméterhez, azzal a kivétellel, hogy a távoli számítógéphez való kapcsolat A Windows WinRM helyett SSH használatával jön létre.
Ezt a paramétert a PowerShell 6.0-ban vezettük be.
Type: | String[] |
Position: | Named |
Default value: | None |
Required: | True |
Accept pipeline input: | False |
Accept wildcard characters: | False |
-InDisconnectedSession
Azt jelzi, hogy ez a parancsmag egy parancsot vagy szkriptet futtat egy leválasztott munkamenetben.
Az InDisconnectedSession paraméter Invoke-Command
használatakor minden távoli számítógépen létrehoz egy állandó munkamenetet, elindítja a ScriptBlock vagy a FilePath paraméter által megadott parancsot, majd leválasztja a munkamenetről. A parancsok továbbra is futnak a leválasztott munkamenetekben. Az InDisconnectedSession lehetővé teszi a parancsok futtatását a távoli munkamenetekhez való kapcsolat fenntartása nélkül. Mivel a munkamenet le van választva az eredmények visszaadása előtt, az InDisconnectedSession gondoskodik arról, hogy az összes parancseredmény visszakerüljön az újrakapcsolódott munkamenetbe a munkamenetek közötti megosztás helyett.
Az InDisconnectedSession nem használható a Munkamenet paraméterrel vagy az AsJob paraméterrel.
Az InDisconnectedSessiont használó parancsok egy PSSession objektumot adnak vissza, amely a leválasztott munkamenetet jelöli. Nem adnak vissza parancskimenetet. A leválasztott munkamenethez való csatlakozáshoz használja a Connect-PSSession
parancsmagokat.Receive-PSSession
A munkamenetben futtatott parancsok eredményeinek lekéréséhez használja a Receive-PSSession
parancsmagot. Ha leválasztott munkamenetben kimenetet generáló parancsokat szeretne futtatni, állítsa az OutputBufferingMode munkamenet beállítás értékét Drop értékre. Ha csatlakozni szeretne a leválasztott munkamenethez, állítsa be az inaktív időtúllépést a munkamenetben, hogy elegendő időt biztosítson a csatlakozásra a munkamenet törlése előtt.
A kimeneti pufferelési módot és az inaktív időtúllépést a SessionOption paraméterben vagy a $PSSessionOption
beállításváltozóban állíthatja be. További információ a munkamenet-beállításokról: lásd New-PSSessionOption
és about_Preference_Variables.
A Leválasztott munkamenetek funkcióval kapcsolatos további információkért lásd : about_Remote_Disconnected_Sessions.
Ezt a paramétert a PowerShell 3.0-ban vezettük be.
Type: | SwitchParameter |
Aliases: | Disconnected |
Position: | Named |
Default value: | False |
Required: | False |
Accept pipeline input: | False |
Accept wildcard characters: | False |
-InputObject
Megadja a parancs bemenetét. Adjon meg egy változót, amely tartalmazza az objektumokat, vagy írjon be egy parancsot vagy kifejezést, amely lekéri az objektumokat.
Az InputObject paraméter használatakor használja az $Input
automatikus változót a ScriptBlock paraméter értékében a bemeneti objektumok megjelenítéséhez.
Type: | PSObject |
Position: | Named |
Default value: | None |
Required: | False |
Accept pipeline input: | True |
Accept wildcard characters: | False |
-JobName
A háttérfeladat rövid nevét adja meg. A feladatok Job<n>
<n>
neve alapértelmezés szerint egy sorszám.
Ha egy parancsban a JobName paramétert használja, a parancs feladatként fut, és Invoke-Command
egy feladatobjektumot ad vissza, még akkor is, ha nem szerepel az AsJob a parancsban.
További információ a PowerShell háttérfeladatairól: about_Jobs.
Type: | String |
Position: | Named |
Default value: | Job<n> |
Required: | False |
Accept pipeline input: | False |
Accept wildcard characters: | False |
-KeyFilePath
Megadja a Secure Shell (SSH) által a felhasználók távoli számítógépen történő hitelesítéséhez használt kulcsfájl elérési útját.
Az SSH lehetővé teszi a felhasználói hitelesítés magán- és nyilvános kulcsokkal történő végrehajtását az alapszintű jelszóhitelesítés alternatívájaként. Ha a távoli számítógép kulcshitelesítésre van konfigurálva, akkor ez a paraméter a felhasználót azonosító kulcs megadására használható.
Ezt a paramétert a PowerShell 6.0-ban vezettük be.
Type: | String |
Aliases: | IdentityFilePath |
Position: | Named |
Default value: | None |
Required: | False |
Accept pipeline input: | False |
Accept wildcard characters: | False |
-NoNewScope
Azt jelzi, hogy ez a parancsmag a megadott parancsot futtatja az aktuális hatókörben. Alapértelmezés szerint Invoke-Command
a parancsokat a saját hatókörükben futtatja.
Ez a paraméter csak az aktuális munkamenetben futtatott parancsokban érvényes, vagyis a ComputerName és a Munkamenet paramétereket kihagyó parancsokban.
Ezt a paramétert a PowerShell 3.0-ban vezettük be.
Type: | SwitchParameter |
Position: | Named |
Default value: | False |
Required: | False |
Accept pipeline input: | False |
Accept wildcard characters: | False |
-Options
A távoli SSH-alapú munkamenethez való csatlakozáskor használt SSH-beállítások kivonatát adja meg. A lehetséges lehetőségek az ssh-parancs Unix-alapú verziója által támogatott értékek.
A paraméterek által explicit módon átadott értékek elsőbbséget élveznek a Beállítások kivonatolóban átadott értékekkel szemben. A Port paraméterrel például felülbírálhatja Port
a Beállítások kivonatolóban átadott kulcs-érték párokat.
Ez a paraméter a PowerShell 7.3-ban lett hozzáadva.
Type: | Hashtable |
Position: | Named |
Default value: | None |
Required: | False |
Accept pipeline input: | False |
Accept wildcard characters: | False |
-Port
A parancshoz használt hálózati portot adja meg a távoli számítógépen. Távoli számítógéphez való csatlakozáshoz a távoli számítógépnek a kapcsolat által használt portot kell figyelnie. Az alapértelmezett portok a következők: 5985 (WINRM-port HTTP-hez) és 5986 (WinRM-port HTTPS-hez).
Alternatív port használata előtt konfigurálja a WinRM-figyelőt a távoli számítógépen az adott port figyelésére. A figyelő konfigurálásához írja be a következő két parancsot a PowerShell-parancssorba:
Remove-Item -Path WSMan:\Localhost\listener\listener* -Recurse
New-Item -Path WSMan:\Localhost\listener -Transport http -Address * -Port \<port-number\>
Csak akkor használja a Port paramétert, ha kötelező. A parancsban beállított port az összes olyan számítógépre vagy munkamenetre vonatkozik, amelyen a parancs fut. Egy másik portbeállítás megakadályozhatja, hogy a parancs minden számítógépen fusson.
Type: | Int32 |
Position: | Named |
Default value: | None |
Required: | False |
Accept pipeline input: | False |
Accept wildcard characters: | False |
-RemoteDebug
A meghívott parancs hibakeresési módban való futtatására szolgál a távoli PowerShell-munkamenetben.
Type: | SwitchParameter |
Position: | Named |
Default value: | False |
Required: | False |
Accept pipeline input: | False |
Accept wildcard characters: | False |
-RunAsAdministrator
Azt jelzi, hogy ez a parancsmag egy parancsot hív meg Rendszergazda istratorként.
Type: | SwitchParameter |
Position: | Named |
Default value: | False |
Required: | False |
Accept pipeline input: | False |
Accept wildcard characters: | False |
-ScriptBlock
Megadja a futtatandó parancsokat. A parancsokat kapcsos zárójelekbe ({ }
) ágyazva hozzon létre egy szkriptblokkot. Invoke-Command
Ha távolról futtat egy parancsot, a parancsban szereplő változók kiértékelése a távoli számítógépen történik.
Feljegyzés
A szkriptblokk paraméterei csak pozíció alapján adhatóak át az Argumentumlistából. A kapcsolóparaméterek pozíció szerint nem adhatók át. Ha olyan paraméterre van szüksége, amely a SwitchParameter típushoz hasonlóan viselkedik, használjon inkább logikai típust.
Type: | ScriptBlock |
Aliases: | Command |
Position: | 0 |
Default value: | None |
Required: | True |
Accept pipeline input: | False |
Accept wildcard characters: | False |
-Session
Olyan munkamenet-tömböt határoz meg, amelyben ez a parancsmag futtatja a parancsot. Adjon meg egy olyan változót, amely PSSession objektumokat tartalmaz, vagy olyan parancsot, amely létrehozza vagy lekéri a PSSession objektumokat, például egy vagy Get-PSSession
egy New-PSSession
parancsot.
PSSession létrehozásakor a PowerShell állandó kapcsolatot létesít a távoli számítógéppel. PsSession használatával több kapcsolódó parancsot futtathat, amelyek adatokat osztanak meg. Egyetlen parancs vagy nem kapcsolódó parancsok sorozatának futtatásához használja a ComputerName paramétert. További információ: about_PSSessions.
Type: | PSSession[] |
Position: | 0 |
Default value: | None |
Required: | False |
Accept pipeline input: | False |
Accept wildcard characters: | False |
-SessionName
Egy leválasztott munkamenet rövid nevét adja meg. A névvel hivatkozhat a munkamenetre a következő parancsokban, például egy Get-PSSession
parancsban. Ez a paraméter csak az InDisconnectedSession paraméterrel érvényes.
Ezt a paramétert a PowerShell 3.0-ban vezettük be.
Type: | String[] |
Position: | Named |
Default value: | None |
Required: | False |
Accept pipeline input: | False |
Accept wildcard characters: | False |
-SessionOption
A munkamenet speciális beállításait adja meg. Adjon meg egy SessionOption objektumot, például a parancsmaggal New-PSSessionOption
létrehozott objektumot, vagy egy kivonattáblát, amelyben a kulcsok munkamenet-beállításnevek, az értékek pedig munkamenet-beállításértékek.
Feljegyzés
Ha kivonatolót ad meg a SessionOptionhoz, a PowerShell a kivonatolót System.Management.Autiomation.Remoting.PSSessionOption objektummá alakítja. A kivonatolóban megadott kulcsok értékei az objektum megfelelő tulajdonságára kerülnek. Ez a hívástól New-PSSessionOption
eltérően viselkedik. Például az időtúllépési tulajdonságok System.TimeSpan értékei (például az IdleTimeout) az ezredmásodperc helyett egy egész szám értékét osztásjelekké alakítják.
További információ a PSSessionOption objektumról és tulajdonságairól: PSSessionOption
A beállítások alapértelmezett értékeit a $PSSessionOption
beállítási változó értéke határozza meg, ha be van állítva. Ellenkező esetben az alapértelmezett értékeket a munkamenet-konfigurációban megadott beállítások állítják be.
A munkamenet-beállításértékek elsőbbséget élveznek a beállításváltozóban és a $PSSessionOption
munkamenet-konfigurációban beállított munkamenetek alapértelmezett értékeivel szemben. A munkamenet-konfigurációban beállított maximális értékek, kvóták és korlátok azonban nem elsőbbséget élveznek.
Az alapértelmezett értékeket tartalmazó munkamenet-beállítások leírását lásd: New-PSSessionOption
. A beállítási változóval kapcsolatos információkért $PSSessionOption
lásd : about_Preference_Variables. A munkamenet-konfigurációkkal kapcsolatos további tudnivalókért tekintse meg az about_Session_Configuration_Files című témakört.
Type: | PSSessionOption |
Position: | Named |
Default value: | None |
Required: | False |
Accept pipeline input: | False |
Accept wildcard characters: | False |
-SSHConnection
Ez a paraméter kivonattáblák tömbjét használja, ahol minden kivonattábla egy vagy több kapcsolati paramétert tartalmaz a Secure Shell(SSH) kapcsolat létrehozásához. Az SSH Csatlakozás ion paraméter több munkamenet létrehozásához is hasznos, ha minden munkamenethez eltérő kapcsolati információra van szükség.
A kivonatolónak a következő tagjai vannak:
- ComputerName (vagy HostName)
- Port
- UserName
- KeyFilePath (vagy IdentityFilePath)
A ComputerName (vagy HostName) az egyetlen kulcs-érték pár, amelyre szükség van.
Ezt a paramétert a PowerShell 6.0-ban vezettük be.
Type: | Hashtable[] |
Position: | Named |
Default value: | None |
Required: | True |
Accept pipeline input: | False |
Accept wildcard characters: | False |
-SSHTransport
Azt jelzi, hogy a távoli kapcsolat a Secure Shell (SSH) használatával jön létre.
A PowerShell alapértelmezés szerint a Windows WinRM használatával csatlakozik egy távoli számítógéphez. Ez a kapcsoló arra kényszeríti a PowerShellt, hogy használja a HostName paramétert egy SSH-alapú távoli kapcsolat létrehozásához.
Ezt a paramétert a PowerShell 6.0-ban vezettük be.
Type: | SwitchParameter |
Accepted values: | true |
Position: | Named |
Default value: | False |
Required: | False |
Accept pipeline input: | False |
Accept wildcard characters: | False |
-Subsystem
Az új PSSession-hez használt SSH-alrendszert adja meg.
Ez határozza meg a célon a sshd_config definiált alrendszert. Az alrendszer előre definiált paraméterekkel elindítja a PowerShell egy adott verzióját. Ha a megadott alrendszer nem létezik a távoli számítógépen, a parancs meghiúsul.
Ha ezt a paramétert nem használja, az alapértelmezett az powershell
alrendszer.
Type: | String |
Position: | Named |
Default value: | powershell |
Required: | False |
Accept pipeline input: | False |
Accept wildcard characters: | False |
-ThrottleLimit
Megadja a parancs futtatásához létrehozható egyidejű kapcsolatok maximális számát. Ha kihagyja ezt a paramétert, vagy 0 értéket ad meg, a rendszer az alapértelmezett 32 értéket használja.
A szabályozás korlátja csak az aktuális parancsra vonatkozik, a munkamenetre és a számítógépre nem.
Type: | Int32 |
Position: | Named |
Default value: | 32 |
Required: | False |
Accept pipeline input: | False |
Accept wildcard characters: | False |
-UserName
Megadja a távoli számítógépen parancs futtatásához használt fiók felhasználónevét. A felhasználói hitelesítési módszer attól függ, hogy a Secure Shell (SSH) hogyan van konfigurálva a távoli számítógépen.
Ha az SSH alapszintű jelszóhitelesítésre van konfigurálva, a rendszer kérni fogja a felhasználói jelszót.
Ha az SSH kulcsalapú felhasználói hitelesítésre van konfigurálva, akkor a KeyFilePath paraméterrel meg lehet adni egy kulcsfájl elérési útját, és nem történik jelszókérés. Ha az ügyfélfelhasználói kulcsfájl egy ismert SSH-helyen található, akkor a KeyFilePath paraméterre nincs szükség a kulcsalapú hitelesítéshez, és a felhasználó hitelesítése automatikusan megtörténik a felhasználónév alapján. További információkért tekintse meg a platform SSH-dokumentációját a kulcsalapú felhasználói hitelesítésről.
Ez nem kötelező paraméter. Ha a UserName paraméter nincs megadva, akkor a rendszer az aktuális bejelentkezett felhasználónevet használja a kapcsolathoz.
Ezt a paramétert a PowerShell 6.0-ban vezettük be.
Type: | String |
Position: | Named |
Default value: | None |
Required: | False |
Accept pipeline input: | False |
Accept wildcard characters: | False |
-UseSSL
Azt jelzi, hogy ez a parancsmag a Secure Sockets Layer (SSL) protokoll használatával hoz létre kapcsolatot a távoli számítógéppel. Alapértelmezés szerint az SSL nem használatos.
A WS-Management a hálózaton keresztül továbbított összes PowerShell-tartalmat titkosítja. A UseSSL paraméter egy további védelem, amely HTTP helyett HTTPS-kapcsolaton keresztül küldi az adatokat.
Ha ezt a paramétert használja, de az SSL nem érhető el a parancshoz használt porton, a parancs meghiúsul.
Type: | SwitchParameter |
Position: | Named |
Default value: | False |
Required: | False |
Accept pipeline input: | False |
Accept wildcard characters: | False |
-VMId
Virtuális gépek azonosítóinak tömbje.
Type: | Guid[] |
Aliases: | VMGuid |
Position: | 0 |
Default value: | None |
Required: | True |
Accept pipeline input: | True |
Accept wildcard characters: | False |
-VMName
A virtuális gépek nevének tömbje.
Type: | String[] |
Position: | Named |
Default value: | None |
Required: | True |
Accept pipeline input: | True |
Accept wildcard characters: | False |
Bevitelek
Parancsokat parancsokat futtathat egy szkriptblokkban a következőre Invoke-Command
: . Használja az $Input
automatikus változót a parancs bemeneti objektumainak megjelenítéséhez.
Kimenetek
System.Management.Automation.PSRemotingJob
Ha az AsJob paramétert használja, ez a parancsmag egy feladatobjektumot ad vissza.
Ha az InDisconnectedSession paramétert használja, ez a parancsmag egy PSSession objektumot ad vissza.
Ez a parancsmag alapértelmezés szerint a meghívott parancs kimenetét adja vissza, amely a ScriptBlock paraméter értéke.
Jegyzetek
A PowerShell a következő aliasokat Invoke-Command
tartalmazza:
- Minden platform:
icm
A Windows Vista és a Windows operációs rendszer újabb verzióiban a Parancs helyi számítógépen való futtatásához Invoke-Command
a PowerShellt a Futtatás rendszergazdaként lehetőséggel kell futtatnia.
Ha több számítógépen futtat parancsokat, a PowerShell abban a sorrendben csatlakozik a számítógépekhez, amelyben azok megjelennek a listában. A parancs kimenete azonban a távoli számítógépektől kapott sorrendben jelenik meg, ami eltérő lehet.
A futtatott parancsból Invoke-Command
eredő hibák szerepelnek a parancs eredményei között.
A helyi parancsok hibáit megszüntető hibák távoli parancsokban nem végződő hibákként lesznek kezelve. Ez a stratégia gondoskodik arról, hogy az egyik számítógépen előforduló hibák megszüntetése ne zárja be a parancsot az összes számítógépen, amelyen fut. Ezt a gyakorlatot akkor is alkalmazzák, ha egy távoli parancsot egyetlen számítógépen futtatnak.
Ha a távoli számítógép nem olyan tartományban van, amelyet a helyi számítógép megbízik, előfordulhat, hogy a számítógép nem tudja hitelesíteni a felhasználó hitelesítő adatait. Ha hozzá szeretné adni a távoli számítógépet a WS-Management megbízható gazdagépeinek listájához, használja a következő parancsot a WSMAN
szolgáltatóban, ahol <Remote-Computer-Name>
a távoli számítógép neve szerepel:
Set-Item -Path WSMan:\Localhost\Client\TrustedHosts -Value \<Remote-Computer-Name\>
Ha leválaszt egy PSSessiont az InDisconnectedSession paraméterrel, a munkamenet állapota megszakad , a rendelkezésre állás pedig Nincs. Az Állapot tulajdonság értéke az aktuális munkamenethez viszonyítva van. A leválasztott érték azt jelenti, hogy a PSSession nincs csatlakoztatva az aktuális munkamenethez. Ez azonban nem jelenti azt, hogy a PSSession leválasztva van az összes munkamenetről. Lehet, hogy egy másik munkamenethez csatlakozik. Annak megállapításához, hogy csatlakozhat-e a munkamenethez, vagy újracsatlakozhat-e, használja a Rendelkezésre állás tulajdonságot .
A Nincs rendelkezésre állás értéke azt jelzi, hogy csatlakozhat a munkamenethez. A Foglalt érték azt jelzi, hogy nem tud csatlakozni a PSSessionhoz, mert egy másik munkamenethez van csatlakoztatva. A munkamenetek State tulajdonságának értékeiről további információt a RunspaceState-ben talál. A munkamenetek rendelkezésre állási tulajdonságának értékeiről további információt a RunspaceAvailability című témakörben talál.
A HostName és az SSH Csatlakozás ion paraméterek a PowerShell 6.0-val kezdődtek. A rendszer hozzáadta őket, hogy a Secure Shell (SSH) alapján biztosítsa a PowerShell-remotálást. A PowerShell és az SSH több platformon (Windows, Linux, macOS) támogatott, és a PowerShell-remoting ezeken a platformokon működik, ahol a PowerShell és az SSH telepítve és konfigurálva van. Ez eltér az előző Windows rendszertől, és csak a WinRM-en alapuló átnevezésről van szó, és a WinRM számos konkrét funkciója és korlátozása nem érvényes. A WinRM-alapú kvóták, a munkamenet-beállítások, az egyéni végpontkonfiguráció és a leválasztási/újracsatlakozási funkciók jelenleg nem támogatottak. A PowerShell SSH-remoting beállításával kapcsolatos további információkért lásd : PowerShell Remoting Over SSH.
A ssh
végrehajtható a következő forrásokból szerzi be a konfigurációs adatokat a következő sorrendben:
- parancssori beállítások
- felhasználó konfigurációs fájlja (~/.ssh/config)
- rendszerszintű konfigurációs fájl (/etc/ssh/ssh_config)
A következő parancsmagparaméterek lesznek leképezve a paraméterekre és a beállításokra ssh
:
Parancsmag paramétere | ssh paraméter | egyenértékű ssh -o lehetőség |
---|---|---|
-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> |
A paraméterek által explicit módon átadott értékek elsőbbséget élveznek a Beállítások kivonatolóban átadott értékekkel szemben. További információ a fájlokról ssh_config
: ssh_config(5).
Kapcsolódó hivatkozások
Visszajelzés
https://aka.ms/ContentUserFeedback.
Hamarosan elérhető: 2024-ben fokozatosan kivezetjük a GitHub-problémákat a tartalom visszajelzési mechanizmusaként, és lecseréljük egy új visszajelzési rendszerre. További információ:Visszajelzés küldése és megtekintése a következőhöz: