Verwenden des Variablenbereichs in Windows PowerShell-Skripts

Abgeschlossen

Möglicherweise erwarten Sie, dass die $computer Variable, die Sie innerhalb einer Funktion festlegen, nachdem die Funktion abgeschlossen wurde, im Skript zugänglich ist. Das ist nicht der Fall. Variablen haben einen bestimmten Bereich, der die Interaktion mit anderen Bereichen begrenzt.

In der folgenden Tabelle werden die drei Bereiche und deren Auswirkungen auf die Verwendung von Variablen beschrieben.

Tabelle 1: Bereiche

Umfang Beschreibung
Global Variablen, die an der PowerShell-Eingabeaufforderung festgelegt sind, sind für alle Skripts verfügbar, die von dieser Eingabeaufforderung gestartet wurden, jedoch nicht für andere Eingabeaufforderungen oder ISE-Instanzen.
Skript Variablen, die in einem Skript festgelegt sind, stehen allen Funktionen in diesem Skript zur Verfügung. Wenn Sie eine Skriptbereichsvariable mit demselben Namen wie eine globale Variable erstellen, erstellt PowerShell eine neue Variable im Skriptbereich, und der Skriptbereichswert hat Vorrang.
Funktion In einer Funktion festgelegte Variablen werden nicht für andere Funktionen oder das Skript freigegeben. Wenn Sie eine Funktionsbereichsvariable mit demselben Namen wie eine globale oder Skriptvariable erstellen, erstellt PowerShell eine neue Variable im Funktionsbereich.

Hinweis

Die Windows PowerShell ISE befindet sich nicht mehr in der aktiven Featureentwicklung und unterstützt nur Windows PowerShell 5.1 und früher. Für die entwicklung neuer Skripts ist Visual Studio Code mit der PowerShell-Erweiterung die empfohlene Skriptumgebung.

Hinweis

Vermeiden Sie die Verwendung desselben Variablennamens in verschiedenen Bereichen.

Sie können eine Variable nicht nur in einem übergeordneten Bereich überprüfen, sondern auch ändern, indem Sie beim Ändern der Variable speziell auf den Bereich der Variable verweisen. Verwenden Sie die folgende Syntax, um eine Skriptbereichsvariable in einer Funktion zu ändern:

$script:var = "Modified from function"

Vermeiden Sie das Ändern von Variablen zwischen Bereichen, da sie Verwirrung erzeugen kann. Legen Sie stattdessen die Skriptbereichsvariable auf die Ausgabe der Funktion fest. Wenn sich die Daten in der Funktion in einer Variable befinden, können Sie Return() verwenden, um sie an das Skript zurückzugeben.

Im Folgenden sehen Sie ein Beispiel für die Verwendung von Return() am Ende einer Funktion, um einen Variablenwert an den Skriptbereich zurückzugeben:

Return($users) 

Hinweis

Wenn Sie Return() in einer Funktion verwenden, werden die angegebenen Daten der Pipeline der zurückgegebenen Daten hinzugefügt, vorhandene Daten in der Pipeline jedoch nicht ersetzt. Im Rahmen der Skriptentwicklung müssen Sie genau überprüfen, welche Daten von einer Funktion zurückgegeben werden.