Anzeigen und Ändern von Umgebungsvariablen

Diskussion

In Batch-Dateien sind Umgebungsvariablen die primäre Möglichkeit, temporäre Informationen zu speichern oder Informationen zwischen Batch-Dateien zu übertragen. PowerShell-Variablen und Skriptparameter sind effektivere Methoden, um diese Probleme zu lösen, aber Umgebungsvariablen bieten weiterhin eine nützliche Möglichkeit, auf allgemeine Systemeinstellungen zuzugreifen, z. B. auf den Systempfad, das temporäre Verzeichnis, den Domänennamen, den Benutzernamen und mehr.

PowerShell stellt Umgebungsvariablen über seinen Umgebungsanbieter dar: ein Container, mit dem Sie mit Umgebungsvariablen arbeiten können, ähnlich wie mit Elementen im Dateisystem oder Registrierungsanbietern. Standardmäßig definiert PowerShell ein env:-Laufwerk (ähnlich wie c: oder d:), das Zugriff auf diese Informationen bietet:

PS > dir env:Name Value---- -----Path c:\progra~1\ruby\bin;C:\WINDOWS\system32;C:\TEMP C:\DOCUME~1\Lee\LOCALS~1\TempSESSIONNAME ConsolePATHEXT .COM;.EXE;.BAT;.CMD;.VBS;.VBE;.JS;.JSE;.WSF;(...)

Da es sich um ein reguläres PowerShell-Laufwerk handelt, sieht der vollständige Weg zum Abrufen des Werts einer Umgebungsvariablen wie folgt aus:

PS > Get-Content Env:\UsernameLee

Wenn es um Umgebungsvariablen geht, werden Sie diese Syntax jedoch fast nie verwenden müssen, da PowerShell die Get-Content– und Set-Content-Variablensyntax unterstützt, die das abkürzt auf:

PS > $env:UsernameLee

Diese Syntax funktioniert für alle Laufwerke, wird aber am häufigsten für den Zugriff auf Umgebungsvariablen verwendet. Weitere Informationen zu dieser Syntax finden Sie unter Zugriff auf Informationen über den Aufruf Ihres Befehls.

Einige Umgebungsvariablen beziehen ihre Werte tatsächlich aus einer Kombination von zwei Stellen: den maschinenweiten Einstellungen und den Einstellungen des aktuellen Benutzers. Wenn Sie auf Umgebungsvariablenwerte zugreifen möchten, die speziell auf Maschinen- oder Benutzerebene konfiguriert sind, verwenden Sie die Methode ::GetEnvironmentVariable(). Wenn Sie beispielsweise ein Tools-Verzeichnis in Ihrem Pfad definiert haben, könnten Sie sehen:

PS > ::GetEnvironmentVariable("Path", "User")d:\lee\tools

Um diese maschinen- oder benutzerspezifischen Umgebungsvariablen dauerhaft zu setzen, verwenden Sie die Methode ::SetEnvironmentVariable():

::SetEnvironmentVariable(<name>, <value>, <target>)

Der target-Parameter definiert, wo diese Variable gespeichert werden soll: User für den aktuellen Benutzer und Machine für alle Benutzer der Maschine. Um z. B. das Verzeichnis tools dauerhaft zum Pfad hinzuzufügen:

$pathElements = @(::GetEnvironmentVariable("Path", "User") -split ";")$pathElements += "d:\tools"$newPath = $pathElements -join ";"::SetEnvironmentVariable("Path", $newPath, "User")

Weitere Informationen zum Ändern des Systempfads finden Sie unter Ändern des Benutzer- oder Systempfads.

Weitere Informationen zur Syntax der Variablen Get-Content und Set-Content finden Sie unter Variablen. Für weitere Informationen über den Umgebungsanbieter geben Sie Get-Help About_Environment ein.

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert.