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:TEMP
Fü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:
Machine
User
Process
Weiterführende Links
- about_Environment_Variables (Microsofts PowerShell-Dokumentation)
- about_Environment_Provider (Microsofts PowerShell-Dokumentation)
- Environment Class (Microsofts .NET-Dokumentation)