Mein Vorschlag ist dieser:
Ich habe dies getestet, um Folgendes hinzuzufügen C:\oracle\x64\bin
auf die Umgebungsvariable Path
permanent und das funktioniert gut.
$ENV:PATH
Der erste Weg ist einfach zu tun:
$ENV:PATH=”$ENV:PATH;c:\path\to\folder”
Aber diese Veränderung ist nicht von Dauer. $env:path
wird auf den vorherigen Zustand zurückgesetzt, sobald Sie Ihr PowerShell-Terminal schließen und erneut öffnen. Das liegt daran, dass Sie die Änderung auf der Sitzungsebene und nicht auf der Quellebene (d. h. auf der Registrierungsebene) vorgenommen haben. So zeigen Sie den globalen Wert von $env:path
, tun:
Get-ItemProperty -Path ‘Registry::HKEY_LOCAL_MACHINE\System\CurrentControlSet\Control\Session Manager\Environment’ -Name PATH
Oder genauer gesagt:
(Get-ItemProperty -Path ‘Registry::HKEY_LOCAL_MACHINE\System\CurrentControlSet\Control\Session Manager\Environment’ -Name PATH).path
Um dies zu ändern, müssen wir zunächst den ursprünglichen Pfad erfassen, der geändert werden muss:
$oldpath = (Get-ItemProperty -Path ‘Registry::HKEY_LOCAL_MACHINE\System\CurrentControlSet\Control\Session Manager\Environment’ -Name PATH).path
Jetzt legen wir fest, wie der neue Pfad aussehen soll. In diesem Fall fügen wir einen neuen Ordner hinzu:
$newpath = “$oldpath;c:\path\to\folder”
Hinweis: Stellen Sie sicher, dass die $newpath
sieht so aus, wie Sie es wollen. Wenn nicht, könnten Sie Ihr Betriebssystem beschädigen.
Wenden Sie nun den neuen Wert an:
Set-ItemProperty -Path ‘Registry::HKEY_LOCAL_MACHINE\System\CurrentControlSet\Control\Session Manager\Environment’ -Name PATH -Value $newPath
Prüfen Sie nun noch einmal, ob es so aussieht, wie Sie es erwarten:
(Get-ItemProperty -Path ‘Registry::HKEY_LOCAL_MACHINE\System\CurrentControlSet\Control\Session Manager\Environment’ -Name PATH).Path
Sie können nun Ihr PowerShell-Terminal neu starten (oder sogar den Computer neu starten) und sehen, dass der alte Wert nicht wiederhergestellt wird.
Beachten Sie, dass sich die Reihenfolge der Pfade ändern kann, so dass sie in alphabetischer Reihenfolge stehen. Zur Vereinfachung können Sie die Ausgabe in Zeilen aufteilen, indem Sie das Semikolon als Trennzeichen verwenden:
($env:path).split(“;”)
1 Stimmen
Ich würde gerne ein zentrales Profil auf einer Dateifreigabe haben. Die Synchronisierung ist mühsam. Das Erstellen eines Stub-Profils mit . \\computer\share\path\Profile.ps1 erscheint wie ein Kunstgriff (versuchen Sie Notepad $Profile). Es wäre schön, wenn es eine Möglichkeit gäbe, die automatische Variable $Profile dauerhaft zu ändern.
5 Stimmen
Nein die PATH-Umgebung tut auch die Powershell-Eingabeaufforderung beeinflussen. Der Unterschied besteht jedoch darin, dass powershell keine in Anführungszeichen eingeschlossenen Pfade akzeptiert. Lösung: Entfernen Sie alle eingeschlossenen Anführungszeichen (
"
) in der Umgebungsvariablen path4 Stimmen
WENN SIE HIER LANDEN FÜR PS > v1... Im Anschluss an Nilzors Kommentar oben: Verwenden Sie dies, um alle " aus den Pfaden in der Umgebungsvariablen PATH für Ihre Sitzung zu entfernen:
$($Env:PATH).Split(';') | %{ $str += "$($_.Trim('"'));" }; $Env:PATH=$str