Magic Quadrant™ für Privileged Access Management 2025: Netwrix zum vierten Jahr in Folge anerkannt. Laden Sie den Bericht herunter.

Plattform
Ressourcen­zentrumBlog
PowerShell-Umgebungsvariablen

PowerShell-Umgebungsvariablen

Jan 14, 2025

PowerShell-Umgebungsvariablen speichern System- und Benutzerkonfigurationen als Schlüssel-Wert-Paare, die prozess- und skriptübergreifend zugänglich sind. Sie können mit Get-ChildItem Env: aufgelistet, mit $Env:<Name> abgerufen, mit Set-Item oder [Environment]::SetEnvironmentVariable() geändert und mit Remove-Item entfernt werden. Variablen existieren auf Prozess-, Benutzer- oder Maschinenebene, wobei Änderungen nur dann bestehen bleiben, wenn sie auf Benutzer- oder Maschinenebene definiert sind. Zu den Best Practices gehören die Begrenzung des Geltungsbereichs, das Vermeiden von hartkodierten Geheimnissen, das Dokumentieren von Variablen und das sichere Testen von Änderungen.

Einführung in PowerShell-Umgebungsvariablen

Umgebungsvariablen sind vordefinierte Variablen in einem Betriebssystem, sie sind in Form von Schlüssel-Wert-Paaren verfügbar, die wichtige systemweite oder benutzerspezifische Informationen speichern, wie Pfade, Benutzerkonfigurationen und Systemeinstellungen. Diese Variablen sind in PowerShell-Skripten und -Sitzungen zugänglich und spielen eine bedeutende Rolle bei Aufgaben wie der Konfiguration von Software, der Anpassung von Systempfaden und der Verwaltung benutzerspezifischer Einstellungen. Sie fungieren als globale Variablen, die im gesamten Betriebssystem und in der Skriptumgebung zugänglich sind. Obwohl PowerShell die einfache Manipulation dieser Variablen ermöglicht, ist es wichtig, beim Ändern oder Löschen vorsichtig zu sein, da falsche Änderungen zu Systeminstabilität oder Anwendungsausfällen führen können. Beispielsweise ist die PATH-Variable, die Verzeichnisse mit ausführbaren Dateien speichert, entscheidend dafür, dass das System Befehle finden und ausführen kann.

Auflistung der PowerShell-Umgebungsvariablen

In PowerShell ist eine der einfachsten Methoden, alle Umgebungsvariablen aufzulisten, die Verwendung des Get-ChildItem-Cmdlets mit dem „Env:“-Laufwerk. Dieser Befehl ermöglicht es Benutzern, auf den Inhalt des Repositoriums der Umgebungsvariablen zuzugreifen und ihn in einem übersichtlichen und organisierten Format anzuzeigen.

Um alle Umgebungsvariablen aufzulisten, die in Ihrer PowerShell-Sitzung verfügbar sind, führen Sie einfach den folgenden Befehl aus.

Get-ChildItem Env:

Die Ausgabe wird typischerweise eine breite Palette von Umgebungsvariablen enthalten, von denen Sie einige erkennen könnten.

  • PATH: Eine Liste von Verzeichnissen, in denen ausführbare Dateien gespeichert sind.
  • TEMP: Der Pfad zum Verzeichnis für die temporäre Dateiablage.
  • USERPROFILE: Der Pfad zum Profilverzeichnis des aktuellen Benutzers, z. B. C:\Users\Administrator.Milkyway.
  • COMPUTERNAME: Der Name des Computers.
  • Betriebssystem: Der Name des Betriebssystems, z. B. Windows_NT.
  • HOMEPATH: Das Benutzerverzeichnis des Nutzers.
Image

Zugriff auf und Drucken von Umgebungsvariablen

Es gibt zwei Hauptmethoden, um dies zu erreichen: die Verwendung der „$Env:<variable-name>“ Syntax oder den Einsatz des „Get-ChildItem“ Cmdlets zusammen mit dem Variablennamen. Wenn Sie beispielsweise auf die USERNAME Variable zugreifen möchten, verwenden Sie den folgenden Befehl in PowerShell, um die Umgebungsvariable zu erhalten.

$Env:USERNAME

Durch einfaches Ausführen dieses Befehls wird der Name des angemeldeten Benutzers in der Konsole ausgegeben.

Image

Die zweite Methode erfolgt durch Verwendung des Get-ChildItem-Cmdlets. Sie können die Umgebungsvariable angeben, die Sie überprüfen möchten, wie unten dargestellt.

(Get-ChildItem Env:USERNAME).Value

Image

Sie können demselben Muster folgen, um andere Umgebungsvariablen auszudrucken, wie PATH, COMPUTERNAME, USERPROFILE oder TEMP.

$Env:Path

Image

(Get-ChildItem Env:Path).Value

Image

PowerShell-Umgebungsvariablen einstellen

Der Prozess zum Erstellen oder Aktualisieren von Umgebungsvariablen ist unkompliziert und kann mit der folgenden Syntax durchgeführt werden.

$Env:<variable-name> = „<value>“

Windows PowerShell-Skripting-Tutorial (PDF) für Anfänger

Erfahren Sie mehr

Erstellen von Umgebungsvariablen

Das Erstellen einer neuen Umgebungsvariablen ist so einfach wie das Zuweisen eines Wertes zu einem Variablennamen. Zum Beispiel, wenn Sie eine Umgebungsvariable namens „Foo“ erstellen und ihr einen bestimmten Wert zuweisen möchten, können Sie den folgenden Befehl verwenden.

$Env:Foo = “Hallo”

Sie können bestätigen, dass die Variable korrekt gesetzt wurde, indem Sie auf sie mit dem untenstehenden Cmdlet zugreifen.

$Env:Foo

Image

Aktualisierung von Umgebungsvariablen

Wenn die Variable „Foo“ bereits existiert und Sie ihren Wert aktualisieren möchten, können Sie dieselbe Syntax verwenden.

$Env:Foo = “NewValue”

Sie können den Wert der Variablen wie folgt überprüfen.

$Env:Foo

Image

Es ist wichtig zu beachten, dass Änderungen an Umgebungsvariablen, die mit dem $Env:-Präfix vorgenommen werden, nur für die Dauer der aktuellen PowerShell-Sitzung bestehen bleiben. Sobald Sie die Sitzung schließen, gehen alle benutzerdefinierten Umgebungsvariablen, die in dieser Sitzung erstellt oder geändert wurden, verloren. Wenn Sie Umgebungsvariablen erstellen oder aktualisieren müssen, die über die Sitzung hinaus bestehen bleiben, müssen Sie den „SetX“-Befehl verwenden, der es Ihnen ermöglicht, Umgebungsvariablen auf Benutzer- oder Systemebene zu definieren. Um beispielsweise eine dauerhafte Umgebungsvariable namens „Foo“ mit demselben Wert zu erstellen, können Sie das untenstehende Cmdlet verwenden.

SetX Foo „MyVariableValue“

Sie können die dauerhafte Variable überprüfen, indem Sie zu SystemeigenschaftenèErweitert TabèUmgebungsvariablenèBenutzervariablen für den aktuellen Benutzer gehen.

Image

Anhängen von Werten an vorhandene Umgebungsvariablen

Das Anhängen von Werten an bestehende Umgebungsvariablen in PowerShell kann nützlich sein, wenn Sie die aktuellen Konfigurationen erweitern möchten, ohne deren vorhandene Werte zu überschreiben. Ein häufiges Szenario hierfür ist die PATH-Umgebungsvariable, bei der Sie zusätzliche Verzeichnisse für ausführbare Dateien hinzufügen möchten. In PowerShell ermöglicht Ihnen der „+=“ Operator dies nahtlos, dieser Operator ist speziell dafür ausgelegt, Werte an Variablen anzuhängen.

Zum Beispiel, wenn Sie ein neues Verzeichnis zur `Path` Umgebungsvariable hinzufügen möchten, können Sie den folgenden Befehl verwenden.

$Env:Path += “;C:\Test\SecurityService”

Das Semikolon ( ; ) ist wichtig, da es als Trennzeichen zwischen einzelnen Pfaden in der PATH-Variablen dient. Ohne es würde der neue Pfad direkt an die bestehenden Pfade angehängt werden, was zu unbeabsichtigten Ergebnissen führen könnte. Um zu überprüfen, ob der Wert erfolgreich angehängt wurde, können Sie die aktualisierte Variable mit dem untenstehenden Cmdlet ausdrucken.

$Env:Path

Image

Geltungsbereiche von PowerShell-Umgebungsvariablen

Das Verständnis des Geltungsbereichs von PowerShell-Umgebungsvariablen ist wichtig für effektives Scripting und Systemkonfiguration. Umgebungsvariablen können in verschiedenen Geltungsbereichen existieren, die ihre Verfügbarkeit und Lebensdauer in unterschiedlichen Kontexten bestimmen.

Erläuterung der Geltungsbereiche für Umgebungsvariablen bei Maschinen, Benutzern und Prozessen.

Die drei primären Geltungsbereiche für Umgebungsvariablen sind Maschine, Benutzer und Prozess. Jeder Bereich hat seine eigenen Regeln bezüglich Zugänglichkeit und Vererbung, die das Verhalten von Skripten und Anwendungen erheblich beeinflussen können.

Maschinenbereich

Umgebungsvariablen mit Maschinen-Geltungsbereich sind systemweite Variablen, die für alle Benutzer und Prozesse gelten, die auf dem Computer ausgeführt werden. Diese Variablen werden in der Regel vom Betriebssystem oder einem Administrator festgelegt und bleiben über Sitzungen und Neustarts hinweg bestehen. Um auf maschinenbezogene Umgebungsvariablen zuzugreifen oder sie zu ändern, benötigen Sie administrative Privilegien.

Benutzerbereich

Benutzerspezifische Umgebungsvariablen sind hingegen spezifisch für das individuelle Benutzerprofil und für alle Prozesse sichtbar, die unter diesem Benutzerprofil laufen. Diese Variablen sind dauerhaft, aber nur für den Benutzer verfügbar, der sie erstellt hat, und können ohne Administratorrechte geändert werden. Wenn ein Benutzer eine benutzerspezifische Variable setzt, haben andere Benutzer auf demselben Computer keinen Zugriff darauf.

Prozessumfang

Prozessbezogene Umgebungsvariablen existieren nur in der Instanz des Prozesses oder der Sitzung, in der sie erstellt wurden. Sie sind temporär und verschwinden, sobald der Prozess endet. Dieser Geltungsbereich wird häufig in Skripten und Anwendungen verwendet, wo Einstellungen definiert werden sollen, die nur für die Dauer der Ausführung relevant sind.

Wie Umgebungsvariablen von untergeordneten Prozessen geerbt werden

Umgebungsvariablen werden von Kindprozessen von ihrem Elternprozess geerbt. Das bedeutet, dass wenn Sie eine Umgebungsvariable in einer PowerShell-Sitzung (Prozessbereich) erstellen, jede externe Anwendung oder Skript, das aus dieser Sitzung gestartet wird, die Variable erbt. Wenn Sie eine benutzerspezifische Umgebungsvariable setzen, wie MY_USER_VAR, wird sie über PowerShell-Sitzungen hinweg bestehen bleiben, und jeder Prozess, der unter diesem Benutzer gestartet wird, wird ihren Wert erben. Wenn Sie eine systemweite Variable setzen, wie MY_MACHINE_VAR, wird sie von jedem Benutzer im System geerbt, und alle Prozesse werden Zugriff auf diese Variable haben.

Ändern von Umgebungsvariablen über Plattformen hinweg

Wenn es um das Ändern von Umgebungsvariablen geht, kann der Ansatz zwischen Betriebssystemen erheblich variieren, insbesondere zwischen Windows und Unix-ähnlichen Systemen wie macOS und Linux. Diese Variabilität umfasst die Syntax, Groß- und Kleinschreibung sowie verfügbare Befehle zur Modifikation.

Groß- und Kleinschreibung bei macOS/Linux im Vergleich zu Windows.

Einer der wesentlichen Unterschiede zwischen Betriebssystemen ist die Art und Weise, wie sie die Groß- und Kleinschreibung von Umgebungsvariablennamen behandeln.

Windows

Umgebungsvariablennamen in Windows sind nicht groß- und kleinschreibungssensitiv. Zum Beispiel beziehen sich PATH, Path und path alle auf dieselbe Umgebungsvariable. Das bedeutet, dass Sie diese Variablen referenzieren oder modifizieren können, ohne sich um die in den Befehlen verwendete Schreibweise zu kümmern.

macOS/Linux

Unix-ähnliche Systeme sind bei Umgebungsvariablennamen groß- und kleinschreibungsempfindlich. Daher würden PATH und path als zwei unterschiedliche Variablen erkannt. Das bedeutet, dass Skripte oder Befehle die exakte Schreibweise bei der Verwendung von Umgebungsvariablen nutzen müssen, um Verwirrung oder Fehler zu vermeiden.

Temporäre vs Persistente Umgebungsvariablen

Umgebungsvariablen in PowerShell können je nachdem, wie sie festgelegt werden und der Reichweite der Änderungen, als temporär oder persistent kategorisiert werden. Das Verständnis des Unterschieds zwischen diesen beiden Arten von Umgebungsvariablen ist wichtig für die Verwaltung von Konfigurationen und um sicherzustellen, dass Variablen über Sitzungen oder Systemneustarts hinweg bestehen bleiben.

Wie temporäre Variablen innerhalb einer PowerShell-Sitzung funktionieren

Temporäre Umgebungsvariablen werden definiert und ausschließlich im Kontext der aktuellen PowerShell-Sitzung verwendet. Diese Variablen können mit dem $Env:-Präfix erstellt und modifiziert werden. Sobald die PowerShell-Sitzung geschlossen wird, gehen alle temporären Variablen verloren, und ihre Werte werden in nachfolgenden Sitzungen nicht beibehalten. Temporäre Variablen sind besonders nützlich, wenn Sie eine schnelle Konfiguration für die aktuelle Sitzung benötigen, ohne die globalen oder benutzerspezifischen Einstellungen zu beeinflussen.

Persistente Umgebungsvariablen

Persistente Umgebungsvariablen werden in der Systemkonfiguration gespeichert und bleiben auch dann verfügbar, wenn Sie PowerShell schließen und erneut öffnen oder Ihren Computer neu starten. Um persistente Umgebungsvariablen in PowerShell zu erstellen oder zu ändern, können Sie die .NET „System.Environment“-Klasse verwenden.

Die Syntax zum Hinzufügen oder Ändern einer persistenten Umgebungsvariablen ist wie folgt.

[Environment]::SetEnvironmentVariable(‘VariableName’, ‘Value’, ‘Scope’)

Der Scope-Parameter kann einen von drei Werten annehmen: Machine, User oder Process.

Zum Beispiel, um eine beständige benutzerspezifische Umgebungsvariable namens „Foo“ mit dem Wert „Bar“ zu erstellen, können Sie den folgenden Befehl ausführen.

[Environment]::SetEnvironmentVariable(‘Foo’, ‘Bar’, ‘User’)

Wenn Sie eine maschinenbezogene Variable festlegen möchten, würden Sie den folgenden Befehl ausführen.

[Environment]::SetEnvironmentVariable(‘Foo’, ‘Bar’, ‘Machine’)

Der obige Befehl benötigt administrative Privilegien, da Änderungen mit Maschinenbereich alle Benutzer auf dem System betreffen.

Die GetEnvironmentVariable()-Methode zeigt den Wert einer Umgebungsvariablen an. Sie können den Namen der Umgebungsvariablen angeben. Unten finden Sie ein Beispiel für ein Cmdlet.

[System.Environment]::GetEnvironmentVariable(‘Foo’)

Image

Es könnte notwendig sein, den obigen Befehl auf seinen Anwendungsbereich zu überprüfen

Arbeiten mit Environment Provider und Item Cmdlets

Verwendung des Environment Providers zur Verwaltung von Umgebungsvariablen als Dateisystemlaufwerk

PowerShell provides an environment provider that treats environment variables as a file system drive, allowing users to manage them much like files and directories. The Env: drive in PowerShell provides access to environment variables. Each environment variable is treated as an item in the Env: drive, and you can use standard cmdlets to interact with these variables. Below is an overview of the key cmdlets for working with the environment provider, such as New-Item, Set-Item, Get-Item, and Remove-Item.

New-Item

Das New-Item Cmdlet kann verwendet werden, um eine neue Umgebungsvariable zu erstellen, indem man der untenstehenden Beispiel-Syntax und dem Cmdlet folgt.

New-Item -Path Env:MY_NEW_VAR -Value „MyValue“

New-Item -Path Env: -Name „MyVariable“ -Value „HelloWorld“

Dieser Befehl erstellt eine neue Umgebungsvariable, die für die Dauer der aktuellen Sitzung verfügbar sein wird.

Image

Set-Item

Wenn Sie den Wert einer vorhandenen Umgebungsvariablen aktualisieren oder diese erstellen möchten, falls sie noch nicht existiert, können Sie das Cmdlet Set-Item verwenden, wie im folgenden Beispiel gezeigt.

Set-Item -Path Env:MY_NEW_VAR -Value „UpdatedValue“

Set-Item -Path Env:MyVariable -Value „NewValue“

Dieser Befehl wird den Wert der Umgebungsvariablen auf neu setzen. Existiert die Variable nicht, wird sie mit dem angegebenen Wert erstellt.

Get-Item

Um den Wert einer vorhandenen Umgebungsvariablen abzurufen, kann das Get-Item-Cmdlet mit dem folgenden Beispiel-Cmdlet verwendet werden.

Get-Item -Path Env:MY_NEW_VAR

Get-Item -Path Env:MyVariable

Dies wird ein Objekt zurückgeben, das die Umgebungsvariable repräsentiert, einschließlich ihres Namens und des ihr zugewiesenen Werts.

Image

Remove-Item

Um eine vorhandene Umgebungsvariable zu löschen, können Sie das Cmdlet Remove-Item verwenden.

Remove-Item -Path Env:MY_NEW_VAR

Remove-Item -Path Env:MyVariable

Dieser Befehl wird die Variable aus den Umgebungsvariablen entfernen, Sie können das Get-Item Cmdlet verwenden, um dies zu überprüfen. Es ist wichtig zu beachten, dass, sobald diese Variable entfernt wurde, sie nicht wiederhergestellt werden kann, es sei denn, sie wird neu erstellt.

Image

Allgemeine PowerShell-Umgebungsvariablen

PowerShell verfügt über mehrere wichtige Umgebungsvariablen, die sein Verhalten und seine Konfiguration beeinflussen können. Diese Variablen werden erstellt und verwendet, um zu konfigurieren, wie PowerShell sich verhält, wo es nach Modulen, Skripten und verschiedenen Benutzereinstellungen sucht. Unten sind einige der wichtigsten Umgebungsvariablen aufgeführt, die in PowerShell häufig verwendet werden.

POWERSHELL_TELEMETRY_OPTOUT

Diese Umgebungsvariable steuert, ob PowerShell Telemetriedaten an Microsoft sendet. Wenn Sie diese Variable auf 1 setzen, wird das Senden von Nutzungsdaten und Absturzberichten an Microsoft abgelehnt. Standardmäßig sendet PowerShell anonyme Nutzungsdaten zur Verbesserung, aber Sie können sich dagegen entscheiden.

POWERSHELL_DISTRIBUTION_CHANNEL

Gibt den Vertriebskanal an, über den PowerShell installiert wurde. Dies kann nützlich sein, um zu identifizieren, ob PowerShell über den Windows Package Manager (winget), MSI oder andere Paketmanager installiert wurde. Dies hilft Microsoft zu verfolgen, welche Kanäle am meisten genutzt werden.

POWERSHELL_UPDATECHECK

Diese Umgebungsvariable steuert, ob PowerShell automatisch nach Updates sucht. Wenn sie auf 1 gesetzt wird, überprüft PowerShell, ob Updates für die Shell verfügbar sind. Wenn sie auf 0 gesetzt wird, wird die automatische Updateprüfung deaktiviert. Dies ist nützlich, um zu verwalten, wie PowerShell Updates handhabt.

PSExecutionPolicyPreference

Diese Umgebungsvariable gibt die standardmäßige PowerShell-Ausführungsrichtlinie an, die beim Ausführen von Skripten verwendet werden soll. Wenn sie festgelegt ist, überschreibt sie die über Set-ExecutionPolicy konfigurierte Ausführungsrichtlinie. Wenn Sie dies beispielsweise auf RemoteSigned setzen, bedeutet dies, dass nur lokal erstellte Skripte ohne Signatur ausgeführt werden können.

PSModulePath

Diese Variable enthält die Pfade, in denen PowerShell-Module gespeichert und geladen werden. Es handelt sich um eine durch Doppelpunkte getrennte Liste von Verzeichnissen, die PowerShell durchsucht, um Module zu finden. Sie können diese Variable ändern, um zusätzliche Verzeichnisse für benutzerdefinierte Module einzuschließen.

PSModuleAnalysisCachePath

Diese Variable gibt den Pfad an, wo PowerShell den Modul-Analyse-Cache speichert. PowerShell verwendet die Modul-Analyse, um die Leistung beim Laden von Modulen zu optimieren, und der Cache speichert geparste Metadaten über die Module. Durch Festlegen eines benutzerdefinierten Pfades kann dieser Cache-Speicherort umgeleitet werden.

PSDisableModuleAnalysisCacheCleanup

Wenn diese Variable auf 1 gesetzt ist, wird PowerShell die automatische Bereinigung des Modulanalyse-Cache deaktivieren. Standardmäßig löscht PowerShell automatisch ungenutzten Analyse-Cache, um Speicherplatz zu sparen, aber diese Variable kann gesetzt werden, um diese Aktion zu verhindern.

Es gibt mehrere andere Umgebungsvariablen, die Sie verwenden können, um Ihre Umgebung zu konfigurieren oder systembezogene Informationen mit PowerShell abzurufen. Einige davon wurden bereits in diesem Blog oben erwähnt, unten finden Sie einige weitere gängige Umgebungsvariablen.

  • USERNAME: Gibt den Benutzernamen des aktuellen Benutzers zurück.
  • ProgramFiles: Verweist auf das Verzeichnis „Program Files“, normalerweise C:\Program Files.
  • ProgramFiles(x86): Verweist auf das Verzeichnis „Program Files (x86)“, das üblicherweise für 32-Bit-Anwendungen auf einem 64-Bit-System verwendet wird.
  • ALLUSERSPROFILE: Verweist auf das Verzeichnis für das Profil aller Benutzer (üblicherweise C:\ProgramData).
  • WINDIR: Verweist auf das Windows-Verzeichnis (üblicherweise C:\Windows).

Verwalten von Umgebungsvariablen über die Systemsteuerung

Sie können Umgebungsvariablen direkt über die Systemsteuerung von Windows setzen oder ändern. Indem Sie die folgenden Schritte befolgen, können Sie Umgebungsvariablen über die Systemsteuerung von Windows leicht verwalten und die Systemeinstellungen nach Bedarf anpassen.

  1. Öffnen Sie die Systemsteuerung, indem Sie „Windows + R“ drücken, um das Ausführen-Dialogfeld zu öffnen. Geben Sie „control“ ein und drücken Sie die Eingabetaste, um die Systemsteuerung zu öffnen, oder suchen Sie in der Suchleiste neben dem Startknopf nach Systemsteuerung und wählen Sie sie aus.
Image
  • In der Systemsteuerung klicken Sie auf „System“. Klicken Sie in der linken Seitenleiste auf „Erweiterte Systemeinstellungen“.
Image
  • Im Fenster Systemeigenschaften klicken Sie auf die Schaltfläche „Umgebungsvariablen*“ in der unteren rechten Ecke.
Image
  • Im Fenster für Umgebungsvariablen sehen Sie zwei Abschnitte, „Benutzervariablen“ (für den aktuellen Benutzer) und „Systemvariablen“ (für alle Benutzer).
  • Um eine neue Variable zu erstellen, klicken Sie unter dem entsprechenden Abschnitt auf Neu.
  • Um eine vorhandene Variable zu bearbeiten, wählen Sie die Variable aus der Liste aus und klicken Sie auf Bearbeiten.
  • Um eine Variable zu löschen, wählen Sie sie aus und klicken Sie auf Löschen.
Image
  • Wenn Sie eine Variable erstellen oder bearbeiten, geben Sie den „Variablennamen“ und den „Variablenwert“ in die entsprechenden Felder ein. Für Variablen wie Path können Sie neue Pfade hinzufügen, indem Sie sie mit Semikolons trennen. Unten ist der Screenshot der PATH-Variablen.
Image
  • Nachdem Sie Ihre Änderungen vorgenommen haben, klicken Sie auf OK, um jedes Dialogfeld zu schließen und Ihre Änderungen zu speichern.
  • Damit Ihre Änderungen wirksam werden, müssen Sie möglicherweise alle offenen Anwendungen oder Befehlszeilen neu starten.

Fehlerbehebung bei häufigen Problemen mit PowerShell-Umgebungsvariablen

Umgangsvariablen in PowerShell können knifflig sein, besonders wenn es um Bereiche, Beständigkeit oder den Versuch geht, ungültige Werte zu setzen. Nachfolgend sind einige häufige Probleme aufgeführt, mit denen Benutzer beim Arbeiten mit Umgebungsvariablen konfrontiert sind.

Eine Umgebungsvariable auf einen leeren String setzen

Wenn Sie versuchen, eine Umgebungsvariable auf einen leeren String zu setzen, sehen Sie möglicherweise nicht das erwartete Verhalten. Anstatt die Variable zu löschen, könnte sie immer noch ihren vorherigen Wert behalten. Eine Umgebungsvariable auf einen leeren String zu setzen, entfernt sie nicht, es weist ihr nur einen leeren Wert zu. Um die Umgebungsvariable vollständig zu entfernen, anstatt sie auf einen leeren String zu setzen, können Sie das Remove-Item-Cmdlet verwenden.

Falscher Geltungsbereich für das Setzen von Umgebungsvariablen verwendet

Wenn Sie eine Umgebungsvariable festlegen und dabei den falschen Gültigkeitsbereich angeben (Benutzer vs. Prozess vs. Maschine), ist die Variable möglicherweise nicht dort verfügbar, wo Sie es erwarten. Um die Variable dauerhaft für den Benutzer- oder Systembereich zu setzen, können Sie das untenstehende Cmdlet verwenden.

[System.Environment]::SetEnvironmentVariable(‘Variable’, ‘Value’, ‘scope’)

Änderungen werden nach dem Setzen von Umgebungsvariablen nicht übernommen

Nachdem Sie eine Umgebungsvariable geändert haben, stellen Sie möglicherweise fest, dass sich Änderungen nicht sofort in Unterprozessen oder anderen Anwendungen widerspiegeln. Umgebungsvariablen werden im Prozess zwischengespeichert. Wenn Sie eine Umgebungsvariable in einer Sitzung ändern, sehen andere Sitzungen die Änderung möglicherweise nicht, bis sie neu gestartet werden. Um sicherzustellen, dass andere Anwendungen die Änderungen sehen, starten Sie diese neu. In einigen Fällen kann für das Übernehmen der Änderungen durch Anwendungen ein Systemneustart erforderlich sein.

Berechtigungsfehler beim Setzen von Systemvariablen

Beim Versuch, eine Systemumgebungsvariable zu setzen, können Sie auf einen „Zugriff verweigert“-Fehler stoßen. Das Ändern von Systemumgebungsvariablen erfordert in der Regel Administratorrechte. Führen Sie PowerShell als Administrator aus.

Variablen bleiben nicht über Sitzungen hinweg bestehen

Sie haben eine Umgebungsvariable gesetzt in der Erwartung, dass sie über Sitzungen hinweg bestehen bleibt, aber sie verschwindet.

Wenn die Variable nur in der aktuellen Sitzung mit „$env:“ gesetzt wird, bleibt sie nach dem Schließen von PowerShell nicht bestehen. Stellen Sie sicher, dass Sie die Variable auf Benutzer- oder Systemebene mit der System.Environment-Klasse oder dem Registrierungseditor setzen.

Nichtübereinstimmung in der Groß- und Kleinschreibung

Umgebungsvariablennamen sind unter Windows nicht groß- und kleinschreibungsempfindlich, aber es kann zu Groß- und Kleinschreibungsproblemen kommen, wenn man mit plattformübergreifenden Skripten arbeitet, wie zum Beispiel in PowerShell Core auf Linux oder macOS. Wenn Sie Skripte schreiben, die auf mehreren Plattformen laufen sollen, stellen Sie sicher, dass Sie konsequent die korrekte Schreibweise für die Namen von Umgebungsvariablen verwenden.

Best Practices für das Management von Umgebungsvariablen

Das effektive Verwalten von Umgebungsvariablen ist entscheidend, um eine stabile und effiziente Arbeitsumgebung in PowerShell aufrechtzuerhalten. Im Folgenden finden Sie einige bewährte Methoden für den effizienten Einsatz von Umgebungsvariablen plattformübergreifend.

Verwenden Sie beschreibende Namen

Wählen Sie klare und beschreibende Namen für Ihre Umgebungsvariablen, damit sie leicht zu identifizieren sind. Verwenden Sie beispielsweise MY_APP_CONFIG_PATH anstelle von etwas Unklarem wie CONFIG_PATH. Dies erleichtert es anderen (und Ihrem zukünftigen Ich) die Rolle der Variablen zu verstehen. Ein weiteres Beispiel wäre, anstelle von „Var_Database“ „DatabaseConnectionString“ zu verwenden, was beschreibender ist.

Begrenzen Sie den Umfang angemessen

Verstehen Sie die verschiedenen Geltungsbereiche von Umgebungsvariablen (Prozess, Benutzer, Maschine) und setzen Sie den Geltungsbereich entsprechend Ihren Bedürfnissen fest. Beschränken Sie Variablen auf den kleinstmöglichen Geltungsbereich, um potenzielle Konflikte zu vermeiden. Verwenden Sie den Prozessbereich für temporäre oder sitzungsspezifische Variablen. Verwenden Sie den Benutzerbereich für Variablen, die für den aktuellen Benutzer über Sitzungen hinweg verfügbar sein sollen, aber nicht für andere Benutzer. Verwenden Sie den Maschinenbereich für systemweite Konfigurationen, die für alle Benutzer und Prozesse zugänglich sein sollen, wie zum Beispiel Datenbankverbindungszeichenfolgen oder systemweite Konfigurationsdateien.

Dokumentieren Sie Ihre Variablen

Führen Sie eine Dokumentationsdatei oder Kommentare in Ihren Skripten, die den Zweck jeder Umgebungsvariablen, deren Verwendung und alle Abhängigkeiten erklären. Dies wird anderen oder Ihnen selbst in der Zukunft helfen, Ihre Einrichtung zu verstehen.

Vermeiden Sie das Hardcoding sensibler Daten

Anstatt sensible Informationen wie API-Schlüssel, Passwörter oder Werte direkt in Ihre Skripte zu schreiben, verwenden Sie Umgebungsvariablen, um Ihre Skripte flexibler und portabler zu machen. Dies ermöglicht es, dass dasselbe Skript auf verschiedenen Maschinen mit unterschiedlichen Konfigurationen ausgeführt werden kann.

Überprüfen Sie vorhandene Variablen

Bevor Sie eine neue Umgebungsvariable erstellen, überprüfen Sie, ob sie bereits existiert, um unbeabsichtigte Überschreibungen zu vermeiden. Dies stellt sicher, dass Ihre Skripte oder Anwendungen nicht aufgrund fehlender Umgebungsvariablen fehlschlagen.

Verwenden Sie Profilskripte für Persistenz

Für Umgebungsvariablen, die über Sitzungen hinweg bestehen bleiben sollen, sollten Sie diese in Ihr PowerShell-Profil einfügen. Auf diese Weise werden sie jedes Mal gesetzt, wenn Sie eine neue PowerShell-Sitzung öffnen.

Bereinigung ungenutzter Umgebungsvariablen

Entfernen Sie ungenutzte Umgebungsvariablen, um Unordnung und mögliche Konflikte zu vermeiden, insbesondere bei lang andauernden Sitzungen oder großen Systemen. Sie können Umgebungsvariablen mit dem PowerShell-Cmdlet Remove-Item entfernen. Dies hilft, eine saubere Umgebung zu erhalten und die versehentliche Verwendung von veralteten oder irrelevanten Variablen zu vermeiden.

Testen Sie in einer sicheren Umgebung

Bevor Sie Änderungen an wichtigen Umgebungsvariablen vornehmen, insbesondere in einer Produktionsumgebung, testen Sie diese in einer Entwicklungs- oder Staging-Umgebung, um Störungen zu vermeiden.

Seien Sie vorsichtig bei Pfadänderungen

Wenn Sie die PATH-Variable ändern, stellen Sie sicher, dass Sie nicht versehentlich wichtige Pfade entfernen. Fügen Sie immer hinzu (+=) anstatt zu überschreiben (=) und machen Sie bei Bedarf ein Backup des bestehenden PATH.

Berücksichtigen Sie plattformübergreifende Kompatibilität

Wenn Ihre Skripte in verschiedenen Umgebungen (Windows, Linux, macOS) laufen, beachten Sie die Groß- und Kleinschreibung von Umgebungsvariablennamen unter Linux und macOS. Windows-Umgebungsvariablen sind nicht groß- und kleinschreibungsempfindlich, aber Linux/macOS-Umgebungsvariablen sind es. Testen Sie Skripte auf allen Zielplattformen, um sicherzustellen, dass Umgebungsvariablen korrekt funktionieren, und passen Sie Ihren Ansatz entsprechend an.

Best Practices für die Sicherheit von Active Directory

FAQ

Teilen auf

Erfahren Sie mehr

Über den Autor

Asset Not Found

Jonathan Blackwell

Leiter der Softwareentwicklung

Seit 2012 hat Jonathan Blackwell, ein Ingenieur und Innovator, eine führende Rolle in der Ingenieurskunst übernommen, die Netwrix GroupID an die Spitze des Gruppen- und Benutzermanagements für Active Directory und Azure AD Umgebungen gebracht hat. Seine Erfahrung in Entwicklung, Marketing und Vertrieb ermöglicht es Jonathan, den Identity-Markt und die Denkweise der Käufer vollständig zu verstehen.