Wie in diesem Blogbeitrag gezeigt, gibt es eine grafische Benutzeroberfläche zum Bearbeiten von Umgebungsvariablen.
Die Umgebungsvariablen lassen sich aber auch in der PowerShell anzeigen. Dafür steht das cmdlet Get-ChildItem zur Verfügung:
Get-ChildItem -Path Env:Ihr erhaltet damit eine Liste aller Benutzervariablen, also der Benutzer- und der Systemvariablen.
Den Wert einer einzelnen Variable kann man sich unter Verwendung des Providers Environment anzeigen lassen. Die Syntax dafür lautet:
$Env:<Variable>Um sich beispielsweise den Wert für die Variable TEMP anzeigen zu lassen, lautet die Anweisung:
$Env:TEMPFür die Dauer der laufenden PowerShell-Sitzung kann mit folgender Anweisung ein neuer Eintrag vorgenommen werden:
$Env:<Variable> = "<Wert>"Angenommen ich möchte zur Systemvariable PATH den Pfad „c:\users\bodo\temp“ hinzufügen, dann lautet die Anweisung:
$Env:Path += ";c:\users\bodo\temp"Vergesst dabei nicht das Semikolon vor dem Laufwerksbuchstaben. Es dient der Trennung der einzelnen Werte der PATH-Variablen.
Wie bereits erwähnt, ist diese Änderung nicht persistent. Soll eine Änderung von Dauer sein, dann ist die Methode SetEnvironmentVariable() (aus dem .NET-Framework) zu verwenden. Im folgenden Beispiel soll eine Variable mit der Bezeichnung „foo“ und dem Wert „bar“ hinzugefügt werden. Die Anweisung dafür lautet:
[System.Environment]::SetEnvironmentVariable('foo', 'bar',[System.EnvironmentVariableTarget]::Machine)Interessant ist dabei, dass ein EnvironmentVariableTarget festgelegt werden muss (hier: Machine). Das hängt damit zusammen, dass Windows, im Gegensatz zu UNIX-artigen Systemen, mehrere Geltungsbereiche für Umgebungsvariablen kennt. Diese sind:
MachineUserProcess
Weiterführende Links
- about_Environment_Variables (Microsofts PowerShell-Dokumentation)
- about_Environment_Provider (Microsofts PowerShell-Dokumentation)
- Environment Class (Microsofts .NET-Dokumentation)
