Verwenden des Variablenbereichs in Windows PowerShell-Skripts
Sie würden intuitiv davon ausgehen, dass die Variable $computer, die Sie in einer Funktion festgelegt haben, im Skript aufgerufen werden kann, wenn die Funktion abgeschlossen ist. Dies ist jedoch nicht der Fall. Variablen haben einen bestimmten Bereich und sind in ihrer Interaktion zwischen den Bereichen eingeschränkt.
In der folgenden Tabelle werden die drei Bereiche und deren Auswirkungen auf die Verwendung von Variablen beschrieben.
Tabelle 1: Bereiche
| Umfang | Beschreibung |
|---|---|
| Global | Der globale Bereich gilt für die Windows PowerShell-Eingabeaufforderung. An der Windows PowerShell-Eingabeaufforderung festgelegte Variablen können in allen Skripts überprüft werden, die an dieser Windows PowerShell-Eingabeaufforderung gestartet wurden. An einer Windows PowerShell-Eingabeaufforderung erstellte Variablen sind an anderen Windows PowerShell-Eingabeaufforderungen oder in Instanzen der Windows PowerShell Integrated Scripting Environment (ISE) nicht vorhanden. |
| Skript | Der Skriptbereich gilt für ein einzelnes Skript. In einem Skript festgelegte Variablen können von allen Funktionen innerhalb dieses Skripts überprüft werden. Wenn Sie einen Variablenwert im Skriptbereich festlegen, der bereits im globalen Bereich vorhanden ist, wird im Skriptbereich eine neue Variable erstellt. Es gibt dann zwei Variablen mit demselben Namen in zwei separaten Bereichen. Wenn Sie den Wert der Variable im Skript überprüfen, wird der Wert der Variablen im Skriptbereich zurückgegeben. |
| Funktion | Der Funktionsbereich gilt für eine einzelne Funktion. In einer Funktion festgelegte Variablen werden nicht für andere Funktionen oder das Skript freigegeben. Wenn Sie einen Variablenwert im Funktionsbereich festlegen, der bereits im globalen Bereich oder im Skriptbereich vorhanden ist, wird eine neue Variable im Funktionsbereich erstellt. Es gibt dann zwei Variablen mit demselben Namen in zwei separaten Bereichen. |
Hinweis
Es empfiehlt sich, die Verwendung derselben Variablennamen in verschiedenen Bereichen zu vermeiden, um Missverständnissen vorzubeugen.
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"
Es wird empfohlen, Variablen nicht zwischen Bereichen zu ändern, da dies zu Verwirrung führen 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.