about_Environment_Variables

Letzte Aktualisierung: Mai 2014

Betrifft: Windows PowerShell 2.0, Windows PowerShell 3.0, Windows PowerShell 4.0, Windows PowerShell 5.0

THEMA

about_Environment_Variables

KURZE BESCHREIBUNG

Erläutert, wie in Windows PowerShell® auf Windows-Umgebungsvariablen zugegriffen wird.

LANGE BESCHREIBUNG

In Umgebungsvariablen werden Informationen über die Betriebssystemumgebung gespeichert. Diese Informationen umfassen Details wie z. B. den Betriebssystempfad, die Anzahl der durch das Betriebssystem verwendeten Prozessoren sowie den Speicherort der temporären Ordner.

Die Umgebungsvariablen speichern Daten, die vom Betriebssystem und anderen Programmen verwendet werden. Beispielsweise enthält die WINDIR-Umgebungsvariable den Speicherort des Windows-Installationsverzeichnisses. Programme können den Wert dieser Variablen abfragen, um zu ermitteln, wo sich die Windows-Betriebssystemdateien befinden.

Windows PowerShell ermöglicht das Anzeigen und Ändern von Windows-Umgebungsvariablen, einschließlich der in der Registrierung festgelegten Variablen der für eine bestimmte Sitzung festgelegten Variablen. Der Windows PowerShell-Umgebungsanbieter vereinfacht diesen Vorgang, indem er das Anzeigen und Ändern der Umgebungsvariablen vereinfacht.

Im Gegensatz zu anderen Arten von Variablen in Windows PowerShell werden die Umgebungsvariablen und deren Werte von untergeordneten Sitzungen geerbt, wie z. B. lokale Hintergrundaufträge und die Sitzungen, in denen Modulelemente ausgeführt werden. Daher eignen sich die Umgebungsvariablen gut zum Speichern von Werten, die in übergeordneten und untergeordneten Sitzungen benötigt werden.

WINDOWS POWERSHELL-UMGEBUNGSANBIETER

Der Windows PowerShell-Umgebungsanbieter ermöglicht den Zugriff auf Windows-Umgebungsvariablen in Windows PowerShell in einem Windows PowerShell-Laufwerk (dem Env: Laufwerk). Dieses Laufwerk sieht fast wie ein Dateisystemlaufwerk aus. Um zum Env: Laufwerk zu gelangen, geben Sie ein:

  Set-Location Env:

Zum Anzeigen des Inhalts des Env: Laufwerks geben Sie dann ein:

  Get-ChildItem

Sie können die Umgebungsvariablen im Env: Laufwerk von jedem anderen Windows PowerShell-Laufwerk aus anzeigen, und Sie können in das Env: Laufwerk wechseln, um die Umgebungsvariablen anzuzeigen und zu ändern.

UMGEBUNGSVARIABLEN-OBJEKTE

In Windows PowerShell wird jede Umgebungsvariable durch ein Objekt repräsentiert, das eine Instanz der System.Collections.DictionaryEntry-Klasse ist.

In jedem DictionaryEntry-Objekt entspricht der Name der Umgebungsvariablen dem Wörterbuchschlüssel. Der Wert der Umgebungsvariablen entspricht dem Wörterbuchwert.

Zum Anzeigen einer Umgebungsvariablen in Windows PowerShell rufen Sie ein Objekt ab, das die Variable repräsentiert, und zeigen dann die Werte der Objekteigenschaften an. Wenn Sie eine Umgebungsvariable in Windows PowerShell ändern, verwenden Sie die Methoden, die dem DictionaryEntry-Objekt zugeordnet sind.

Zum Anzeigen der Eigenschaften und Methoden des Objekts, das eine Umgebungsvariable in Windows PowerShell repräsentiert, verwenden Sie das Get-Member-Cmdlet. Um beispielsweise die Methoden und Eigenschaften aller Objekte im Env: Laufwerk anzuzeigen, geben Sie ein:

  Get-Item -Path Env:* | Get-Member

ANZEIGEN VON UMGEBUNGSVARIABLEN

Sie können die Cmdlets, die das Substantiv „Item“ enthalten (Item-Cmdlets), zum Anzeigen und Ändern der Werte von Umgebungsvariablen verwenden. Da die Umgebungsvariablen nicht über untergeordnete Elemente verfügen, ist die Ausgabe von Get-Item und Get-ChildItem identisch.

Um auf eine Umgebungsvariable zu verweisen, geben Sie den Namen des Env: Laufwerks ein, gefolgt vom Namen der Variablen. Um z. B. den Wert der COMPUTERNAME-Umgebungsvariablen anzuzeigen, geben Sie ein:

  Get-Childitem Env:Computername

Um die Werte aller Umgebungsvariablen anzuzeigen, geben Sie ein:

  Get-ChildItem Env:

Standardmäßig zeigt Windows PowerShell die Umgebungsvariablen in der Reihenfolge an, in der sie abgerufen werden. Um die Liste der Umgebungsvariablen nach dem Variablennamen zu sortieren, leiten Sie die Ausgabe eines Get-ChildItem-Befehls an das Sort-Object-Cmdlet weiter. Geben Sie z. B. von einem beliebigen Windows PowerShell-Laufwerk aus ein:

  Get-ChildItem Env: | Sort Name

Sie können auch in das Env: Laufwerk wechseln, indem Sie das Set-Location-Cmdlet verwenden:

  Set-Location Env:

Wenn Sie sich im Env: Laufwerk befinden, können Sie den Env: Laufwerknamen aus dem Pfad auslassen. Um beispielsweise alle Umgebungsvariablen anzuzeigen, geben Sie ein:

  Get-ChildItem

Um den Wert der Variablen von COMPUTERNAME aus dem Env: Laufwerk heraus anzuzeigen, geben Sie ein:

  Get-ChildItem ComputerName

Sie können auch die Werte von Umgebungsvariablen ohne Verwendung eines Cmdlets anzeigen und ändern, indem Sie den Ausdrucksanalysator in Windows PowerShell verwenden. Um den Wert einer Umgebungsvariablen anzuzeigen, verwenden Sie die folgende Syntax:

  $Env:<variable-name>

Um den Wert der WINDIR-Umgebungsvariablen anzuzeigen, geben Sie z. B. den folgenden Befehl an der Windows PowerShell-Befehlszeile ein:

  $Env:windir

In dieser Syntax gibt das Dollarzeichen ($) eine Variable an, und der Laufwerksname gibt eine Umgebungsvariable an.

ÄNDERN VON UMGEBUNGSVARIABLEN

Um dauerhafte Änderungen an einer Umgebungsvariablen vorzunehmen, verwenden Sie „System“ in der Systemsteuerung (Registerkarte „Erweitert“ oder das Element „Erweiterte Systemeinstellungen“) zum Speichern der Änderung in der Registrierung.

Beim Ändern von Umgebungsvariablen in Windows PowerShell wirkt sich die Änderung nur auf die aktuelle Sitzung aus. Dieses Verhalten ähnelt das Verhalten des Set-Befehls in Windows-basierten Umgebungen und des Setenv-Befehls in UNIX-Umgebungen.

Sie müssen auch über die Berechtigung zum Ändern der Werte der Variablen verfügen. Wenn Sie versuchen, einen Wert ohne ausreichende Berechtigungen zu ändern, schlägt der Befehl fehl, und Windows PowerShell zeigt eine Fehlermeldung an.

Sie können die Werte von Variablen ändern, ohne ein Cmdlet zu verwenden, indem Sie die folgende Syntax verwenden:

          $Env:<variable-name> = "<new-value>"

Um z. B. „;c:\temp“ an den Wert der Path-Umgebungsvariablen anzuhängen, verwenden Sie die folgende Syntax:

  $Env:path = $env:path + ";c:\temp"

Sie können auch die Item-Cmdlets, wie z. B. Set-Item, Remove-Item und Copy-Item verwenden, um die Werte von Umgebungsvariablen zu ändern. Um beispielsweise das Set-Item-Cmdlet zum Anhängen von „; c:\temp“ an den Wert der Path-Umgebungsvariablen zu verwenden, verwenden Sie die folgende Syntax:

          Set-Item -Path Env:Path -Value ($Env:Path + ";C:\Temp")

In diesem Befehl wird der Wert in Klammern eingeschlossen, damit er als eine Einheit interpretiert wird.

SPEICHERN VON ÄNDERUNGEN AN UMGEBUNGSVARIABLEN

Zum Erstellen oder Ändern Sie des Werts einer Umgebungsvariablen für jede Windows PowerShell-Sitzung müssen Sie die Änderung zu Ihrem Windows PowerShell-Profil hinzufügen.

Um z. B. für jede Windows PowerShell-Sitzung das C:\Temp-Verzeichnis zur Path-Umgebungsvariablen hinzuzufügen, müssen Sie Ihrem Windows PowerShell-Profil den folgenden Befehl hinzufügen:

  $Env:Path = $Env:Path + ";C:\Temp"

Um den Befehl zu einem vorhandenen Profil hinzuzufügen, wie z. B. zum CurrentUser,AllHosts-Profil, geben Sie ein:

  Add-Content -Path $Profile.CurrentUserAllHosts -Value '$Env:Path = $Env:Path + ";C:\Temp"'

UMGEBUNGSVARIABLEN ZUM SPEICHERN VON EINSTELLUNGEN

Windows PowerShell-Funktionen können Umgebungsvariablen verwenden, um Benutzereinstellungen zu speichern. Diese Variablen funktionieren wie wie Voreinstellungsvariablen, aber sie werden von untergeordneten Sitzungen der Sitzungen geerbt, in denen sie erstellt wurden. Weitere Informationen zu Voreinstellungsvariablen finden Sie unter „about_preference_variables“.

Zu den Umgebungsvariablen, die Einstellungen speichern, zählen:

PSEXECUTIONPOLICYPREFERENCE

Speichert die Ausführungsrichtlinien für die aktuelle Sitzung. Diese Umgebungsvariable ist nur vorhanden, wenn Sie eine Ausführungsrichtlinie für eine einzelne Sitzung festgelegt haben. Dazu stehen Ihnen zwei Methoden zur Verfügung:

– Verwenden Sie PowerShell.exe, um eine Sitzung in der Befehlszeile zu starten, und verwenden Sie den ExecutionPolicy-Parameter zum Festlegen der Ausführungsrichtlinie für die Sitzung.

– Verwenden Sie das Set-ExecutionPolicy-Cmdlet. Verwenden Sie den Scope-Parameter mit dem Wert „Process“.

Weitere Informationen finden Sie unter „about_Execution_Policies“.

PSMODULEPATH

Speichert die Pfade in den Standardmodulverzeichnissen. Windows PowerShell sucht in den angegebenen Verzeichnissen nach Modulen, wenn Sie nicht den vollständigen Pfad zu einem Modul angeben.

Der Standardwert von $Env:PSModulePath ist:

                $home\Documents\WindowsPowerShell\Modules; $pshome\Modules

Windows PowerShell legt den Wert von „$Pshome\Modules“ in der Registrierung fest. Es legt den Wert von „$Home\Documents\WindowsPowerShell\Modules“ bei jedem Start von Windows PowerShell fest.

Außerdem können Setup-Programme, die Module in anderen Verzeichnissen installieren, z. B. im Verzeichnis „Programme“, ihre Speicherorte an den Wert von PSModulePath anhängen.

Um die Standardverzeichnisse des Moduls für die aktuelle Sitzung zu ändern, verwenden Sie das folgende Befehlsformat, um den Wert der Umgebungsvariable PSModulePath zu ändern.

Um zum Beispiel das Verzeichnis „C:\Programme\Microsoft Files\Fabrikam\Modules“ an den Wert der Umgebungsvariablen PSModulePath anzuhängen, geben Sie ein:

                $Env:PSModulePath = $Env:PSModulePath + ";C:\Program Files\Fabrikam\Modules"

Das Semikolon (;) im Befehl trennt den neuen Pfad von dem Pfad, der in der Liste vorangeht.

Um den Wert des PSModulePath in jeder Sitzung zu ändern, fügen Sie den vorherigen Befehl zu Ihrem Windows PowerShell-Profil hinzu, oder verwenden Sie die SetEnvironmentVariable-Methode der Environment-Klasse.

Der folgende Befehl verwendet die GetEnvironmentVariable-Methode zum Abrufen der Maschineneinstellung von PSModulePath und die SetEnvironmentVariable-Methode, um den Pfad „C:\Programme\Microsoft Files\Fabrikam\Modules“ zum Wert hinzuzufügen.

$path = [System.Environment]::GetEnvironmentVariable("PSModulePath", "Machine")
            [System.Environment]::SetEnvironmentVariable("PSModulePath", $path + `
               ";C:\Program Files\Fabrikam\Modules", "Machine")

Um einen Pfad zur Benutzereinstellung hinzuzufügen, ändern Sie den Zielwert für User.

            $path = [System.Environment]::GetEnvironmentVariable("PSModulePath", "User")
            [System.Environment]::SetEnvironmentVariable("PSModulePath", $path + `
               ";$home\Documents\Fabrikam\Modules", "User")

Weitere Informationen zu den Methoden der System.Environment-Klasse finden Sie unter „Umgebungsmethoden“ in MSDN unter https://go.microsoft.com/fwlink/?LinkId=242783.

Sie können auch einen Befehl hinzufügen, der den Wert in Ihrem Profil ändert, oder mit „System“ in der Systemsteuerung den Wert der Umgebungsvariablen PSModulePath in der Registrierung ändern.

Weitere Informationen finden Sie unter „about_Modules“.

SIEHE AUCH

Umgebung (Anbieter)

about_Modules