Kategorieauswahl

Variable

Dynamische Variablennamen in Powershell

Wenn Sie einen Variablennamen selbst aus Varbiablen oder Textteilen zusammensetzen möchten, können Sie das mit Hilfe des Cmdlets new-variable wie folgt tun:

$a="Eins"
$b="Zwei"
new-variable -name ("Text"+$a+$b) -value 10 # Erstellt eine Variable mit dem Namen $TextEinsZwei und belegt diese mit dem Wert 10
$TextEinsZwei # Gibt den Inhalt der soeben dynamisch zusammengesetzten Variable zurück

So weit, so gut, aber wie lese ich die Variable nun wiederum dynamisch aus? Einen Tick umständlicher mittels Get-Variable Cmdlet:

(Get-Variable -name ("Text"+$a+$b)).Value

Cool, oder? 🙂

Powershell Variablen mit Befehlen belegen

Sie können in Powershell ganze Befehlsketten in Variablen ablegen, z. B. so:

$a=get-childitem

Dann wird allerdings zum Zeitpunkt der Variablendeklaration der Befehl ausgeführt und der Inhalt in der Variablen hinterlegt. Legt man also nun ein neues Verzeichnis an, ist dieses nicht in $a enthalten, da die Variable zuerst in Inhalt übergeben bekam und erst danach der neue Ordner erstellt wurde. Gibt man nun $a aus, fehlt der neu erstellte Ordner. Man kann allerdings auch Code in einer Variablen zum Zeitpunkt der Variablenabfrage ausführen lassen. Dazu müssen Sie den Code nur in geschweifte Klammern setzen und die Variable mit vorangestelltem Punkt abrufen. Also beispielsweise so:

$a={get-childitem}

Wenn Sie nun:

. $a

abrufen, wird der Inhalt der Variablen zum Zeitpunkt von der Angabe . $a als Code ausgeführt und enthält somit den aktuellen Stand des Verzeichnisses.

Auch interessant ist die Möglichkeit Befehle mit Variablen zu Befehlen zusammen zuschrauben.

$Verb="set"
&("$Verb-service")