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.

  1. – 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.

  2. – Verwenden Sie die Parameter, die durch das Schlüsselwort „param“ im Befehl definiert sind.

  3. – 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