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 $jReceive-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-Commandhaszná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-CommandA 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-ChildItemElé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-CommandEgy 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-PSSessionPSSession 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-PSSessionOptionelté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

ScriptBlock

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.

PSSession

Ha az InDisconnectedSession paramétert használja, ez a parancsmag egy PSSession objektumot ad vissza.

Object

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-Commandtartalmazza:

  • 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:

  1. parancssori beállítások
  2. felhasználó konfigurációs fájlja (~/.ssh/config)
  3. 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).