Tipp für Microsofts PowerShell

PowerShell - mit lokalen und globalen Variablen arbeiten

09.01.2016 von Moritz Baer
Beim Erstellen eines Skripts ist es oft hilfreich einzelne Programmteile als eine Funktion im Code anzulegen. Hier kann man in unerwartete Probleme mit Variablen geraten.

Lösung: Wie in fast jeder Programmiersprache, gibt es auch in der PowerShell die Unterscheidung zwischen lokalen und globalen Variablen beziehunsweise entsprechenden Unterformen. Eine, innerhalb eines Klammer-Blocks deklarierte, Variable überschreibt für den Klammer-Block eine außerhalb definierte Variable mit demselben Namen. Dies ist normal und auch so gewünscht.

Da in der Powershell das Zuweisen von Werten gleichbedeutend mit der Deklaration einer Variable ist, bekommt man jetzt allerdings ein Problem:

$variable = "test"

if($true) {

$variable = "neuer Test"

}

echo $variable

Echo gibt hier unerwarteter Weise test aus. Die äußere Variable $variable bekommt außerhalb des IF-Blocks den Wert test. Damit $variable auch eine neue Variable innerhalb des IF-Blocks instanziiert wird, wird der Wert neuer Test in die neue Variable und nicht in die außerhalb deklarierte Variable geschrieben. Die äußere Variable bleibt also unangetastet.

Um ein solches ungewolltes Dilemma zu vermeiden, kann man in der PowerShell den Zugriff konkret auf den globalen-Kontext legen. Anstatt mit $NAME legt man die Variablen mit $global:NAME an:

global:variable = "test"

if($true) {

$global:variable = "neuer Test"

}

echo $global:variable

Nun gibt echo wie gewünscht neuer Test aus.

Produkte: Dieser Tipp funktioniert mit den aktuellen Versionen der PowerShell. (mje)

Die besten PowerShell-Skripte in der Praxis -
TechNet Gallery
In der TechNet Gallery finden Sie zahlreiche hilfreiche Skripte für unterschiedlichste Problemstellungen.
Produkey
Mit Zusatztools können Sie die Seriennummern/Produktschlüssel von Windows und Office auslesen.
Windows Update PowerShell Module
In der PowerShell können Sie auch den Status von Windows-Updates überprüfen und Installationen starten.
Create Active Directory Users Based on Excel Input
Über die PowerShell legen Sie auch Active Directory-Benutzerkonten mit Daten aus Excel-Tabellen an.
Active Directory User Creation tool
Mit dem Active Directory User Creation tool 1.2 erstellen Sie Benutzer über PowerShell und grafischer Oberfläche.
PowerShell
In der PowerShell können Sie sich eine Liste aller verfügbaren Module anzeigen lassen
PowerShell
In der PowerShell können Sie auch Berechtigungen von Dateien und Verzeichnissen steuern.
PowerShell
Mit einem PowerShell-Skript extrahieren Sie aus einer ISO-Datei mit Windows Server 2012 R2 eine VHDX-Datei als Testumgebung.