Freigeben über


Invoke-Command

Führt Befehle auf lokalen Computern und Remotecomputern aus.

Syntax

InProcess (Standardwert)

Invoke-Command
    [-ScriptBlock] <ScriptBlock>
    [-StrictMode <Version>]
    [-NoNewScope]
    [-InputObject <PSObject>]
    [-ArgumentList <Object[]>]
    [<CommonParameters>]

FilePathRunspace

Invoke-Command
    [[-Session] <PSSession[]>]
    [-FilePath] <String>
    [-ThrottleLimit <Int32>]
    [-AsJob]
    [-HideComputerName]
    [-JobName <String>]
    [-RemoteDebug]
    [-InputObject <PSObject>]
    [-ArgumentList <Object[]>]
    [<CommonParameters>]

Session

Invoke-Command
    [[-Session] <PSSession[]>]
    [-ScriptBlock] <ScriptBlock>
    [-ThrottleLimit <Int32>]
    [-AsJob]
    [-HideComputerName]
    [-JobName <String>]
    [-RemoteDebug]
    [-InputObject <PSObject>]
    [-ArgumentList <Object[]>]
    [<CommonParameters>]

FilePathComputerName

Invoke-Command
    [[-ComputerName] <String[]>]
    [-FilePath] <String>
    [-Credential <PSCredential>]
    [-Port <Int32>]
    [-UseSSL]
    [-ConfigurationName <String>]
    [-ApplicationName <String>]
    [-ThrottleLimit <Int32>]
    [-AsJob]
    [-InDisconnectedSession]
    [-SessionName <String[]>]
    [-HideComputerName]
    [-JobName <String>]
    [-SessionOption <PSSessionOption>]
    [-Authentication <AuthenticationMechanism>]
    [-EnableNetworkAccess]
    [-RemoteDebug]
    [-InputObject <PSObject>]
    [-ArgumentList <Object[]>]
    [<CommonParameters>]

ComputerName

Invoke-Command
    [[-ComputerName] <String[]>]
    [-ScriptBlock] <ScriptBlock>
    [-Credential <PSCredential>]
    [-Port <Int32>]
    [-UseSSL]
    [-ConfigurationName <String>]
    [-ApplicationName <String>]
    [-ThrottleLimit <Int32>]
    [-AsJob]
    [-InDisconnectedSession]
    [-SessionName <String[]>]
    [-HideComputerName]
    [-JobName <String>]
    [-SessionOption <PSSessionOption>]
    [-Authentication <AuthenticationMechanism>]
    [-EnableNetworkAccess]
    [-RemoteDebug]
    [-InputObject <PSObject>]
    [-ArgumentList <Object[]>]
    [-CertificateThumbprint <String>]
    [<CommonParameters>]

Uri

Invoke-Command
    [[-ConnectionUri] <Uri[]>]
    [-ScriptBlock] <ScriptBlock>
    [-Credential <PSCredential>]
    [-ConfigurationName <String>]
    [-ThrottleLimit <Int32>]
    [-AsJob]
    [-InDisconnectedSession]
    [-HideComputerName]
    [-JobName <String>]
    [-AllowRedirection]
    [-SessionOption <PSSessionOption>]
    [-Authentication <AuthenticationMechanism>]
    [-EnableNetworkAccess]
    [-RemoteDebug]
    [-InputObject <PSObject>]
    [-ArgumentList <Object[]>]
    [-CertificateThumbprint <String>]
    [<CommonParameters>]

FilePathUri

Invoke-Command
    [[-ConnectionUri] <Uri[]>]
    [-FilePath] <String>
    [-Credential <PSCredential>]
    [-ConfigurationName <String>]
    [-ThrottleLimit <Int32>]
    [-AsJob]
    [-InDisconnectedSession]
    [-HideComputerName]
    [-JobName <String>]
    [-AllowRedirection]
    [-SessionOption <PSSessionOption>]
    [-Authentication <AuthenticationMechanism>]
    [-EnableNetworkAccess]
    [-RemoteDebug]
    [-InputObject <PSObject>]
    [-ArgumentList <Object[]>]
    [<CommonParameters>]

VMId

Invoke-Command
    [-ScriptBlock] <ScriptBlock>
    [-VMId] <Guid[]>
    -Credential <PSCredential>
    [-ConfigurationName <String>]
    [-ThrottleLimit <Int32>]
    [-AsJob]
    [-HideComputerName]
    [-RemoteDebug]
    [-InputObject <PSObject>]
    [-ArgumentList <Object[]>]
    [<CommonParameters>]

VMName

Invoke-Command
    [-ScriptBlock] <ScriptBlock>
    -Credential <PSCredential>
    -VMName <String[]>
    [-ConfigurationName <String>]
    [-ThrottleLimit <Int32>]
    [-AsJob]
    [-HideComputerName]
    [-RemoteDebug]
    [-InputObject <PSObject>]
    [-ArgumentList <Object[]>]
    [<CommonParameters>]

FilePathVMId

Invoke-Command
    [-FilePath] <String>
    [-VMId] <Guid[]>
    -Credential <PSCredential>
    [-ConfigurationName <String>]
    [-ThrottleLimit <Int32>]
    [-AsJob]
    [-HideComputerName]
    [-RemoteDebug]
    [-InputObject <PSObject>]
    [-ArgumentList <Object[]>]
    [<CommonParameters>]

FilePathVMName

Invoke-Command
    [-FilePath] <String>
    -Credential <PSCredential>
    -VMName <String[]>
    [-ConfigurationName <String>]
    [-ThrottleLimit <Int32>]
    [-AsJob]
    [-HideComputerName]
    [-RemoteDebug]
    [-InputObject <PSObject>]
    [-ArgumentList <Object[]>]
    [<CommonParameters>]

SSHHost

Invoke-Command
    [-ScriptBlock] <ScriptBlock>
    -HostName <String[]>
    [-Port <Int32>]
    [-AsJob]
    [-HideComputerName]
    [-JobName <String>]
    [-UserName <String>]
    [-KeyFilePath <String>]
    [-Subsystem <String>]
    [-ConnectingTimeout <Int32>]
    [-SSHTransport]
    [-Options <Hashtable>]
    [-RemoteDebug]
    [-InputObject <PSObject>]
    [-ArgumentList <Object[]>]
    [<CommonParameters>]

ContainerId

Invoke-Command
    [-ScriptBlock] <ScriptBlock>
    -ContainerId <String[]>
    [-ConfigurationName <String>]
    [-ThrottleLimit <Int32>]
    [-AsJob]
    [-HideComputerName]
    [-JobName <String>]
    [-RunAsAdministrator]
    [-RemoteDebug]
    [-InputObject <PSObject>]
    [-ArgumentList <Object[]>]
    [<CommonParameters>]

FilePathContainerId

Invoke-Command
    [-FilePath] <String>
    -ContainerId <String[]>
    [-ConfigurationName <String>]
    [-ThrottleLimit <Int32>]
    [-AsJob]
    [-HideComputerName]
    [-JobName <String>]
    [-RunAsAdministrator]
    [-RemoteDebug]
    [-InputObject <PSObject>]
    [-ArgumentList <Object[]>]
    [<CommonParameters>]

SSHHostHashParam

Invoke-Command
    [-ScriptBlock] <ScriptBlock>
    -SSHConnection <Hashtable[]>
    [-AsJob]
    [-HideComputerName]
    [-JobName <String>]
    [-RemoteDebug]
    [-InputObject <PSObject>]
    [-ArgumentList <Object[]>]
    [<CommonParameters>]

FilePathSSHHost

Invoke-Command
    [-FilePath] <String>
    -HostName <String[]>
    [-AsJob]
    [-HideComputerName]
    [-UserName <String>]
    [-KeyFilePath <String>]
    [-Subsystem <String>]
    [-ConnectingTimeout <Int32>]
    [-SSHTransport]
    [-Options <Hashtable>]
    [-RemoteDebug]
    [-InputObject <PSObject>]
    [-ArgumentList <Object[]>]
    [<CommonParameters>]

FilePathSSHHostHash

Invoke-Command
    [-FilePath] <String>
    -SSHConnection <Hashtable[]>
    [-AsJob]
    [-HideComputerName]
    [-RemoteDebug]
    [-InputObject <PSObject>]
    [-ArgumentList <Object[]>]
    [<CommonParameters>]

Beschreibung

Das cmdlet Invoke-Command führt Befehle auf einem lokalen oder Remotecomputer aus und gibt alle Ausgaben der Befehle einschließlich Fehlern zurück. Mithilfe eines einzelnen Invoke-Command Befehls können Sie Befehle auf mehreren Computern ausführen.

Verwenden Sie zum Ausführen eines einzelnen Befehls auf einem Remotecomputer den parameter ComputerName. Um eine Reihe verwandter Befehle auszuführen, die Daten freigeben, verwenden Sie das cmdlet New-PSSession, um eine PSSession- (eine dauerhafte Verbindung) auf dem Remotecomputer zu erstellen, und verwenden Sie dann den Parameter Session von Invoke-Command, um den Befehl in der PSSessionauszuführen. Um einen Befehl in einer getrennten Sitzung auszuführen, verwenden Sie den Parameter InDisconnectedSession. Um einen Befehl in einem Hintergrundauftrag auszuführen, verwenden Sie den parameter AsJob.

Sie können auch Invoke-Command auf einem lokalen Computer verwenden, um einen Skriptblock als Befehl auszuführen. PowerShell führt den Skriptblock sofort in einem untergeordneten Bereich des aktuellen Bereichs aus.

Bevor Sie Invoke-Command zum Ausführen von Befehlen auf einem Remotecomputer verwenden, lesen Sie about_Remote.

Ab PowerShell 6.0 können Sie Secure Shell (SSH) verwenden, um eine Verbindung mit Remotecomputern herzustellen und Befehle aufzurufen. SSH muss auf dem lokalen Computer installiert sein, und der Remotecomputer muss mit einem PowerShell-SSH-Endpunkt konfiguriert werden. Der Vorteil einer SSH-basierten PowerShell-Remotesitzung besteht darin, dass sie auf mehreren Plattformen (Windows, Linux, macOS) funktioniert. Für SSH-basierte Sitzung verwenden Sie die parameter HostName oder SSHConnection parameter, um den Remotecomputer und relevante Verbindungsinformationen anzugeben. Weitere Informationen zum Einrichten von PowerShell SSH-Remoting finden Sie unter PowerShell Remoting Over SSH.

Einige Codebeispiele verwenden splatting, um die Zeilenlänge zu verringern. Weitere Informationen finden Sie unter about_Splatting.

Beispiele

Beispiel 1: Ausführen eines Skripts auf einem Server

In diesem Beispiel wird das skript Test.ps1 auf dem Computer Server01 ausgeführt.

Invoke-Command -FilePath C:\scripts\test.ps1 -ComputerName Server01

Der parameter FilePath gibt ein Skript an, das sich auf dem lokalen Computer befindet. Das Skript wird auf dem Remotecomputer ausgeführt, und die Ergebnisse werden an den lokalen Computer zurückgegeben.

Beispiel 2: Ausführen eines Befehls auf einem Remoteserver

In diesem Beispiel wird ein Get-Culture Befehl auf dem Remotecomputer Server01 ausgeführt.

Invoke-Command -ComputerName Server01 -Credential Domain01\User01 -ScriptBlock {
    Get-Culture
}

Der parameter ComputerName gibt den Namen des Remotecomputers an. Der parameter Credential wird verwendet, um den Befehl im Sicherheitskontext von "Domain01\User01\User01" auszuführen, einem Benutzer, der über die Berechtigung zum Ausführen von Befehlen verfügt. Der parameter ScriptBlock gibt den Befehl an, der auf dem Remotecomputer ausgeführt werden soll.

Als Antwort fordert PowerShell das Kennwort und eine Authentifizierungsmethode für das Benutzerkonto an. Anschließend wird der Befehl auf dem Server01-Computer ausgeführt und das Ergebnis zurückgegeben.

Beispiel 3: Ausführen eines Befehls in einer dauerhaften Verbindung

In diesem Beispiel wird derselbe Get-Culture Befehl in einer Sitzung mit einer dauerhaften Verbindung auf dem Remotecomputer namens Server02 ausgeführt.

$s = New-PSSession -ComputerName Server02 -Credential Domain01\User01
Invoke-Command -Session $s -ScriptBlock { Get-Culture }

Das Cmdlet New-PSSession erstellt eine Sitzung auf dem Server02-Remotecomputer und speichert sie in der variablen $s. In der Regel erstellen Sie eine Sitzung nur, wenn Sie eine Reihe von Befehlen auf dem Remotecomputer ausführen.

Das Cmdlet Invoke-Command führt den Befehl Get-Culture auf Server02 aus. Der parameter Session gibt die sitzung an, die in der variablen $s gespeichert wurde.

Als Antwort führt PowerShell den Befehl in der Sitzung auf dem Server02-Computer aus.

Beispiel 4: Verwenden einer Sitzung zum Ausführen einer Reihe von Befehlen, die Daten freigeben

In diesem Beispiel werden die Auswirkungen der Verwendung von ComputerName und Session Parameter von Invoke-Commandverglichen. Es zeigt, wie Sie eine Sitzung verwenden, um eine Reihe von Befehlen auszuführen, die dieselben Daten gemeinsam verwenden.

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

Die ersten beiden Befehle verwenden den parameter ComputerName von Invoke-Command zum Ausführen von Befehlen auf dem Server02-Remotecomputer. Der erste Befehl verwendet das Cmdlet Get-Process, um den PowerShell-Prozess auf dem Remotecomputer abzurufen und in der variablen $p zu speichern. Der zweite Befehl ruft den Wert des VirtualMemorySize Eigenschaft des PowerShell-Prozesses ab.

Wenn Sie den parameter ComputerName verwenden, erstellt PowerShell eine neue Sitzung zum Ausführen des Befehls. Die Sitzung wird geschlossen, wenn der Befehl abgeschlossen ist. Die $p Variable wurde in einer Verbindung erstellt, ist aber in der für den zweiten Befehl erstellten Verbindung nicht vorhanden.

Das Problem wird gelöst, indem eine dauerhafte Sitzung auf dem Remotecomputer erstellt wird und dann beide Befehle in derselben Sitzung ausgeführt werden.

Das Cmdlet New-PSSession erstellt eine persistente Sitzung auf dem Computer Server02 und speichert die Sitzung in der $s Variablen. Die folgenden Invoke-Command Zeilen verwenden den Parameter Session, um beide Befehle in derselben Sitzung auszuführen. Da beide Befehle in derselben Sitzung ausgeführt werden, bleibt der $p Wert aktiv.

Beispiel 5: Aufrufen eines Befehls mit einem skriptblock, der in einer Variablen gespeichert ist

In diesem Beispiel wird gezeigt, wie Sie einen Befehl ausführen, der als Skriptblock in einer Variablen gespeichert ist. Wenn der Skriptblock in einer Variablen gespeichert wird, können Sie die Variable als Wert des parameters ScriptBlock angeben.

$command = {
    Get-WinEvent -LogName PowerShellCore/Operational |
      Where-Object -FilterScript { $_.Message -like '*certificate*' }
}
Invoke-Command -ComputerName S1, S2 -ScriptBlock $command

Die $command Variable speichert den befehl Get-WinEvent, der als Skriptblock formatiert ist. Die Invoke-Command führt den befehl aus, der auf den Remotecomputern S1 und S2 in $command gespeichert ist.

Beispiel 6: Ausführen eines einzelnen Befehls auf mehreren Computern

In diesem Beispiel wird die Verwendung von Invoke-Command zum Ausführen eines einzelnen Befehls auf mehreren Computern veranschaulicht.

$parameters = @{
  ComputerName      = 'Server01', 'Server02', 'TST-0143', 'localhost'
  ConfigurationName = 'MySession.PowerShell'
  ScriptBlock       = { Get-WinEvent -LogName PowerShellCore/Operational }
}
Invoke-Command @parameters

Der parameter ComputerName gibt eine durch Trennzeichen getrennte Liste von Computernamen an. Die Liste der Computer enthält den Localhost-Wert, der den lokalen Computer darstellt. Der parameter ConfigurationName gibt eine alternative Sitzungskonfiguration an. Der ScriptBlock Parameter wird Get-WinEvent ausgeführt, um die PowerShellCore/Operational-Ereignisprotokolle von jedem Computer abzurufen.

Beispiel 7: Abrufen der Version des Hostprogramms auf mehreren Computern

In diesem Beispiel wird die Version des PowerShell-Hostprogramms ab, das auf 200 Remotecomputern ausgeführt wird.

$version = Invoke-Command -ComputerName (Get-Content Machines.txt) -ScriptBlock {
    (Get-Host).Version
}

Da nur ein Befehl ausgeführt wird, müssen Sie keine dauerhaften Verbindungen mit jedem der Computer erstellen. Stattdessen verwendet der Befehl den ComputerName Parameter, um die Computer anzugeben. Um die Computer anzugeben, wird das cmdlet Get-Content verwendet, um den Inhalt der datei Machine.txt abzurufen, eine Datei mit Computernamen.

Das Cmdlet Invoke-Command führt einen Get-Host Befehl auf den Remotecomputern aus. Es verwendet Punktnotation, um die Version Eigenschaft des PowerShell-Hosts abzurufen.

Diese Befehle werden jeweils einzeln ausgeführt. Nach Abschluss der Befehle wird die Ausgabe der Befehle von allen Computern in der variablen $version gespeichert. Die Ausgabe enthält den Namen des Computers, von dem die Daten stammen.

Beispiel 8: Ausführen eines Hintergrundauftrags auf mehreren Remotecomputern

In diesem Beispiel wird ein Befehl auf zwei Remotecomputern ausgeführt. Der befehl Invoke-Command verwendet den AsJob Parameter, sodass der Befehl als Hintergrundauftrag ausgeführt wird. Die Befehle werden auf den Remotecomputern ausgeführt, aber der Auftrag ist auf dem lokalen Computer vorhanden. Die Ergebnisse werden an den lokalen Computer übertragen.

$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

Das Cmdlet New-PSSession erstellt Sitzungen auf den Remotecomputern Server01 und Server02. Das Cmdlet Invoke-Command führt in jeder Sitzung einen Hintergrundauftrag aus. Der Befehl verwendet den AsJob Parameter, um den Befehl als Hintergrundauftrag auszuführen. Dieser Befehl gibt ein Auftragsobjekt zurück, das zwei untergeordnete Auftragsobjekte enthält, eines für jeden der Aufträge, die auf den beiden Remotecomputern ausgeführt werden.

Der Befehl Get-Job speichert das Auftragsobjekt in der variablen $j. Die $j Variable wird dann an das Cmdlet Format-List weitergeleitet, um alle Eigenschaften des Auftragsobjekts in einer Liste anzuzeigen. Der letzte Befehl ruft die Ergebnisse der Aufträge ab. Es wird das Auftragsobjekt in $j an das Cmdlet Receive-Job weitergeleitet und die Ergebnisse in der $results Variablen gespeichert.

Beispiel 9: Einschließen lokaler Variablen in einen Befehl, der auf einem Remotecomputer ausgeführt wird

In diesem Beispiel wird gezeigt, wie die Werte lokaler Variablen in einen Befehl eingeschlossen werden, der auf einem Remotecomputer ausgeführt wird. Der Befehl verwendet den Using: Bereichsmodifizierer, um eine lokale Variable in einem Remotebefehl zu identifizieren. Standardmäßig wird davon ausgegangen, dass alle Variablen in der Remotesitzung definiert werden. Der Using: Bereichsmodifizierer wurde in PowerShell 3.0 eingeführt. Weitere Informationen zum Using: Bereichsmodifizierer finden Sie unter about_Remote_Variables und about_Scopes.

$Log = 'PowerShellCore/Operational'
Invoke-Command -ComputerName Server01 -ScriptBlock {
    Get-WinEvent -LogName $Using:Log -MaxEvents 10
}

Die $Log Variable speichert den Namen des Ereignisprotokolls, PowerShellCore/Operational. Das cmdlet Invoke-Command wird Get-WinEvent auf Server01 ausgeführt, um die zehn neuesten Ereignisse aus dem Ereignisprotokoll abzurufen. Der Wert des LogName-Parameters ist die $Log Variable, die dem Using: Bereichsmodifizierer vorangestellt ist, um anzugeben, dass er in der lokalen Sitzung erstellt wurde, nicht in der Remotesitzung.

Beispiel 10: Ausblenden des Computernamens

In diesem Beispiel wird der Effekt der Verwendung des HideComputerName- Parameters von Invoke-Commandveranschaulicht. HideComputerName ändert das von diesem Cmdlet zurückgegebene Objekt nicht. Sie ändert nur die Anzeige. Sie können weiterhin die cmdlets Format verwenden, um die PsComputerName- eigenschaft eines der betroffenen Objekte anzuzeigen.

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

Die ersten beiden Befehle verwenden Invoke-Command, um einen Get-Process Befehl für den PowerShell-Prozess auszuführen. Die Ausgabe des ersten Befehls enthält die PsComputerName-Eigenschaft, die den Namen des Computers enthält, auf dem der Befehl ausgeführt wurde. Die Ausgabe des zweiten Befehls, der HideComputerName-verwendet, enthält nicht die spalte PsComputerName.

Beispiel 11: Verwenden des Schlüsselworts "param" in einem Skriptblock

Das param Schlüsselwort und der ArgumentList Parameter werden verwendet, um Variablenwerte an benannte Parameter in einem Skriptblock zu übergeben. In diesem Beispiel werden Dateinamen angezeigt, die mit dem Buchstaben a beginnen und die .pdf Erweiterung aufweisen.

Weitere Informationen zum schlüsselwort param finden Sie unter 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 verwendet den parameter ScriptBlock, der zwei Variablen definiert, $Param1 und $Param2. Get-ChildItem verwendet die benannten Parameter Name und Include mit den Variablennamen. Die ArgumentList die Werte an die Variablen übergibt.

Beispiel 12: Verwenden der $args automatischen Variablen in einem Skriptblock

Die $args automatische Variable und der ArgumentList Parameter werden verwendet, um Arraywerte an Parameterpositionen in einem Skriptblock zu übergeben. In diesem Beispiel wird der Verzeichnisinhalt eines Servers .txt Dateien angezeigt. Der parameter Get-ChildItemPath ist Position 0, und der parameter Filter ist Position 1.

Weitere Informationen zur $args Variablen finden Sie unter 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 verwendet einen ScriptBlock Parameter und Get-ChildItem gibt die $args[0]- und $args[1] Arraywerte an. Die ArgumentList übergibt die $args Arraywerte an die Get-ChildItem Parameterpositionen für Path und Filter.

Beispiel 13: Ausführen eines Skripts auf allen Computern, die in einer Textdatei aufgeführt sind

In diesem Beispiel wird das cmdlet Invoke-Command verwendet, um das skript Sample.ps1 auf allen Computern auszuführen, die in der datei Servers.txt aufgeführt sind. Der Befehl verwendet den FilePath Parameter, um die Skriptdatei anzugeben. Mit diesem Befehl können Sie das Skript auf den Remotecomputern ausführen, auch wenn auf die Skriptdatei nicht auf die Remotecomputer zugegriffen werden kann.

$parameters = @{
    ComputerName = (Get-Content Servers.txt)
    FilePath     = 'C:\Scripts\Sample.ps1'
    ArgumentList = 'Process', 'Service'
}
Invoke-Command @parameters

Wenn Sie den Befehl übermitteln, wird der Inhalt der Sample.ps1-Datei in einen Skriptblock kopiert, und der Skriptblock wird auf jedem der Remotecomputer ausgeführt. Dieses Verfahren entspricht der Verwendung des ScriptBlock-Parameters, um den Inhalt des Skripts zu übermitteln.

Beispiel 14: Ausführen eines Befehls auf einem Remotecomputer mit einem URI

In diesem Beispiel wird gezeigt, wie Sie einen Befehl auf einem Remotecomputer ausführen, der durch einen Uniform Resource Identifier (URI) identifiziert wird. In diesem beispiel wird ein Set-Mailbox-Befehl auf einem Exchange-Remoteserver ausgeführt.

$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

In der ersten Zeile wird das Cmdlet Get-Credential zum Speichern von Windows Live ID-Anmeldeinformationen in der variablen $LiveCred verwendet. PowerShell fordert den Benutzer auf, Windows Live ID-Anmeldeinformationen einzugeben.

Die $parameters Variable ist eine Hashtabelle mit den Parametern, die an das Cmdlet Invoke-Command übergeben werden sollen. Das cmdlet Invoke-Command führt einen Set-Mailbox Befehl mithilfe der Microsoft.Exchange Sitzungskonfiguration aus. Der parameter ConnectionURI gibt die URL des Exchange-Serverendpunkts an. Der parameter Credential gibt die anmeldeinformationen an, die in der variablen $LiveCred gespeichert sind. Der parameter AuthenticationMechanism gibt die Verwendung der Standardauthentifizierung an. Der parameter ScriptBlock gibt einen Skriptblock an, der den Befehl enthält.

Beispiel 15: Verwenden einer Sitzungsoption

In diesem Beispiel wird gezeigt, wie Sie einen SessionOption--Parameter erstellen und verwenden.

$so = New-PSSessionOption -SkipCACheck -SkipCNCheck -SkipRevocationCheck
$parameters = @{
    ComputerName  = 'server01'
    UseSSL        = $true
    ScriptBlock   = { Get-HotFix }
    SessionOption = $so
    Credential    = 'server01\user01'
}
Invoke-Command @parameters

Das Cmdlet New-PSSessionOption erstellt ein Sitzungsoptionsobjekt, das bewirkt, dass das Remoteende die Zertifizierungsstelle, den kanonischen Namen und die Sperrlisten beim Auswerten der eingehenden HTTPS-Verbindung nicht überprüft. Das SessionOption-Objekt wird in der variablen $so gespeichert.

Hinweis

Das Deaktivieren dieser Prüfungen ist praktisch für die Problembehandlung, aber offensichtlich nicht sicher.

Das Cmdlet Invoke-Command führt einen Get-HotFix Befehl remote aus. Der parameter SessionOption erhält die variable $so.

Beispiel 16: Verwalten der URI-Umleitung in einem Remotebefehl

In diesem Beispiel wird gezeigt, wie Sie die AllowRedirection- und SessionOption-Parameter verwenden, um die URI-Umleitung in einem Remotebefehl zu verwalten.

$max = New-PSSessionOption -MaximumRedirection 1
$parameters = @{
  ConnectionUri    = 'https://ps.exchangelabs.com/PowerShell'
  ScriptBlock      = { Get-Mailbox dan }
  AllowRedirection = $true
  SessionOption    = $max
}
Invoke-Command @parameters

Das cmdlet New-PSSessionOption erstellt ein PSSessionOption--Objekt, das in der variablen $max gespeichert ist. Der Befehl verwendet den parameter MaximumRedirection, um die eigenschaft MaximumConnectionRedirectionCount des PSSessionOption- objekts auf 1 festzulegen.

Das cmdlet Invoke-Command führt einen Get-Mailbox-Befehl auf einem Remote-Microsoft Exchange Server aus. Der parameter AllowRedirection bietet explizite Berechtigung zum Umleiten der Verbindung an einen alternativen Endpunkt. Der parameter SessionOption verwendet das sitzungsobjekt, das in der $max Variable gespeichert ist.

Wenn der durch ConnectionURI angegebene Remotecomputer daher eine Umleitungsmeldung zurückgibt, leitet PowerShell die Verbindung um, aber wenn das neue Ziel eine weitere Umleitungsmeldung zurückgibt, wird der Wert der Umleitungsanzahl von 1 überschritten, und Invoke-Command einen nicht beendeten Fehler zurückgibt.

Beispiel 17: Zugreifen auf eine Netzwerkfreigabe in einer Remotesitzung

In diesem Beispiel wird gezeigt, wie Sie über eine Remotesitzung auf eine Netzwerkfreigabe zugreifen. Drei Computer werden verwendet, um das Beispiel zu veranschaulichen. Server01 ist der lokale Computer, Server02 ist der Remotecomputer, und Net03 enthält die Netzwerkfreigabe. Server01 stellt eine Verbindung mit Server02 und dann einen zweiten Hop zu Net03 für den Zugriff auf die Netzwerkfreigabe vor. Weitere Informationen dazu, wie PowerShell Remoting Hops zwischen Computern unterstützt, finden Sie unter Erstellen des zweiten Hops in PowerShell Remoting.

Die erforderliche Stellvertretung für die Unterstützung von Anmeldeinformationen (Credential Security Support Provider, CredSSP) ist in den Clienteinstellungen auf dem lokalen Computer und in den Diensteinstellungen auf dem Remotecomputer aktiviert. Um die Befehle in diesem Beispiel auszuführen, müssen Sie Mitglied der Administratoren Gruppe auf dem lokalen Computer und dem Remotecomputer sein.

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

Mit dem Cmdlet Enable-WSManCredSSP wird die CredSSP-Delegierung vom lokalen Server01-Computer an den Remotecomputer Server02 aktiviert. Der Parameter Role gibt Client- an, um die CredSSP-Clienteinstellung auf dem lokalen Computer zu konfigurieren.

New-PSSession erstellt ein PSSession--Objekt für Server02 und speichert das Objekt in der $s Variablen.

Das Cmdlet Invoke-Command verwendet die $s Variable zum Herstellen einer Verbindung mit dem Remotecomputer Server02. Der parameter ScriptBlock wird auf dem Remotecomputer Enable-WSManCredSSP ausgeführt. Der Parameter Role gibt Server- an, um die Einstellung des CredSSP-Servers auf dem Remotecomputer zu konfigurieren.

Die $parameters Variable enthält die Parameterwerte, die mit der Netzwerkfreigabe verbunden werden sollen. Das cmdlet Invoke-Command führt einen Get-Item Befehl in der Sitzung in $saus. Dieser Befehl ruft ein Skript aus der \\Net03\Scripts Netzwerkfreigabe ab. Der Befehl verwendet den Parameter Authentication mit dem Wert CredSSP und dem Parameter Credential mit dem Wert Domain01\Admin01.

Beispiel 18: Starten von Skripts auf vielen Remotecomputern

In diesem Beispiel wird ein Skript auf mehr als hundert Computern ausgeführt. Um die Auswirkungen auf den lokalen Computer zu minimieren, wird eine Verbindung mit jedem Computer hergestellt, das Skript gestartet und dann von jedem Computer getrennt. Das Skript wird weiterhin in den getrennten Sitzungen ausgeführt.

$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

Der Befehl verwendet Invoke-Command, um das Skript auszuführen. Der Wert des parameters ComputerName ist ein Get-Content Befehl, der die Namen der Remotecomputer aus einer Textdatei abruft. Der InDisconnectedSession Parameter trennt die Sitzungen, sobald der Befehl gestartet wird. Der Wert des FilePath--Parameters ist das Skript, das Invoke-Command auf jedem Computer ausgeführt wird.

Der Wert SessionOption- ist eine Hashtabelle. Der wert OutputBufferingMode- wird auf Drop festgelegt, und der wert IdleTimeout wird auf 12 Stunden festgelegt.

Verwenden Sie das cmdlet Receive-PSSession, um die Ergebnisse von Befehlen und Skripts abzurufen, die in getrennten Sitzungen ausgeführt werden.

Beispiel 19: Ausführen eines Befehls auf einem Remotecomputer mithilfe von SSH

In diesem Beispiel wird gezeigt, wie Sie einen Befehl auf einem Remotecomputer mit Secure Shell (SSH) ausführen. Wenn SSH auf dem Remotecomputer zum Anfordern von Kennwörtern konfiguriert ist, erhalten Sie eine Kennwortaufforderung. Andernfalls müssen Sie die SSH-schlüsselbasierte Benutzerauthentifizierung verwenden.

Invoke-Command -HostName UserA@LinuxServer01 -ScriptBlock { Get-MailBox * }

Beispiel 20: Ausführen eines Befehls auf einem Remotecomputer mithilfe von SSH und Angeben eines Benutzerauthentifizierungsschlüssels

In diesem Beispiel wird gezeigt, wie Sie einen Befehl auf einem Remotecomputer mithilfe von SSH ausführen und eine Schlüsseldatei für die Benutzerauthentifizierung angeben. Sie werden nicht zur Eingabe eines Kennworts aufgefordert, es sei denn, die Schlüsselauthentifizierung schlägt fehl, und der Remotecomputer ist so konfiguriert, dass die standardkennwortauthentifizierung zulässig ist.

$parameters = @{
    HostName    = 'UserA@LinuxServer01'
    ScriptBlock = { Get-MailBox * }
    KeyFilePath = '/UserA/UserAKey_rsa'
}
Invoke-Command

Beispiel 21: Ausführen einer Skriptdatei auf mehreren Remotecomputern mithilfe von SSH als Auftrag

In diesem Beispiel wird gezeigt, wie Sie eine Skriptdatei auf mehreren Remotecomputern mit SSH und dem SSHConnection Parametersatz ausführen. Der SSHConnection Parameter verwendet ein Array von Hashtabellen, die Verbindungsinformationen für jeden Computer enthalten. Dieses Beispiel erfordert, dass die Ziel-Remotecomputer SSH konfiguriert haben, um die schlüsselbasierte Benutzerauthentifizierung zu unterstützen.

$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

Beispiel 22: Herstellen einer Verbindung mit einer Remote-SSH-Sitzung mithilfe von SSH-Optionen

In diesem Beispiel wird gezeigt, wie Sie eine Skriptdatei auf einem Remote-Linux-basierten Computer mithilfe von SSH-Optionen ausführen. Der parameter Options akzeptiert eine Hashtabelle mit Werten, die als Optionen an den zugrunde liegenden ssh Befehl übergeben werden, der die Verbindung mit dem Remotesystem hergestellt hat.

$options = @{
    Port=22
    User = 'UserB'
    Host = 'LinuxServer5'
}
$results = Invoke-Command -FilePath C:\Scripts\CollectEvents.ps1 -KeyFilePath '/Users/UserB/id_rsa' -Options $options

Parameter

-AllowRedirection

Ermöglicht die Umleitung dieser Verbindung zu einem alternativen URI (Uniform Resource Identifier).

Wenn Sie den parameter ConnectionURI verwenden, kann das Remoteziel eine Anweisung zurückgeben, um zu einem anderen URI umzuleiten. Standardmäßig leitet PowerShell keine Verbindungen um, Sie können diesen Parameter jedoch verwenden, um die Verbindung umzuleiten.

Sie können auch einschränken, wie oft die Verbindung umgeleitet wird, indem Sie den MaximumConnectionRedirectionCount Sitzungsoptionswert ändern. Verwenden Sie den MaximumRedirection-Parameter des New-PSSessionOption-Cmdlets, oder legen Sie die MaximumConnectionRedirectionCount--Eigenschaft der $PSSessionOption-Einstellungsvariable fest. Der Standardwert ist 5.

Parametereigenschaften

Typ:SwitchParameter
Standardwert:False
Unterstützt Platzhalter:False
Nicht anzeigen:False

Parametersätze

Uri
Position:Named
Obligatorisch.:False
Wert aus Pipeline:False
Wert aus Pipeline nach dem Eigenschaftsnamen:False
Wert aus verbleibenden Argumenten:False
FilePathUri
Position:Named
Obligatorisch.:False
Wert aus Pipeline:False
Wert aus Pipeline nach dem Eigenschaftsnamen:False
Wert aus verbleibenden Argumenten:False

-ApplicationName

Gibt das Anwendungsnamenssegment des Verbindungs-URI an. Verwenden Sie diesen Parameter, um den Anwendungsnamen anzugeben, wenn Sie den parameter ConnectionURI im Befehl nicht verwenden.

Der Standardwert ist der Wert der $PSSessionApplicationName Einstellungsvariable auf dem lokalen Computer. Wenn diese Einstellungsvariable nicht definiert ist, ist der Standardwert WSMAN. Dieser Wert ist für die meisten Verwendungen geeignet. Weitere Informationen finden Sie unter about_Preference_Variables.

Der WinRM-Dienst verwendet den Anwendungsnamen, um einen Listener zum Dienst der Verbindungsanforderung auszuwählen. Der Wert dieses Parameters sollte mit dem Wert der URLPrefix Eigenschaft eines Listeners auf dem Remotecomputer übereinstimmen.

Parametereigenschaften

Typ:String
Standardwert:$PSSessionApplicationName if set on the local computer, otherwise WSMAN
Unterstützt Platzhalter:False
Nicht anzeigen:False

Parametersätze

ComputerName
Position:Named
Obligatorisch.:False
Wert aus Pipeline:False
Wert aus Pipeline nach dem Eigenschaftsnamen:True
Wert aus verbleibenden Argumenten:False
FilePathComputerName
Position:Named
Obligatorisch.:False
Wert aus Pipeline:False
Wert aus Pipeline nach dem Eigenschaftsnamen:True
Wert aus verbleibenden Argumenten:False

-ArgumentList

Stellt die Werte von Parametern für den Scriptblock bereit. Die Parameter im Skriptblock werden nach Position aus dem Arraywert übergeben, der an ArgumentList-bereitgestellt wird. Dies wird als Array splatting bezeichnet. Weitere Informationen zum Verhalten von ArgumentListfinden Sie unter about_Splatting.

Parametereigenschaften

Typ:

Object[]

Standardwert:None
Unterstützt Platzhalter:False
Nicht anzeigen:False
Aliase:Argumente

Parametersätze

(All)
Position:Named
Obligatorisch.:False
Wert aus Pipeline:False
Wert aus Pipeline nach dem Eigenschaftsnamen:False
Wert aus verbleibenden Argumenten:False

-AsJob

Gibt an, dass dieses Cmdlet den Befehl als Hintergrundauftrag auf einem Remotecomputer ausführt. Verwenden Sie diesen Parameter, um Befehle auszuführen, die viel Zeit in Anspruch nehmen.

Wenn Sie den parameter AsJob verwenden, gibt der Befehl ein Objekt zurück, das den Auftrag darstellt, und zeigt dann die Eingabeaufforderung an. Sie können weiterhin in der Sitzung arbeiten, während der Auftrag abgeschlossen ist. Verwenden Sie zum Verwalten des Auftrags die *-Job Cmdlets. Verwenden Sie das Cmdlet Receive-Job, um die Auftragsergebnisse abzurufen.

Der AsJob-Parameter ähnelt der Verwendung des cmdlets Invoke-Command zum Remote ausführen eines Start-Job-Cmdlets. Mit AsJobwird der Auftrag jedoch auf dem lokalen Computer erstellt, obwohl der Auftrag auf einem Remotecomputer ausgeführt wird. Die Ergebnisse des Remoteauftrags werden automatisch an den lokalen Computer zurückgegeben.

Weitere Informationen zu PowerShell-Hintergrundaufträgen finden Sie unter about_Jobs und about_Remote_Jobs.

Parametereigenschaften

Typ:SwitchParameter
Standardwert:False
Unterstützt Platzhalter:False
Nicht anzeigen:False

Parametersätze

Session
Position:Named
Obligatorisch.:False
Wert aus Pipeline:False
Wert aus Pipeline nach dem Eigenschaftsnamen:False
Wert aus verbleibenden Argumenten:False
FilePathRunspace
Position:Named
Obligatorisch.:False
Wert aus Pipeline:False
Wert aus Pipeline nach dem Eigenschaftsnamen:False
Wert aus verbleibenden Argumenten:False
ComputerName
Position:Named
Obligatorisch.:False
Wert aus Pipeline:False
Wert aus Pipeline nach dem Eigenschaftsnamen:False
Wert aus verbleibenden Argumenten:False
FilePathComputerName
Position:Named
Obligatorisch.:False
Wert aus Pipeline:False
Wert aus Pipeline nach dem Eigenschaftsnamen:False
Wert aus verbleibenden Argumenten:False
Uri
Position:Named
Obligatorisch.:False
Wert aus Pipeline:False
Wert aus Pipeline nach dem Eigenschaftsnamen:False
Wert aus verbleibenden Argumenten:False
FilePathUri
Position:Named
Obligatorisch.:False
Wert aus Pipeline:False
Wert aus Pipeline nach dem Eigenschaftsnamen:False
Wert aus verbleibenden Argumenten:False
VMId
Position:Named
Obligatorisch.:False
Wert aus Pipeline:False
Wert aus Pipeline nach dem Eigenschaftsnamen:False
Wert aus verbleibenden Argumenten:False
VMName
Position:Named
Obligatorisch.:False
Wert aus Pipeline:False
Wert aus Pipeline nach dem Eigenschaftsnamen:False
Wert aus verbleibenden Argumenten:False
FilePathVMId
Position:Named
Obligatorisch.:False
Wert aus Pipeline:False
Wert aus Pipeline nach dem Eigenschaftsnamen:False
Wert aus verbleibenden Argumenten:False
FilePathVMName
Position:Named
Obligatorisch.:False
Wert aus Pipeline:False
Wert aus Pipeline nach dem Eigenschaftsnamen:False
Wert aus verbleibenden Argumenten:False
SSHHost
Position:Named
Obligatorisch.:False
Wert aus Pipeline:False
Wert aus Pipeline nach dem Eigenschaftsnamen:False
Wert aus verbleibenden Argumenten:False
ContainerId
Position:Named
Obligatorisch.:False
Wert aus Pipeline:False
Wert aus Pipeline nach dem Eigenschaftsnamen:False
Wert aus verbleibenden Argumenten:False
FilePathContainerId
Position:Named
Obligatorisch.:False
Wert aus Pipeline:False
Wert aus Pipeline nach dem Eigenschaftsnamen:False
Wert aus verbleibenden Argumenten:False
SSHHostHashParam
Position:Named
Obligatorisch.:False
Wert aus Pipeline:False
Wert aus Pipeline nach dem Eigenschaftsnamen:False
Wert aus verbleibenden Argumenten:False
FilePathSSHHost
Position:Named
Obligatorisch.:False
Wert aus Pipeline:False
Wert aus Pipeline nach dem Eigenschaftsnamen:False
Wert aus verbleibenden Argumenten:False
FilePathSSHHostHash
Position:Named
Obligatorisch.:False
Wert aus Pipeline:False
Wert aus Pipeline nach dem Eigenschaftsnamen:False
Wert aus verbleibenden Argumenten:False

-Authentication

Gibt den Mechanismus an, der zum Authentifizieren der Anmeldeinformationen des Benutzers verwendet wird. CredSSP-Authentifizierung ist nur in Windows Vista, Windows Server 2008 und höheren Versionen des Windows-Betriebssystems verfügbar.

Die zulässigen Werte für diesen Parameter sind wie folgt:

  • Standard
  • Basic
  • Credssp
  • Zusammenfassung
  • Kerberos
  • Verhandeln
  • NegotiateWithImplicitCredential

Der Standardwert ist "Default".

Weitere Informationen zu den Werten dieses Parameters finden Sie unter AuthenticationMechanism Enumeration in MSDN.

Vorsicht

Credential Security Support Provider (CredSSP)-Authentifizierung, bei der die Anmeldeinformationen des Benutzers an einen Remotecomputer übergeben werden, der authentifiziert werden soll, ist für Befehle konzipiert, die eine Authentifizierung für mehrere Ressourcen erfordern, z. B. den Zugriff auf eine Remotenetzwerkfreigabe. Dieser Mechanismus erhöht das Sicherheitsrisiko des Remotevorgangs. Wenn der Remotecomputer kompromittiert ist, können die an ihn übergebenen Anmeldeinformationen zum Steuern der Netzwerksitzung verwendet werden. Weitere Informationen finden Sie unter Credential Security Support Provider.

Parametereigenschaften

Typ:AuthenticationMechanism
Standardwert:Default
Zulässige Werte:Basic, Default, Credssp, Digest, Kerberos, Negotiate, NegotiateWithImplicitCredential
Unterstützt Platzhalter:False
Nicht anzeigen:False

Parametersätze

ComputerName
Position:Named
Obligatorisch.:False
Wert aus Pipeline:False
Wert aus Pipeline nach dem Eigenschaftsnamen:False
Wert aus verbleibenden Argumenten:False
FilePathComputerName
Position:Named
Obligatorisch.:False
Wert aus Pipeline:False
Wert aus Pipeline nach dem Eigenschaftsnamen:False
Wert aus verbleibenden Argumenten:False
Uri
Position:Named
Obligatorisch.:False
Wert aus Pipeline:False
Wert aus Pipeline nach dem Eigenschaftsnamen:False
Wert aus verbleibenden Argumenten:False
FilePathUri
Position:Named
Obligatorisch.:False
Wert aus Pipeline:False
Wert aus Pipeline nach dem Eigenschaftsnamen:False
Wert aus verbleibenden Argumenten:False

-CertificateThumbprint

Gibt das digitale öffentliche Schlüsselzertifikat (X509) eines Benutzerkontos an, das über die Berechtigung verfügt, eine Verbindung mit der getrennten Sitzung herzustellen. Geben Sie den Zertifikatfingerabdruck des Zertifikats ein.

Zertifikate werden in der zertifikatbasierten Clientauthentifizierung verwendet. Sie können nur lokalen Benutzerkonten zugeordnet werden und funktionieren nicht mit Domänenkonten.

Verwenden Sie zum Abrufen eines Zertifikatfingerabdrucks einen befehl Get-Item oder Get-ChildItem im PowerShell-Zertifikat: Laufwerk.

Parametereigenschaften

Typ:String
Standardwert:None
Unterstützt Platzhalter:False
Nicht anzeigen:False

Parametersätze

ComputerName
Position:Named
Obligatorisch.:False
Wert aus Pipeline:False
Wert aus Pipeline nach dem Eigenschaftsnamen:False
Wert aus verbleibenden Argumenten:False
Uri
Position:Named
Obligatorisch.:False
Wert aus Pipeline:False
Wert aus Pipeline nach dem Eigenschaftsnamen:False
Wert aus verbleibenden Argumenten:False

-ComputerName

Gibt die Computer an, auf denen der Befehl ausgeführt wird. Der Standardwert ist der lokale Computer.

Wenn Sie den parameter ComputerName verwenden, erstellt PowerShell eine temporäre Verbindung, die nur zum Ausführen des angegebenen Befehls verwendet wird und dann geschlossen wird. Wenn Sie eine dauerhafte Verbindung benötigen, verwenden Sie den Parameter Session.

Geben Sie den NETBIOS-Namen, die IP-Adresse oder den vollqualifizierten Domänennamen eines oder mehrerer Computer in einer durch Trennzeichen getrennten Liste ein. Um den lokalen Computer anzugeben, geben Sie den Computernamen, den Localhost oder einen Punkt (.) ein.

Um eine IP-Adresse im Wert von ComputerNamezu verwenden, muss der Befehl den Parameter Credential enthalten. Der Computer muss für den HTTPS-Transport oder die IP-Adresse des Remotecomputers in der WinRM-liste des lokalen Computers TrustedHosts enthalten sein. Anweisungen zum Hinzufügen eines Computernamens zur Liste TrustedHosts finden Sie unter Hinzufügen eines Computers zur liste der vertrauenswürdigen Hostlisten.

Wenn Sie unter Windows Vista und höheren Versionen des Windows-Betriebssystems den lokalen Computer in den Wert ComputerNameeinschließen möchten, müssen Sie PowerShell mit der Option Als Administrator ausführen ausführen.

Parametereigenschaften

Typ:

String[]

Standardwert:Local computer
Unterstützt Platzhalter:False
Nicht anzeigen:False
Aliase:Cn

Parametersätze

ComputerName
Position:0
Obligatorisch.:False
Wert aus Pipeline:False
Wert aus Pipeline nach dem Eigenschaftsnamen:False
Wert aus verbleibenden Argumenten:False
FilePathComputerName
Position:0
Obligatorisch.:False
Wert aus Pipeline:False
Wert aus Pipeline nach dem Eigenschaftsnamen:False
Wert aus verbleibenden Argumenten:False

-ConfigurationName

Gibt die Sitzungskonfiguration an, die für die neue PSSession-verwendet wird.

Geben Sie einen Konfigurationsnamen oder den vollqualifizierten Ressourcen-URI für eine Sitzungskonfiguration ein. Wenn Sie nur den Konfigurationsnamen angeben, wird der folgende Schema-URI vorangestellt: http://schemas.microsoft.com/PowerShell.

Bei Verwendung mit SSH gibt dieser Parameter das Subsystem an, das für das Ziel verwendet werden soll, wie in sshd_configdefiniert. Der Standardwert für SSH ist das powershell Subsystem.

Die Sitzungskonfiguration für eine Sitzung befindet sich auf dem Remotecomputer. Wenn die angegebene Sitzungskonfiguration auf dem Remotecomputer nicht vorhanden ist, schlägt der Befehl fehl.

Der Standardwert ist der Wert der $PSSessionConfigurationName Einstellungsvariable auf dem lokalen Computer. Wenn diese Einstellungsvariable nicht festgelegt ist, ist die Standardeinstellung Microsoft.PowerShell-. Weitere Informationen finden Sie unter about_Preference_Variables.

Parametereigenschaften

Typ:String
Standardwert:$PSSessionConfigurationName if set on the local computer, otherwise Microsoft.PowerShell
Unterstützt Platzhalter:False
Nicht anzeigen:False

Parametersätze

ComputerName
Position:Named
Obligatorisch.:False
Wert aus Pipeline:False
Wert aus Pipeline nach dem Eigenschaftsnamen:True
Wert aus verbleibenden Argumenten:False
FilePathComputerName
Position:Named
Obligatorisch.:False
Wert aus Pipeline:False
Wert aus Pipeline nach dem Eigenschaftsnamen:True
Wert aus verbleibenden Argumenten:False
Uri
Position:Named
Obligatorisch.:False
Wert aus Pipeline:False
Wert aus Pipeline nach dem Eigenschaftsnamen:True
Wert aus verbleibenden Argumenten:False
FilePathUri
Position:Named
Obligatorisch.:False
Wert aus Pipeline:False
Wert aus Pipeline nach dem Eigenschaftsnamen:True
Wert aus verbleibenden Argumenten:False
VMId
Position:Named
Obligatorisch.:False
Wert aus Pipeline:False
Wert aus Pipeline nach dem Eigenschaftsnamen:True
Wert aus verbleibenden Argumenten:False
VMName
Position:Named
Obligatorisch.:False
Wert aus Pipeline:False
Wert aus Pipeline nach dem Eigenschaftsnamen:True
Wert aus verbleibenden Argumenten:False
FilePathVMId
Position:Named
Obligatorisch.:False
Wert aus Pipeline:False
Wert aus Pipeline nach dem Eigenschaftsnamen:True
Wert aus verbleibenden Argumenten:False
FilePathVMName
Position:Named
Obligatorisch.:False
Wert aus Pipeline:False
Wert aus Pipeline nach dem Eigenschaftsnamen:True
Wert aus verbleibenden Argumenten:False
ContainerId
Position:Named
Obligatorisch.:False
Wert aus Pipeline:False
Wert aus Pipeline nach dem Eigenschaftsnamen:True
Wert aus verbleibenden Argumenten:False
FilePathContainerId
Position:Named
Obligatorisch.:False
Wert aus Pipeline:False
Wert aus Pipeline nach dem Eigenschaftsnamen:True
Wert aus verbleibenden Argumenten:False

-ConnectingTimeout

Gibt die Zeitspanne in Millisekunden an, die für die anfängliche SSH-Verbindung zulässig ist. Wenn die Verbindung nicht innerhalb des angegebenen Zeitraums abgeschlossen wird, wird ein Fehler zurückgegeben.

Dieser Parameter wurde in PowerShell 7.2 eingeführt.

Parametereigenschaften

Typ:Int32
Standardwert:Unlimited
Unterstützt Platzhalter:False
Nicht anzeigen:False

Parametersätze

SSHHost
Position:Named
Obligatorisch.:False
Wert aus Pipeline:False
Wert aus Pipeline nach dem Eigenschaftsnamen:False
Wert aus verbleibenden Argumenten:False
FilePathSSHHost
Position:Named
Obligatorisch.:False
Wert aus Pipeline:False
Wert aus Pipeline nach dem Eigenschaftsnamen:False
Wert aus verbleibenden Argumenten:False

-ConnectionUri

Gibt einen URI (Uniform Resource Identifier) an, der den Verbindungsendpunkt der Sitzung definiert. Der URI muss vollständig qualifiziert sein.

Das Format dieser Zeichenfolge lautet wie folgt:

<Transport>://<ComputerName>:<Port>/<ApplicationName>

Der Standardwert lautet wie folgt:

http://localhost:5985/WSMAN

Wenn Sie keinen Verbindungs-URI angeben, können Sie den UseSSL- und Parameter "Port" verwenden, um die Verbindungs-URI-Werte anzugeben.

Gültige Werte für das segment Transport des URI sind HTTP und HTTPS. Wenn Sie einen Verbindungs-URI mit einem Transportsegment angeben, aber keinen Port angeben, wird die Sitzung mit den Standardsports erstellt: 80 für HTTP und 443 für HTTPS. Um die Standardports für PowerShell-Remoting zu verwenden, geben Sie Port 5985 für HTTP oder 5986 für HTTPS an.

Wenn der Zielcomputer die Verbindung zu einem anderen URI umleitet, verhindert PowerShell die Umleitung, es sei denn, Sie verwenden den AllowRedirection Parameter im Befehl.

Parametereigenschaften

Typ:

Uri[]

Standardwert:http://localhost:5985/WSMAN
Unterstützt Platzhalter:False
Nicht anzeigen:False
Aliase:URI (Uniform Resource Identifier), CU

Parametersätze

Uri
Position:0
Obligatorisch.:False
Wert aus Pipeline:False
Wert aus Pipeline nach dem Eigenschaftsnamen:False
Wert aus verbleibenden Argumenten:False
FilePathUri
Position:0
Obligatorisch.:False
Wert aus Pipeline:False
Wert aus Pipeline nach dem Eigenschaftsnamen:False
Wert aus verbleibenden Argumenten:False

-ContainerId

Gibt ein Array von Container-IDs an.

Parametereigenschaften

Typ:

String[]

Standardwert:None
Unterstützt Platzhalter:False
Nicht anzeigen:False

Parametersätze

ContainerId
Position:Named
Obligatorisch.:True
Wert aus Pipeline:False
Wert aus Pipeline nach dem Eigenschaftsnamen:True
Wert aus verbleibenden Argumenten:False
FilePathContainerId
Position:Named
Obligatorisch.:True
Wert aus Pipeline:False
Wert aus Pipeline nach dem Eigenschaftsnamen:True
Wert aus verbleibenden Argumenten:False

-Credential

Gibt ein Benutzerkonto an, das über die Berechtigung zum Ausführen dieser Aktion verfügt. Die Standardeinstellung ist der aktuelle Benutzer.

Geben Sie einen Benutzernamen ein, z. B. User01 oder Domain01\User01, oder geben Sie ein PSCredential-Objekt ein, das vom cmdlet Get-Credential generiert wird. Wenn Sie einen Benutzernamen eingeben, werden Sie aufgefordert, das Kennwort einzugeben.

Anmeldeinformationen werden in einem PSCredential-Objekt gespeichert, und das Kennwort wird als SecureString-gespeichert.

Hinweis

Weitere Informationen zu SecureString Datenschutz finden Sie unter Wie sicher ist SecureString?.

Parametereigenschaften

Typ:PSCredential
Standardwert:Current user
Unterstützt Platzhalter:False
Nicht anzeigen:False

Parametersätze

ComputerName
Position:Named
Obligatorisch.:False
Wert aus Pipeline:False
Wert aus Pipeline nach dem Eigenschaftsnamen:True
Wert aus verbleibenden Argumenten:False
FilePathComputerName
Position:Named
Obligatorisch.:False
Wert aus Pipeline:False
Wert aus Pipeline nach dem Eigenschaftsnamen:True
Wert aus verbleibenden Argumenten:False
Uri
Position:Named
Obligatorisch.:False
Wert aus Pipeline:False
Wert aus Pipeline nach dem Eigenschaftsnamen:True
Wert aus verbleibenden Argumenten:False
FilePathUri
Position:Named
Obligatorisch.:False
Wert aus Pipeline:False
Wert aus Pipeline nach dem Eigenschaftsnamen:True
Wert aus verbleibenden Argumenten:False
VMId
Position:Named
Obligatorisch.:True
Wert aus Pipeline:False
Wert aus Pipeline nach dem Eigenschaftsnamen:True
Wert aus verbleibenden Argumenten:False
VMName
Position:Named
Obligatorisch.:True
Wert aus Pipeline:False
Wert aus Pipeline nach dem Eigenschaftsnamen:True
Wert aus verbleibenden Argumenten:False
FilePathVMId
Position:Named
Obligatorisch.:True
Wert aus Pipeline:False
Wert aus Pipeline nach dem Eigenschaftsnamen:True
Wert aus verbleibenden Argumenten:False
FilePathVMName
Position:Named
Obligatorisch.:True
Wert aus Pipeline:False
Wert aus Pipeline nach dem Eigenschaftsnamen:True
Wert aus verbleibenden Argumenten:False

-EnableNetworkAccess

Gibt an, dass mit diesem Cmdlet ein interaktives Sicherheitstoken zu Loopbacksitzungen hinzugefügt wird. Mit dem interaktiven Token können Sie Befehle in der Loopbacksitzung ausführen, die Daten von anderen Computern abrufen. Sie können beispielsweise einen Befehl in der Sitzung ausführen, der XML-Dateien von einem Remotecomputer auf den lokalen Computer kopiert.

Eine Loopbacksitzung ist eine PSSession-, die auf demselben Computer stammt und endet. Um eine Loopbacksitzung zu erstellen, lassen Sie den ComputerName Parameter aus, oder legen Sie den Wert auf Punkt (.), localhost oder den Namen des lokalen Computers fest.

Standardmäßig werden Loopbacksitzungen mit einem Netzwerktoken erstellt, das möglicherweise nicht über ausreichende Berechtigungen zum Authentifizieren bei Remotecomputern verfügt.

Der EnableNetworkAccess Parameter ist nur in Loopbacksitzungen wirksam. Wenn Sie EnableNetworkAccess verwenden, wenn Sie eine Sitzung auf einem Remotecomputer erstellen, wird der Befehl erfolgreich ausgeführt, der Parameter wird jedoch ignoriert.

Sie können den Remotezugriff in einer Loopbacksitzung mithilfe des CredSSP- Werts des Authentication-Parameters zulassen, der die Sitzungsanmeldeinformationen an andere Computer delegiert.

Um den Computer vor bösartigem Zugriff zu schützen, können getrennte Loopbacksitzungen mit interaktiven Token, die mit EnableNetworkAccesserstellt wurden, nur von dem Computer erneut verbunden werden, auf dem die Sitzung erstellt wurde. Getrennte Sitzungen, die die CredSSP-Authentifizierung verwenden, können von anderen Computern erneut verbunden werden. Weitere Informationen finden Sie unter Disconnect-PSSession.

Dieser Parameter wurde in PowerShell 3.0 eingeführt.

Parametereigenschaften

Typ:SwitchParameter
Standardwert:False
Unterstützt Platzhalter:False
Nicht anzeigen:False

Parametersätze

ComputerName
Position:Named
Obligatorisch.:False
Wert aus Pipeline:False
Wert aus Pipeline nach dem Eigenschaftsnamen:False
Wert aus verbleibenden Argumenten:False
FilePathComputerName
Position:Named
Obligatorisch.:False
Wert aus Pipeline:False
Wert aus Pipeline nach dem Eigenschaftsnamen:False
Wert aus verbleibenden Argumenten:False
Uri
Position:Named
Obligatorisch.:False
Wert aus Pipeline:False
Wert aus Pipeline nach dem Eigenschaftsnamen:False
Wert aus verbleibenden Argumenten:False
FilePathUri
Position:Named
Obligatorisch.:False
Wert aus Pipeline:False
Wert aus Pipeline nach dem Eigenschaftsnamen:False
Wert aus verbleibenden Argumenten:False

-FilePath

Gibt ein lokales Skript an, das dieses Cmdlet auf einem oder mehreren Remotecomputern ausgeführt wird. Geben Sie den Pfad und Dateinamen des Skripts ein, oder geben Sie einen Skriptpfad an Invoke-Commandweiter. Das Skript muss auf dem lokalen Computer oder in einem Verzeichnis vorhanden sein, auf das der lokale Computer zugreifen kann. Verwenden Sie ArgumentList-, um die Werte von Parametern im Skript anzugeben.

Wenn Sie diesen Parameter verwenden, konvertiert PowerShell den Inhalt der angegebenen Skriptdatei in einen Skriptblock, überträgt den Skriptblock an den Remotecomputer und führt ihn auf dem Remotecomputer aus.

Parametereigenschaften

Typ:String
Standardwert:None
Unterstützt Platzhalter:False
Nicht anzeigen:False
Aliase:PSPath

Parametersätze

FilePathRunspace
Position:1
Obligatorisch.:True
Wert aus Pipeline:False
Wert aus Pipeline nach dem Eigenschaftsnamen:False
Wert aus verbleibenden Argumenten:False
FilePathComputerName
Position:1
Obligatorisch.:True
Wert aus Pipeline:False
Wert aus Pipeline nach dem Eigenschaftsnamen:False
Wert aus verbleibenden Argumenten:False
FilePathUri
Position:1
Obligatorisch.:True
Wert aus Pipeline:False
Wert aus Pipeline nach dem Eigenschaftsnamen:False
Wert aus verbleibenden Argumenten:False
FilePathVMId
Position:1
Obligatorisch.:True
Wert aus Pipeline:False
Wert aus Pipeline nach dem Eigenschaftsnamen:False
Wert aus verbleibenden Argumenten:False
FilePathVMName
Position:1
Obligatorisch.:True
Wert aus Pipeline:False
Wert aus Pipeline nach dem Eigenschaftsnamen:False
Wert aus verbleibenden Argumenten:False
FilePathContainerId
Position:1
Obligatorisch.:True
Wert aus Pipeline:False
Wert aus Pipeline nach dem Eigenschaftsnamen:False
Wert aus verbleibenden Argumenten:False
FilePathSSHHost
Position:1
Obligatorisch.:True
Wert aus Pipeline:False
Wert aus Pipeline nach dem Eigenschaftsnamen:False
Wert aus verbleibenden Argumenten:False
FilePathSSHHostHash
Position:1
Obligatorisch.:True
Wert aus Pipeline:False
Wert aus Pipeline nach dem Eigenschaftsnamen:False
Wert aus verbleibenden Argumenten:False

-HideComputerName

Gibt an, dass dieses Cmdlet den Computernamen jedes Objekts aus der Ausgabeanzeige ausgelassen. Standardmäßig wird der Name des Computers, auf dem das Objekt generiert wurde, in der Anzeige angezeigt.

Dieser Parameter wirkt sich nur auf die Ausgabeanzeige aus. Das Objekt wird nicht geändert.

Parametereigenschaften

Typ:SwitchParameter
Standardwert:False
Unterstützt Platzhalter:False
Nicht anzeigen:False
Aliase:HCN

Parametersätze

Session
Position:Named
Obligatorisch.:False
Wert aus Pipeline:False
Wert aus Pipeline nach dem Eigenschaftsnamen:False
Wert aus verbleibenden Argumenten:False
FilePathRunspace
Position:Named
Obligatorisch.:False
Wert aus Pipeline:False
Wert aus Pipeline nach dem Eigenschaftsnamen:False
Wert aus verbleibenden Argumenten:False
ComputerName
Position:Named
Obligatorisch.:False
Wert aus Pipeline:False
Wert aus Pipeline nach dem Eigenschaftsnamen:False
Wert aus verbleibenden Argumenten:False
FilePathComputerName
Position:Named
Obligatorisch.:False
Wert aus Pipeline:False
Wert aus Pipeline nach dem Eigenschaftsnamen:False
Wert aus verbleibenden Argumenten:False
Uri
Position:Named
Obligatorisch.:False
Wert aus Pipeline:False
Wert aus Pipeline nach dem Eigenschaftsnamen:False
Wert aus verbleibenden Argumenten:False
FilePathUri
Position:Named
Obligatorisch.:False
Wert aus Pipeline:False
Wert aus Pipeline nach dem Eigenschaftsnamen:False
Wert aus verbleibenden Argumenten:False
VMId
Position:Named
Obligatorisch.:False
Wert aus Pipeline:False
Wert aus Pipeline nach dem Eigenschaftsnamen:False
Wert aus verbleibenden Argumenten:False
VMName
Position:Named
Obligatorisch.:False
Wert aus Pipeline:False
Wert aus Pipeline nach dem Eigenschaftsnamen:False
Wert aus verbleibenden Argumenten:False
FilePathVMId
Position:Named
Obligatorisch.:False
Wert aus Pipeline:False
Wert aus Pipeline nach dem Eigenschaftsnamen:False
Wert aus verbleibenden Argumenten:False
FilePathVMName
Position:Named
Obligatorisch.:False
Wert aus Pipeline:False
Wert aus Pipeline nach dem Eigenschaftsnamen:False
Wert aus verbleibenden Argumenten:False
SSHHost
Position:Named
Obligatorisch.:False
Wert aus Pipeline:False
Wert aus Pipeline nach dem Eigenschaftsnamen:False
Wert aus verbleibenden Argumenten:False
ContainerId
Position:Named
Obligatorisch.:False
Wert aus Pipeline:False
Wert aus Pipeline nach dem Eigenschaftsnamen:False
Wert aus verbleibenden Argumenten:False
FilePathContainerId
Position:Named
Obligatorisch.:False
Wert aus Pipeline:False
Wert aus Pipeline nach dem Eigenschaftsnamen:False
Wert aus verbleibenden Argumenten:False
SSHHostHashParam
Position:Named
Obligatorisch.:False
Wert aus Pipeline:False
Wert aus Pipeline nach dem Eigenschaftsnamen:False
Wert aus verbleibenden Argumenten:False
FilePathSSHHost
Position:Named
Obligatorisch.:False
Wert aus Pipeline:False
Wert aus Pipeline nach dem Eigenschaftsnamen:False
Wert aus verbleibenden Argumenten:False
FilePathSSHHostHash
Position:Named
Obligatorisch.:False
Wert aus Pipeline:False
Wert aus Pipeline nach dem Eigenschaftsnamen:False
Wert aus verbleibenden Argumenten:False

-HostName

Gibt ein Array von Computernamen für eine ssh-basierte Verbindung (Secure Shell) an. Dies ähnelt dem parameter ComputerName, mit der Ausnahme, dass die Verbindung mit dem Remotecomputer über SSH und nicht über Windows WinRM hergestellt wird.

Dieser Parameter wurde in PowerShell 6.0 eingeführt.

Parametereigenschaften

Typ:

String[]

Standardwert:None
Unterstützt Platzhalter:False
Nicht anzeigen:False

Parametersätze

SSHHost
Position:Named
Obligatorisch.:True
Wert aus Pipeline:False
Wert aus Pipeline nach dem Eigenschaftsnamen:False
Wert aus verbleibenden Argumenten:False
FilePathSSHHost
Position:Named
Obligatorisch.:True
Wert aus Pipeline:False
Wert aus Pipeline nach dem Eigenschaftsnamen:False
Wert aus verbleibenden Argumenten:False

-InDisconnectedSession

Gibt an, dass dieses Cmdlet einen Befehl oder ein Skript in einer getrennten Sitzung ausführt.

Wenn Sie den Parameter InDisconnectedSession verwenden, erstellt Invoke-Command eine persistente Sitzung auf jedem Remotecomputer, startet den befehl, der durch den ScriptBlock oder FilePath Parameter angegeben wird, und trennt dann die Verbindung mit der Sitzung. Die Befehle werden weiterhin in den getrennten Sitzungen ausgeführt. InDisconnectedSession ermöglicht es Ihnen, Befehle auszuführen, ohne eine Verbindung mit den Remotesitzungen aufrechtzuerhalten. Und da die Sitzung getrennt wird, bevor Ergebnisse zurückgegeben werden, InDisconnectedSession sicherstellen, dass alle Befehlsergebnisse an die erneut verbundene Sitzung zurückgegeben werden, anstatt zwischen Sitzungen aufgeteilt zu werden.

Sie können InDisconnectedSession- nicht mit dem Parameter Session oder dem AsJob-Parameter verwenden.

Befehle, die InDisconnectedSession verwenden, geben ein PSSession--Objekt zurück, das die getrennte Sitzung darstellt. Sie geben die Befehlsausgabe nicht zurück. Um eine Verbindung mit der getrennten Sitzung herzustellen, verwenden Sie die Cmdlets Connect-PSSession oder Receive-PSSession. Verwenden Sie das cmdlet Receive-PSSession, um die Ergebnisse von Befehlen abzurufen, die in der Sitzung ausgeführt wurden. Wenn Sie Befehle ausführen möchten, die eine Ausgabe in einer getrennten Sitzung generieren, legen Sie den Wert der OutputBufferingMode Sitzungsoption auf Drop-fest. Wenn Sie beabsichtigen, eine Verbindung mit der getrennten Sitzung herzustellen, legen Sie das Leerlauftimeout in der Sitzung so fest, dass sie ausreichend Zeit für die Verbindung bietet, bevor Sie die Sitzung löschen.

Sie können den Ausgabepuffermodus und das Leerlauftimeout im SessionOption Parameter oder in der $PSSessionOption Einstellungsvariable festlegen. Weitere Informationen zu Sitzungsoptionen finden Sie unter New-PSSessionOption und about_Preference_Variables.

Weitere Informationen über die Funktion Disconnected Sessions finden Sie unter about_Remote_Disconnected_Sessions.

Dieser Parameter wurde in PowerShell 3.0 eingeführt.

Parametereigenschaften

Typ:SwitchParameter
Standardwert:False
Unterstützt Platzhalter:False
Nicht anzeigen:False
Aliase:Getrennt

Parametersätze

ComputerName
Position:Named
Obligatorisch.:False
Wert aus Pipeline:False
Wert aus Pipeline nach dem Eigenschaftsnamen:False
Wert aus verbleibenden Argumenten:False
FilePathComputerName
Position:Named
Obligatorisch.:False
Wert aus Pipeline:False
Wert aus Pipeline nach dem Eigenschaftsnamen:False
Wert aus verbleibenden Argumenten:False
Uri
Position:Named
Obligatorisch.:False
Wert aus Pipeline:False
Wert aus Pipeline nach dem Eigenschaftsnamen:False
Wert aus verbleibenden Argumenten:False
FilePathUri
Position:Named
Obligatorisch.:False
Wert aus Pipeline:False
Wert aus Pipeline nach dem Eigenschaftsnamen:False
Wert aus verbleibenden Argumenten:False

-InputObject

Gibt eingaben für den Befehl an. Geben Sie eine Variable ein, die die Objekte enthält, oder geben Sie einen Befehl oder einen Ausdruck ein, durch den die Objekte abgerufen werden.

Wenn Sie den parameter InputObject verwenden, verwenden Sie die $input automatische Variable im Wert des ScriptBlock-Parameters, um die Eingabeobjekte darzustellen.

Parametereigenschaften

Typ:PSObject
Standardwert:None
Unterstützt Platzhalter:False
Nicht anzeigen:False

Parametersätze

(All)
Position:Named
Obligatorisch.:False
Wert aus Pipeline:True
Wert aus Pipeline nach dem Eigenschaftsnamen:False
Wert aus verbleibenden Argumenten:False

-JobName

Gibt einen Anzeigenamen für den Hintergrundauftrag an. Standardmäßig werden Aufträge Job<n>benannt, wobei <n> eine Ordnungszahl ist.

Wenn Sie den JobName Parameter in einem Befehl verwenden, wird der Befehl als Auftrag ausgeführt, und Invoke-Command gibt ein Auftragsobjekt zurück, auch wenn Sie AsJob- nicht in den Befehl einschließen.

Weitere Informationen zu PowerShell-Hintergrundaufträgen finden Sie unter about_Jobs.

Parametereigenschaften

Typ:String
Standardwert:Job<n>
Unterstützt Platzhalter:False
Nicht anzeigen:False

Parametersätze

FilePathRunspace
Position:Named
Obligatorisch.:False
Wert aus Pipeline:False
Wert aus Pipeline nach dem Eigenschaftsnamen:False
Wert aus verbleibenden Argumenten:False
Session
Position:Named
Obligatorisch.:False
Wert aus Pipeline:False
Wert aus Pipeline nach dem Eigenschaftsnamen:False
Wert aus verbleibenden Argumenten:False
ComputerName
Position:Named
Obligatorisch.:False
Wert aus Pipeline:False
Wert aus Pipeline nach dem Eigenschaftsnamen:False
Wert aus verbleibenden Argumenten:False
FilePathComputerName
Position:Named
Obligatorisch.:False
Wert aus Pipeline:False
Wert aus Pipeline nach dem Eigenschaftsnamen:False
Wert aus verbleibenden Argumenten:False
Uri
Position:Named
Obligatorisch.:False
Wert aus Pipeline:False
Wert aus Pipeline nach dem Eigenschaftsnamen:False
Wert aus verbleibenden Argumenten:False
FilePathUri
Position:Named
Obligatorisch.:False
Wert aus Pipeline:False
Wert aus Pipeline nach dem Eigenschaftsnamen:False
Wert aus verbleibenden Argumenten:False
SSHHost
Position:Named
Obligatorisch.:False
Wert aus Pipeline:False
Wert aus Pipeline nach dem Eigenschaftsnamen:False
Wert aus verbleibenden Argumenten:False
ContainerId
Position:Named
Obligatorisch.:False
Wert aus Pipeline:False
Wert aus Pipeline nach dem Eigenschaftsnamen:False
Wert aus verbleibenden Argumenten:False
FilePathContainerId
Position:Named
Obligatorisch.:False
Wert aus Pipeline:False
Wert aus Pipeline nach dem Eigenschaftsnamen:False
Wert aus verbleibenden Argumenten:False
SSHHostHashParam
Position:Named
Obligatorisch.:False
Wert aus Pipeline:False
Wert aus Pipeline nach dem Eigenschaftsnamen:False
Wert aus verbleibenden Argumenten:False

-KeyFilePath

Gibt einen Schlüsseldateipfad an, der von Secure Shell (SSH) zum Authentifizieren eines Benutzers auf einem Remotecomputer verwendet wird.

SSH ermöglicht es, die Benutzerauthentifizierung über private und öffentliche Schlüssel als Alternative zur grundlegenden Kennwortauthentifizierung durchzuführen. Wenn der Remotecomputer für die Schlüsselauthentifizierung konfiguriert ist, kann dieser Parameter verwendet werden, um den Schlüssel bereitzustellen, der den Benutzer identifiziert.

Dieser Parameter wurde in PowerShell 6.0 eingeführt.

Parametereigenschaften

Typ:String
Standardwert:None
Unterstützt Platzhalter:False
Nicht anzeigen:False
Aliase:IdentityFilePath

Parametersätze

SSHHost
Position:Named
Obligatorisch.:False
Wert aus Pipeline:False
Wert aus Pipeline nach dem Eigenschaftsnamen:False
Wert aus verbleibenden Argumenten:False
FilePathSSHHost
Position:Named
Obligatorisch.:False
Wert aus Pipeline:False
Wert aus Pipeline nach dem Eigenschaftsnamen:False
Wert aus verbleibenden Argumenten:False

-NoNewScope

Gibt an, dass dieses Cmdlet den angegebenen Befehl im aktuellen Bereich ausführt. Standardmäßig führt Invoke-Command Befehle in ihrem eigenen Bereich aus.

Dieser Parameter ist nur in Befehlen gültig, die in der aktuellen Sitzung ausgeführt werden, d. h. Befehle, die sowohl die parameter ComputerName als auch Session weglassen.

Dieser Parameter wurde in PowerShell 3.0 eingeführt.

Parametereigenschaften

Typ:SwitchParameter
Standardwert:False
Unterstützt Platzhalter:False
Nicht anzeigen:False

Parametersätze

InProcess
Position:Named
Obligatorisch.:False
Wert aus Pipeline:False
Wert aus Pipeline nach dem Eigenschaftsnamen:False
Wert aus verbleibenden Argumenten:False

-Options

Gibt eine Hashtable von SSH-Optionen an, die beim Herstellen einer Verbindung mit einer Remote-SSH-basierten Sitzung verwendet werden. Mögliche Optionen sind alle Werte, die von der Unix-basierten Version des befehls ssh unterstützt werden.

Alle von Parametern explizit übergebenen Werte haben Vorrang vor Werten, die in der Options Hashtable übergeben werden. Wenn Sie beispielsweise den parameter Port verwenden, werden alle Port Schlüsselwertpaare außer Kraft gesetzt, die in der Options Hashtable übergeben werden.

Dieser Parameter wurde in PowerShell 7.3 hinzugefügt.

Parametereigenschaften

Typ:Hashtable
Standardwert:None
Unterstützt Platzhalter:False
Nicht anzeigen:False

Parametersätze

SSHHost
Position:Named
Obligatorisch.:False
Wert aus Pipeline:False
Wert aus Pipeline nach dem Eigenschaftsnamen:False
Wert aus verbleibenden Argumenten:False
FilePathSSHHost
Position:Named
Obligatorisch.:False
Wert aus Pipeline:False
Wert aus Pipeline nach dem Eigenschaftsnamen:False
Wert aus verbleibenden Argumenten:False

-Port

Gibt den Netzwerkport auf dem Remotecomputer an, der für diesen Befehl verwendet wird. Zum Herstellen einer Verbindung mit einem Remotecomputer muss der Remotecomputer den für die Verbindung verwendeten Port abhören. Die Standardports sind 5985 (WinRM-Port für HTTP) und 5986 (WinRM-Port für HTTPS).

Konfigurieren Sie vor der Verwendung eines alternativen Ports den WinRM-Listener auf dem Remotecomputer so, dass er an diesem Port lauscht. Geben Sie zum Konfigurieren des Listeners die folgenden beiden Befehle an der PowerShell-Eingabeaufforderung ein:

Remove-Item -Path WSMan:\Localhost\listener\listener* -Recurse

New-Item -Path WSMan:\Localhost\listener -Transport http -Address * -Port \<port-number\>

Verwenden Sie nicht den Parameter Port, es sei denn, Sie müssen. Der im Befehl festgelegte Port gilt für alle Computer oder Sitzungen, auf denen der Befehl ausgeführt wird. Eine alternative Porteinstellung kann verhindern, dass der Befehl auf allen Computern ausgeführt wird.

Parametereigenschaften

Typ:Int32
Standardwert:None
Unterstützt Platzhalter:False
Nicht anzeigen:False

Parametersätze

ComputerName
Position:Named
Obligatorisch.:False
Wert aus Pipeline:False
Wert aus Pipeline nach dem Eigenschaftsnamen:False
Wert aus verbleibenden Argumenten:False
FilePathComputerName
Position:Named
Obligatorisch.:False
Wert aus Pipeline:False
Wert aus Pipeline nach dem Eigenschaftsnamen:False
Wert aus verbleibenden Argumenten:False
SSHHost
Position:Named
Obligatorisch.:False
Wert aus Pipeline:False
Wert aus Pipeline nach dem Eigenschaftsnamen:False
Wert aus verbleibenden Argumenten:False

-RemoteDebug

Wird verwendet, um den aufgerufenen Befehl im Debugmodus in der Remote-PowerShell-Sitzung auszuführen.

Parametereigenschaften

Typ:SwitchParameter
Standardwert:False
Unterstützt Platzhalter:False
Nicht anzeigen:False

Parametersätze

Session
Position:Named
Obligatorisch.:False
Wert aus Pipeline:False
Wert aus Pipeline nach dem Eigenschaftsnamen:False
Wert aus verbleibenden Argumenten:False
FilePathRunspace
Position:Named
Obligatorisch.:False
Wert aus Pipeline:False
Wert aus Pipeline nach dem Eigenschaftsnamen:False
Wert aus verbleibenden Argumenten:False
ComputerName
Position:Named
Obligatorisch.:False
Wert aus Pipeline:False
Wert aus Pipeline nach dem Eigenschaftsnamen:False
Wert aus verbleibenden Argumenten:False
FilePathComputerName
Position:Named
Obligatorisch.:False
Wert aus Pipeline:False
Wert aus Pipeline nach dem Eigenschaftsnamen:False
Wert aus verbleibenden Argumenten:False
Uri
Position:Named
Obligatorisch.:False
Wert aus Pipeline:False
Wert aus Pipeline nach dem Eigenschaftsnamen:False
Wert aus verbleibenden Argumenten:False
FilePathUri
Position:Named
Obligatorisch.:False
Wert aus Pipeline:False
Wert aus Pipeline nach dem Eigenschaftsnamen:False
Wert aus verbleibenden Argumenten:False
VMId
Position:Named
Obligatorisch.:False
Wert aus Pipeline:False
Wert aus Pipeline nach dem Eigenschaftsnamen:False
Wert aus verbleibenden Argumenten:False
VMName
Position:Named
Obligatorisch.:False
Wert aus Pipeline:False
Wert aus Pipeline nach dem Eigenschaftsnamen:False
Wert aus verbleibenden Argumenten:False
FilePathVMId
Position:Named
Obligatorisch.:False
Wert aus Pipeline:False
Wert aus Pipeline nach dem Eigenschaftsnamen:False
Wert aus verbleibenden Argumenten:False
FilePathVMName
Position:Named
Obligatorisch.:False
Wert aus Pipeline:False
Wert aus Pipeline nach dem Eigenschaftsnamen:False
Wert aus verbleibenden Argumenten:False
SSHHost
Position:Named
Obligatorisch.:False
Wert aus Pipeline:False
Wert aus Pipeline nach dem Eigenschaftsnamen:False
Wert aus verbleibenden Argumenten:False
ContainerId
Position:Named
Obligatorisch.:False
Wert aus Pipeline:False
Wert aus Pipeline nach dem Eigenschaftsnamen:False
Wert aus verbleibenden Argumenten:False
FilePathContainerId
Position:Named
Obligatorisch.:False
Wert aus Pipeline:False
Wert aus Pipeline nach dem Eigenschaftsnamen:False
Wert aus verbleibenden Argumenten:False
SSHHostHashParam
Position:Named
Obligatorisch.:False
Wert aus Pipeline:False
Wert aus Pipeline nach dem Eigenschaftsnamen:False
Wert aus verbleibenden Argumenten:False
FilePathSSHHost
Position:Named
Obligatorisch.:False
Wert aus Pipeline:False
Wert aus Pipeline nach dem Eigenschaftsnamen:False
Wert aus verbleibenden Argumenten:False
FilePathSSHHostHash
Position:Named
Obligatorisch.:False
Wert aus Pipeline:False
Wert aus Pipeline nach dem Eigenschaftsnamen:False
Wert aus verbleibenden Argumenten:False

-RunAsAdministrator

Gibt an, dass dieses Cmdlet einen Befehl als Administrator aufruft.

Parametereigenschaften

Typ:SwitchParameter
Standardwert:False
Unterstützt Platzhalter:False
Nicht anzeigen:False

Parametersätze

ContainerId
Position:Named
Obligatorisch.:False
Wert aus Pipeline:False
Wert aus Pipeline nach dem Eigenschaftsnamen:False
Wert aus verbleibenden Argumenten:False
FilePathContainerId
Position:Named
Obligatorisch.:False
Wert aus Pipeline:False
Wert aus Pipeline nach dem Eigenschaftsnamen:False
Wert aus verbleibenden Argumenten:False

-ScriptBlock

Gibt die auszuführenden Befehle an. Schließen Sie die Befehle in geschweifte Klammern ({ }) ein, um einen Skriptblock zu erstellen. Wenn Sie Invoke-Command verwenden, um einen Befehl remote auszuführen, werden alle Variablen im Befehl auf dem Remotecomputer ausgewertet.

Hinweis

Parameter für den Scriptblock können nur von ArgumentList nach Position übergeben werden. Schalterparameter können nicht nach Position übergeben werden. Wenn Sie einen Parameter benötigen, der sich wie ein SwitchParameter Typ verhält, verwenden Sie stattdessen einen booleschen Typ.

Parametereigenschaften

Typ:ScriptBlock
Standardwert:None
Unterstützt Platzhalter:False
Nicht anzeigen:False
Aliase:Befehl

Parametersätze

InProcess
Position:0
Obligatorisch.:True
Wert aus Pipeline:False
Wert aus Pipeline nach dem Eigenschaftsnamen:False
Wert aus verbleibenden Argumenten:False
Session
Position:0
Obligatorisch.:True
Wert aus Pipeline:False
Wert aus Pipeline nach dem Eigenschaftsnamen:False
Wert aus verbleibenden Argumenten:False
ComputerName
Position:0
Obligatorisch.:True
Wert aus Pipeline:False
Wert aus Pipeline nach dem Eigenschaftsnamen:False
Wert aus verbleibenden Argumenten:False
Uri
Position:0
Obligatorisch.:True
Wert aus Pipeline:False
Wert aus Pipeline nach dem Eigenschaftsnamen:False
Wert aus verbleibenden Argumenten:False
VMId
Position:0
Obligatorisch.:True
Wert aus Pipeline:False
Wert aus Pipeline nach dem Eigenschaftsnamen:False
Wert aus verbleibenden Argumenten:False
VMName
Position:0
Obligatorisch.:True
Wert aus Pipeline:False
Wert aus Pipeline nach dem Eigenschaftsnamen:False
Wert aus verbleibenden Argumenten:False
SSHHost
Position:0
Obligatorisch.:True
Wert aus Pipeline:False
Wert aus Pipeline nach dem Eigenschaftsnamen:False
Wert aus verbleibenden Argumenten:False
ContainerId
Position:0
Obligatorisch.:True
Wert aus Pipeline:False
Wert aus Pipeline nach dem Eigenschaftsnamen:False
Wert aus verbleibenden Argumenten:False
SSHHostHashParam
Position:0
Obligatorisch.:True
Wert aus Pipeline:False
Wert aus Pipeline nach dem Eigenschaftsnamen:False
Wert aus verbleibenden Argumenten:False

-Session

Gibt ein Array von Sitzungen an, in denen dieses Cmdlet den Befehl ausführt. Geben Sie eine Variable ein, die PSSession--Objekte oder einen Befehl enthält, der die PSSession--Objekte erstellt oder abruft, z. B. ein New-PSSession- oder Get-PSSession-Befehl.

Wenn Sie eine PSSession-erstellen, stellt PowerShell eine dauerhafte Verbindung mit dem Remotecomputer her. Verwenden Sie eine PSSession-, um eine Reihe verwandter Befehle auszuführen, die Daten freigeben. Verwenden Sie zum Ausführen eines einzelnen Befehls oder einer Reihe nicht verknüpfter Befehle den parameter ComputerName. Weitere Informationen finden Sie unter about_PSSessions.

Parametereigenschaften

Typ:

PSSession[]

Standardwert:None
Unterstützt Platzhalter:False
Nicht anzeigen:False

Parametersätze

Session
Position:0
Obligatorisch.:False
Wert aus Pipeline:False
Wert aus Pipeline nach dem Eigenschaftsnamen:False
Wert aus verbleibenden Argumenten:False
FilePathRunspace
Position:0
Obligatorisch.:False
Wert aus Pipeline:False
Wert aus Pipeline nach dem Eigenschaftsnamen:False
Wert aus verbleibenden Argumenten:False

-SessionName

Gibt einen Anzeigenamen für eine getrennte Sitzung an. Sie können den Namen verwenden, um in nachfolgenden Befehlen auf die Sitzung zu verweisen, z. B. einen Get-PSSession-Befehl. Dieser Parameter ist nur für den Parameter InDisconnectedSession gültig.

Dieser Parameter wurde in PowerShell 3.0 eingeführt.

Parametereigenschaften

Typ:

String[]

Standardwert:None
Unterstützt Platzhalter:False
Nicht anzeigen:False

Parametersätze

ComputerName
Position:Named
Obligatorisch.:False
Wert aus Pipeline:False
Wert aus Pipeline nach dem Eigenschaftsnamen:False
Wert aus verbleibenden Argumenten:False
FilePathComputerName
Position:Named
Obligatorisch.:False
Wert aus Pipeline:False
Wert aus Pipeline nach dem Eigenschaftsnamen:False
Wert aus verbleibenden Argumenten:False

-SessionOption

Gibt erweiterte Optionen für die Sitzung an. Geben Sie ein SessionOption-Objekt ein, z. B. ein Objekt, das Sie mit dem Cmdlet New-PSSessionOption erstellen, oder eine Hashtabelle, in der die Schlüssel Sitzungsoptionsnamen sind und die Werte Sitzungsoptionswerte sind.

Hinweis

Wenn Sie eine Hashtable für SessionOption-angeben, konvertiert PowerShell die Hashtable in ein System.Management.Automation.Remoting.PSSessionOption-Objekt. Die Werte für schlüssel, die in der Hashtabelle angegeben sind, werden in die übereinstimmende Eigenschaft des Objekts umgegossen. Dies verhält sich anders als das Aufrufen von New-PSSessionOption. Die System.TimeSpan Werte für die Timeouteigenschaften, z. B. IdleTimeout-, konvertieren einen ganzzahligen Wert anstelle von Millisekunden in Teilstriche. Weitere Informationen zum PSSessionOption--Objekt und dessen Eigenschaften finden Sie unter PSSessionOption-

Die Standardwerte für die Optionen werden durch den Wert der $PSSessionOption Einstellungsvariablen bestimmt, wenn sie festgelegt ist. Andernfalls werden die Standardwerte durch Optionen festgelegt, die in der Sitzungskonfiguration festgelegt sind.

Die Sitzungsoptionswerte haben Vorrang vor Standardwerten für Sitzungen, die in der einstellungsvariablen $PSSessionOption und in der Sitzungskonfiguration festgelegt sind. Sie haben jedoch keine Vorrang vor maximal festgelegten Werten, Kontingenten oder Grenzwerten in der Sitzungskonfiguration.

Eine Beschreibung der Sitzungsoptionen, die die Standardwerte enthalten, finden Sie unter New-PSSessionOption. Informationen zur $PSSessionOption Einstellungsvariablen finden Sie unter about_Preference_Variables. Weitere Informationen zu Sitzungskonfigurationen finden Sie unter about_Session_Configurations.

Parametereigenschaften

Typ:PSSessionOption
Standardwert:None
Unterstützt Platzhalter:False
Nicht anzeigen:False

Parametersätze

ComputerName
Position:Named
Obligatorisch.:False
Wert aus Pipeline:False
Wert aus Pipeline nach dem Eigenschaftsnamen:False
Wert aus verbleibenden Argumenten:False
FilePathComputerName
Position:Named
Obligatorisch.:False
Wert aus Pipeline:False
Wert aus Pipeline nach dem Eigenschaftsnamen:False
Wert aus verbleibenden Argumenten:False
Uri
Position:Named
Obligatorisch.:False
Wert aus Pipeline:False
Wert aus Pipeline nach dem Eigenschaftsnamen:False
Wert aus verbleibenden Argumenten:False
FilePathUri
Position:Named
Obligatorisch.:False
Wert aus Pipeline:False
Wert aus Pipeline nach dem Eigenschaftsnamen:False
Wert aus verbleibenden Argumenten:False

-SSHConnection

Dieser Parameter verwendet ein Array von Hashtabellen, in denen jede Hashtabelle einen oder mehrere Verbindungsparameter enthält, die zum Herstellen einer SSH-Verbindung (Secure Shell) erforderlich sind. Der parameter SSHConnection ist nützlich, um mehrere Sitzungen zu erstellen, bei denen jede Sitzung unterschiedliche Verbindungsinformationen benötigt.

Die Hashtable weist die folgenden Elemente auf:

  • ComputerName (oder HostName)
  • Hafen
  • Nutzername
  • KeyFilePath- (oder IdentityFilePath-)

ComputerName (oder HostName) ist das einzige Schlüssel-Wert-Paar, das erforderlich ist.

Dieser Parameter wurde in PowerShell 6.0 eingeführt.

Parametereigenschaften

Typ:

Hashtable[]

Standardwert:None
Unterstützt Platzhalter:False
Nicht anzeigen:False

Parametersätze

SSHHostHashParam
Position:Named
Obligatorisch.:True
Wert aus Pipeline:False
Wert aus Pipeline nach dem Eigenschaftsnamen:False
Wert aus verbleibenden Argumenten:False
FilePathSSHHostHash
Position:Named
Obligatorisch.:True
Wert aus Pipeline:False
Wert aus Pipeline nach dem Eigenschaftsnamen:False
Wert aus verbleibenden Argumenten:False

-SSHTransport

Gibt an, dass die Remoteverbindung mit Secure Shell (SSH) hergestellt wird.

Standardmäßig verwendet PowerShell Windows WinRM, um eine Verbindung mit einem Remotecomputer herzustellen. Dieser Switch zwingt PowerShell, den HostName Parameter für die Einrichtung einer SSH-basierten Remoteverbindung zu verwenden.

Dieser Parameter wurde in PowerShell 6.0 eingeführt.

Parametereigenschaften

Typ:SwitchParameter
Standardwert:False
Zulässige Werte:true
Unterstützt Platzhalter:False
Nicht anzeigen:False

Parametersätze

SSHHost
Position:Named
Obligatorisch.:False
Wert aus Pipeline:False
Wert aus Pipeline nach dem Eigenschaftsnamen:False
Wert aus verbleibenden Argumenten:False
FilePathSSHHost
Position:Named
Obligatorisch.:False
Wert aus Pipeline:False
Wert aus Pipeline nach dem Eigenschaftsnamen:False
Wert aus verbleibenden Argumenten:False

-Subsystem

Gibt das SSH-Subsystem an, das für das neue PSSession-verwendet wird.

Dies gibt das Subsystem an, das für das Ziel verwendet werden soll, wie in sshd_config definiert. Das Subsystem startet eine bestimmte Version von PowerShell mit vordefinierten Parametern. Wenn das angegebene Subsystem nicht auf dem Remotecomputer vorhanden ist, schlägt der Befehl fehl.

Wenn dieser Parameter nicht verwendet wird, ist der Standardwert das powershell Subsystem.

Parametereigenschaften

Typ:String
Standardwert:powershell
Unterstützt Platzhalter:False
Nicht anzeigen:False

Parametersätze

SSHHost
Position:Named
Obligatorisch.:False
Wert aus Pipeline:False
Wert aus Pipeline nach dem Eigenschaftsnamen:False
Wert aus verbleibenden Argumenten:False
FilePathSSHHost
Position:Named
Obligatorisch.:False
Wert aus Pipeline:False
Wert aus Pipeline nach dem Eigenschaftsnamen:False
Wert aus verbleibenden Argumenten:False

-ThrottleLimit

Gibt die maximale Anzahl gleichzeitiger Verbindungen an, die zum Ausführen dieses Befehls eingerichtet werden können. Wenn Sie diesen Parameter weglassen oder einen Wert von 0 eingeben, wird der Standardwert 32 verwendet.

Der Drosselungsgrenzwert gilt nur für den aktuellen Befehl, nicht für die Sitzung oder den Computer.

Parametereigenschaften

Typ:Int32
Standardwert:32
Unterstützt Platzhalter:False
Nicht anzeigen:False

Parametersätze

Session
Position:Named
Obligatorisch.:False
Wert aus Pipeline:False
Wert aus Pipeline nach dem Eigenschaftsnamen:False
Wert aus verbleibenden Argumenten:False
FilePathRunspace
Position:Named
Obligatorisch.:False
Wert aus Pipeline:False
Wert aus Pipeline nach dem Eigenschaftsnamen:False
Wert aus verbleibenden Argumenten:False
ComputerName
Position:Named
Obligatorisch.:False
Wert aus Pipeline:False
Wert aus Pipeline nach dem Eigenschaftsnamen:False
Wert aus verbleibenden Argumenten:False
FilePathComputerName
Position:Named
Obligatorisch.:False
Wert aus Pipeline:False
Wert aus Pipeline nach dem Eigenschaftsnamen:False
Wert aus verbleibenden Argumenten:False
Uri
Position:Named
Obligatorisch.:False
Wert aus Pipeline:False
Wert aus Pipeline nach dem Eigenschaftsnamen:False
Wert aus verbleibenden Argumenten:False
FilePathUri
Position:Named
Obligatorisch.:False
Wert aus Pipeline:False
Wert aus Pipeline nach dem Eigenschaftsnamen:False
Wert aus verbleibenden Argumenten:False
VMId
Position:Named
Obligatorisch.:False
Wert aus Pipeline:False
Wert aus Pipeline nach dem Eigenschaftsnamen:False
Wert aus verbleibenden Argumenten:False
VMName
Position:Named
Obligatorisch.:False
Wert aus Pipeline:False
Wert aus Pipeline nach dem Eigenschaftsnamen:False
Wert aus verbleibenden Argumenten:False
FilePathVMId
Position:Named
Obligatorisch.:False
Wert aus Pipeline:False
Wert aus Pipeline nach dem Eigenschaftsnamen:False
Wert aus verbleibenden Argumenten:False
FilePathVMName
Position:Named
Obligatorisch.:False
Wert aus Pipeline:False
Wert aus Pipeline nach dem Eigenschaftsnamen:False
Wert aus verbleibenden Argumenten:False
ContainerId
Position:Named
Obligatorisch.:False
Wert aus Pipeline:False
Wert aus Pipeline nach dem Eigenschaftsnamen:False
Wert aus verbleibenden Argumenten:False
FilePathContainerId
Position:Named
Obligatorisch.:False
Wert aus Pipeline:False
Wert aus Pipeline nach dem Eigenschaftsnamen:False
Wert aus verbleibenden Argumenten:False

-UserName

Gibt den Benutzernamen für das Konto an, mit dem ein Befehl auf dem Remotecomputer ausgeführt wird. Die Benutzerauthentifizierungsmethode hängt davon ab, wie Secure Shell (SSH) auf dem Remotecomputer konfiguriert ist.

Wenn SSH für die grundlegende Kennwortauthentifizierung konfiguriert ist, werden Sie zur Eingabe des Benutzerkennworts aufgefordert.

Wenn SSH für die schlüsselbasierte Benutzerauthentifizierung konfiguriert ist, kann über den KeyFilePath Parameter ein Schlüsseldateipfad bereitgestellt werden, und es tritt keine Kennwortaufforderung auf. Wenn sich die Clientbenutzerschlüsseldatei an einem bekannten SSH-Speicherort befindet, wird der KeyFilePath Parameter nicht für die schlüsselbasierte Authentifizierung benötigt, und die Benutzerauthentifizierung erfolgt automatisch basierend auf dem Benutzernamen. Weitere Informationen finden Sie in der SSH-Dokumentation Ihrer Plattform zur schlüsselbasierten Benutzerauthentifizierung.

Dies ist kein erforderlicher Parameter. Wenn der parameter UserName nicht angegeben ist, wird der aktuell angemeldete Benutzername für die Verbindung verwendet.

Dieser Parameter wurde in PowerShell 6.0 eingeführt.

Parametereigenschaften

Typ:String
Standardwert:None
Unterstützt Platzhalter:False
Nicht anzeigen:False

Parametersätze

SSHHost
Position:Named
Obligatorisch.:False
Wert aus Pipeline:False
Wert aus Pipeline nach dem Eigenschaftsnamen:False
Wert aus verbleibenden Argumenten:False
FilePathSSHHost
Position:Named
Obligatorisch.:False
Wert aus Pipeline:False
Wert aus Pipeline nach dem Eigenschaftsnamen:False
Wert aus verbleibenden Argumenten:False

-UseSSL

Gibt an, dass dieses Cmdlet das SSL-Protokoll (Secure Sockets Layer) verwendet, um eine Verbindung mit dem Remotecomputer herzustellen. Standardmäßig wird SSL nicht verwendet.

WS-Management verschlüsselt alle über das Netzwerk übertragenen PowerShell-Inhalte. Der UseSSL- Parameter ist ein zusätzlicher Schutz, der die Daten über ein HTTPS und nicht über HTTP sendet.

Wenn Sie diesen Parameter verwenden, ssl jedoch nicht für den Port verfügbar ist, der für den Befehl verwendet wird, schlägt der Befehl fehl.

Parametereigenschaften

Typ:SwitchParameter
Standardwert:False
Unterstützt Platzhalter:False
Nicht anzeigen:False

Parametersätze

ComputerName
Position:Named
Obligatorisch.:False
Wert aus Pipeline:False
Wert aus Pipeline nach dem Eigenschaftsnamen:False
Wert aus verbleibenden Argumenten:False
FilePathComputerName
Position:Named
Obligatorisch.:False
Wert aus Pipeline:False
Wert aus Pipeline nach dem Eigenschaftsnamen:False
Wert aus verbleibenden Argumenten:False

-VMId

Gibt ein Array von IDs von virtuellen Computern an.

Parametereigenschaften

Typ:

Guid[]

Standardwert:None
Unterstützt Platzhalter:False
Nicht anzeigen:False
Aliase:VMGuid

Parametersätze

VMId
Position:0
Obligatorisch.:True
Wert aus Pipeline:False
Wert aus Pipeline nach dem Eigenschaftsnamen:True
Wert aus verbleibenden Argumenten:False
FilePathVMId
Position:0
Obligatorisch.:True
Wert aus Pipeline:False
Wert aus Pipeline nach dem Eigenschaftsnamen:True
Wert aus verbleibenden Argumenten:False

-VMName

Gibt ein Array von Namen virtueller Computer an.

Parametereigenschaften

Typ:

String[]

Standardwert:None
Unterstützt Platzhalter:False
Nicht anzeigen:False

Parametersätze

VMName
Position:Named
Obligatorisch.:True
Wert aus Pipeline:False
Wert aus Pipeline nach dem Eigenschaftsnamen:True
Wert aus verbleibenden Argumenten:False
FilePathVMName
Position:Named
Obligatorisch.:True
Wert aus Pipeline:False
Wert aus Pipeline nach dem Eigenschaftsnamen:True
Wert aus verbleibenden Argumenten:False

CommonParameters

Dieses Cmdlet unterstützt die allgemeinen Parameter -Debug, -ErrorAction, -ErrorVariable, -InformationAction, -InformationVariable, -OutBuffer, -OutVariable, -PipelineVariable, -ProgressAction, -Verbose, -WarningAction und -WarningVariable. Weitere Informationen findest du unter about_CommonParameters.

Eingaben

ScriptBlock

Sie können einen Befehl in einem Skriptblock an Invoke-Commandweitergeleitet werden. Verwenden Sie die $input automatische Variable, um die Eingabeobjekte im Befehl darzustellen.

Ausgaben

System.Management.Automation.PSRemotingJob

Wenn Sie den parameter AsJob verwenden, gibt dieses Cmdlet ein Auftragsobjekt zurück.

PSSession

Wenn Sie den Parameter InDisconnectedSession verwenden, gibt dieses Cmdlet ein PSSession--Objekt zurück.

Object

Standardmäßig gibt dieses Cmdlet die Ausgabe des aufgerufenen Befehls zurück, bei dem es sich um den Wert des ScriptBlock-Parameters handelt.

Hinweise

PowerShell enthält die folgenden Aliase für Invoke-Command:

  • Alle Plattformen:
    • icm

Unter Windows Vista und höheren Versionen des Windows-Betriebssystems müssen Sie PowerShell mithilfe der Option ComputerName Parameter von Invoke-Command ausführen, um einen Befehl auf dem lokalen Computer auszuführen, indem Sie die Option "Als Administrator ausführen" verwenden.

Wenn Sie Befehle auf mehreren Computern ausführen, stellt PowerShell eine Verbindung mit den Computern in der Reihenfolge dar, in der sie in der Liste angezeigt werden. Die Befehlsausgabe wird jedoch in der Reihenfolge angezeigt, in der sie von den Remotecomputern empfangen wird, was möglicherweise anders ist.

Fehler, die aus dem Befehl resultieren, der Invoke-Command ausgeführt wird, sind in den Befehlsergebnissen enthalten. Fehler, die fehler in einem lokalen Befehl beenden würden, werden als nicht beendete Fehler in einem Remotebefehl behandelt. Diese Strategie stellt sicher, dass das Beenden von Fehlern auf einem Computer den Befehl auf allen Computern, auf denen sie ausgeführt wird, nicht schließen. Diese Vorgehensweise wird auch dann verwendet, wenn ein Remotebefehl auf einem einzelnen Computer ausgeführt wird.

Wenn sich der Remotecomputer nicht in einer Domäne befindet, der der lokale Computer vertraut, kann der Computer die Anmeldeinformationen des Benutzers möglicherweise nicht authentifizieren. Um den Remotecomputer zur Liste der vertrauenswürdigen Hosts in WS-Management hinzuzufügen, verwenden Sie den folgenden Befehl im WSMan Anbieter, wobei <Remote-Computer-Name> der Name des Remotecomputers ist:

Set-Item -Path WSMan:\Localhost\Client\TrustedHosts -Value \<Remote-Computer-Name\>

Wenn Sie eine PSSession- mit dem Parameter "InDisconnectedSession" trennen, wird der Sitzungsstatus Getrennt und die Verfügbarkeit None. Der Wert der eigenschaft State ist relativ zur aktuellen Sitzung. Ein Wert von Disconnected bedeutet, dass die PSSession- nicht mit der aktuellen Sitzung verbunden ist. Das bedeutet jedoch nicht, dass die PSSession von allen Sitzungen getrennt ist. Möglicherweise ist sie mit einer anderen Sitzung verbunden. Um festzustellen, ob Sie eine Verbindung mit der Sitzung herstellen oder erneut herstellen können, verwenden Sie die Eigenschaft Availability.

Ein Availability Wert von None gibt an, dass Sie eine Verbindung mit der Sitzung herstellen können. Ein Wert von Busy gibt an, dass Sie keine Verbindung mit der PSSession- herstellen können, da sie mit einer anderen Sitzung verbunden ist. Weitere Informationen zu den Werten der eigenschaft State Sitzungen finden Sie unter RunspaceState. Weitere Informationen zu den Werten der Eigenschaft Availability von Sitzungen finden Sie unter RunspaceAvailability.

Die parameter HostName und SSHConnection wurden ab PowerShell 6.0 eingeschlossen. Sie wurden hinzugefügt, um PowerShell-Remoting basierend auf Secure Shell (SSH) bereitzustellen. PowerShell und SSH werden auf mehreren Plattformen (Windows, Linux, macOS) und PowerShell-Remoting auf diesen Plattformen unterstützt, auf denen PowerShell und SSH installiert und konfiguriert sind. Dies unterscheidet sich von der vorherigen Windows-Nur-Remoting, die auf WinRM basiert, und viele der WinRM-spezifischen Features und Einschränkungen gelten nicht. WinRM-basierte Kontingente, Sitzungsoptionen, benutzerdefinierte Endpunktkonfiguration und Features zum Trennen/Erneutes Verbinden werden derzeit nicht unterstützt. Weitere Informationen zum Einrichten von PowerShell SSH-Remoting finden Sie unter PowerShell Remoting Over SSH.

Die ssh ausführbare Datei ruft Konfigurationsdaten aus den folgenden Quellen in der folgenden Reihenfolge ab:

  1. Befehlszeilenoptionen
  2. Konfigurationsdatei des Benutzers (~/.ssh/config)
  3. systemweite Konfigurationsdatei (/etc/ssh/ssh_config)

Die folgenden Cmdlet-Parameter werden ssh Parametern und Optionen zugeordnet:

Cmdlet-Parameter ssh-Parameter entspreche ssh--o-Option
-KeyFilePath -i <KeyFilePath> -o IdentityFile=<KeyFilePath>
-UserName -l <UserName> -o User=<UserName>
-Port -p <Port> -o Port=<Port>
-ComputerName -Subsystem -s <ComputerName> <Subsystem> -o Host=<ComputerName>

Alle von Parametern explizit übergebenen Werte haben Vorrang vor Werten, die in der Options Hashtable übergeben werden. Weitere Informationen zu ssh_config Dateien finden Sie unter ssh_config(5).