In Windows PowerShell werden Objekte verwendet. Sie können dort Variablen erstellen, bei denen es sich im Grunde genommen um benannte Objekte handelt, um die Ausgabe für eine spätere Verwendung zu bewahren. Falls Sie in anderen Shells bereits mit Variablen gearbeitet haben, möchten wir Sie daran erinnern, dass es sich bei Variablen in Windows PowerShell um Objekte und nicht um Text handelt.
Variablen beginnen stets mit dem Zeichen "$" und können beliebige alphanumerische Zeichen oder Unterstriche im Namen enthalten.
Erstellen einer Variablen
Sie können eine Variable erstellen, indem Sie den gültigen Variablennamen eingeben:
PS> $loc PS>
Ein Ergebnis wird nicht zurückgegeben, da $loc keinen Wert aufweist. Sie können eine Variable erstellen und im gleichen Schritt einen Wert zuweisen. Variablen werden in Windows PowerShell nur dann erstellt, wenn sie nicht bereits vorhanden sind; andernfalls wird der angegebene Wert der vorhandenen Variablen zugewiesen. Geben Sie Folgendes ein, um das aktuelle Verzeichnis in der Variablen $loc zu speichern:
$loc = Get-Location
Wenn Sie diesen Befehl eingeben, wird keine Ausgabe angezeigt, da diese an "$loc" gesendet wird. Die Anzeige der Ausgabe in Windows PowerShell ist quasi ein "Nebeneffekt" der Tatsache, dass Daten, die nicht anderweitig umgeleitet werden, immer an den Bildschirm ausgegeben werden. Wenn Sie "$loc" eingeben, wird das aktuelle Verzeichnis angezeigt:
PS> $loc Path ---- C:\temp
Mit dem Cmdlet Get-Member können Sie Informationen zum Inhalt von Variablen anzeigen. Wenn Sie $loc über die Pipeline an Get-Member übergeben, wird offensichtlich, dass es sich wie bei der Ausgabe von Get-Location um ein PathInfo-Objekt handelt:
PS> $loc | Get-Member -MemberType Property TypeName: System.Management.Automation.PathInfo Name MemberType Definition ---- ---------- ---------- Drive Property System.Management.Automation.PSDriveInfo Drive {get;} Path Property System.String Path {get;} Provider Property System.Management.Automation.ProviderInfo Provider {... ProviderPath Property System.String ProviderPath {get;}
Bearbeiten von Variablen
Windows PowerShell enthält mehrere Befehle zum Bearbeiten von Variablen. Mit folgender Eingabe können Sie eine vollständige, gut lesbare Liste anzeigen:
Get-Command -Noun Variable | Format-Table -Property Name,Definition -AutoSize -Wrap
Neben den Variablen, die in der aktuellen Windows PowerShell-Sitzung erstellt werden, gibt es mehrere systemdefinierte Variablen. Mit dem Cmdlet Remove-Variable können Sie alle Variablen entfernen, die nicht von Windows PowerShell gesteuert werden. Geben Sie folgenden Befehl ein, um alle Variablen zu entfernen:
Remove-Variable -Name * -Force -ErrorAction SilentlyContinue
Dadurch wird folgende Bestätigungsaufforderung anzeigt:
Confirm Are you sure you want to perform this action? Performing operation "Remove Variable" on Target "Name: Error". [Y] Yes [A] Yes to All [N] No [L] No to All [S] Suspend [?] Help (default is "Y"):A
Wenn Sie das Cmdlet Get-Variable ausführen, werden alle verbleibenden Variablen von Windows PowerShell angezeigt. Da Windows PowerShell auch über das Laufwerk "Variable" verfügt, können Sie alle Variablen von Windows PowerShell mit folgender Eingabe anzeigen:
Get-ChildItem variable:
Verwenden von Cmd.exe-Variablen
Windows PowerShell unterscheidet sich zwar von "Cmd.exe", erfolgt die Ausführung in einer Befehlsshellumgebung, und es können die gleichen Variablen verwendet werden, die in jeder Windows-Umgebung verfügbar sind. Diese Variablen werden über das Laufwerk env: verfügbar gemacht. Sie können diese Variablen anzeigen, indem Sie Folgendes eingeben:
Get-ChildItem env:
Auch wenn die Cmdlets mit Standardvariablen nicht für die Arbeit mit env:-Variablen vorgesehen sind, können Sie diese mit dem Präfix env: verwenden. Wenn Sie in Windows PowerShell beispielsweise das Stammverzeichnis des Betriebssystems anzuzeigen, können Sie wie folgt die Variable %SystemRoot% der Befehlsshell verwenden:
PS> $env:SystemRoot C:\WINDOWS
Sie können in Windows PowerShell auch Umgebungsvariablen erstellen und ändern. Umgebungsvariablen, auf die von Windows PowerShell zugegriffen wird, unterliegen den üblichen Regeln für Umgebungsvariablen in Windows.