Umgebungsvariablen in der PowerShell bearbeiten

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