about_Remote_Variables
Letzte Aktualisierung: Mai 2014
Betrifft: Windows PowerShell 4.0, Windows PowerShell 5.0
THEMA
about_Remote_Variables
KURZE BESCHREIBUNG
Erläutert die Verwendung von lokalen Variablen und Remotevariablen in Remotebefehlen.
LANGE BESCHREIBUNG
Sie können Variablen in Befehlen verwenden, die Sie auf Remote-Computern ausführen. Weisen Sie einfach der Variablen einen Wert zu, und verwenden Sie dann die Variable anstelle des Werts.
Standardmäßig wird für Variablen in Remote-Befehlen angenommen, dass sie in der Sitzung definiert wurden, in welcher der Befehl ausgeführt wird. Sie können auch Variablen verwenden, die in der lokalen Sitzung definiert sind, aber Sie müssen diese im Befehl als lokale Variablen identifizieren.
VERWENDEN VON REMOTE-VARIABLEN
Windows PowerShell® geht davon aus, dass die in Remote-Befehlen verwendeten Variablen in der Sitzung definiert wurden, in welcher der Befehl ausgeführt wird.
Im folgenden Beispiel wird die $ps-Variable in der temporären Sitzung definiert, in welcher der Get-WinEvent-Befehl ausgeführt wird.
PS C:\>Invoke-Command -ComputerName S1 -ScriptBlock {$ps = "Windows PowerShell"; Get-WinEvent -LogName $ps}
In gleicher Weise muss, wenn der Befehl in einer persistenten Sitzung (PSSession) ausgeführt wird, die Remote-Variable in derselben PSSession definiert werden.
PS C:\>$s = New-PSSession -ComputerName S1
PS C:\>Invoke-Command -ComputerName S1 -ScriptBlock {$ps = "Windows PowerShell"}
PS C:\>Invoke-Command -Sessions $s -ScriptBlock {Get-WinEvent -LogName $ps}
VERWENDEN VON LOKALEN VARIABLEN
Außerdem können Sie lokale Variablen in Remote-Befehlen verwenden, Sie müssen jedoch angeben, dass die Variable in der lokalen Sitzung definiert ist.
Ab Windows PowerShell 3.0 können Sie den Using-Bereichsmodifizierer verwenden, um eine lokale Variable in einem Remote-Befehl zu identifizieren.
Die Syntax von Using lautet folgendermaßen:
The syntax is:
$Using:<VariableName>
Im folgenden Beispiel wird die $ps-Variable in der lokalen Sitzung erstellt, aber sie wird in der Sitzung verwendet, in welcher der Befehl ausgeführt wird. Der Using-Bereichsmodifizierer identifiziert $ps als lokale Variable.Abschnittstext hier einfügen.
PS C:\>$ps = "Windows PowerShell"
PS C:\>Invoke-Command -ComputerName S1 -ScriptBlock {Get-WinEvent -LogName $Using:ps}
Sie können den Using-Bereichsmodifizierer auch in PSSessions verwenden.
PS C:\>$s = New-PSSession -ComputerName S1
PS C:\>$ps = "Windows PowerShell"
PS C:\>Invoke-Command -Sessions $s -ScriptBlock {Get-WinEvent -LogName $Using:ps}
VERWENDEN VON LOKALEN VARIABLEN IN WINDOWS POWERSHELL 2.0
Sie können lokale Variablen in einem Remote-Befehl verwenden, indem Sie Parameter für den Remote-Befehl definieren und den ArgumentList-Parameter des Invoke-Command-Cmdlets verwenden, um die lokale Variable als Parameterwert festzulegen.
Dieser Befehlsformat gilt für Windows PowerShell 2.0 und höhere Versionen von Windows PowerShell.
– Verwenden Sie das Schlüsselwort „param“ zum Definieren von Parametern für den Remote-Befehl. Die Parameternamen sind Platzhalter, die nicht mit dem Namen der lokalen Variablen übereinstimmen müssen.
– Verwenden Sie die Parameter, die durch das Schlüsselwort „param“ im Befehl definiert sind.
– Verwenden Sie den ArgumentList-Parameter des Invoke-Command-Cmdlets, um die lokale Variable als Parameterwert festzulegen.
Die folgenden Befehle definieren z. B. die $ps-Variable in der lokalen Sitzung und verwenden diese dann in einem Remote-Befehl. Der Befehl verwendet $log als den Parameternamen und die lokale Variable, $ps, als dessen Wert.
C:\PS>$ps = "Windows PowerShell"
C:\PS>Invoke-Command -ComputerName S1 -ScriptBlock {param($log) Get-WinEvent -logname $log} -ArgumentList $ps
SCHLÜSSELWÖRTER
about_Using
SIEHE AUCH
about_Remote
about_PSSessions
about_Scopes
Enter-PSSession
Invoke-Command
New-PSSession