PowerShell: nie można modyfikować zmiennych środowiskowych

5

Mam zmienną środowiskową ustawioną za pomocą „właściwości systemu -> zaawansowane -> zmienne środowiskowe”. Zmodyfikowałem wartość zmiennej. W cmd widzę nową wartość. W PowerShell wartość jest nadal starą wartością. Próba ustawienia go za pomocą [Environment] :: SetEnvironmentVariable nie ma żadnego efektu.

ItdayD
źródło

Odpowiedzi:

4

PowerShell zbuforuje swoje informacje. Użyj metody Odśwież, aby rozwiązać problem. Znalazłem to również w obszarze SQL.

Rob Farley
źródło
Jak dokładnie uruchomić tę metodę?
IttayD
W normalnym katalogu powinieneś być w stanie: (get-item .).Refresh()- ale nie wydaje się to być dostępne dla folderu Env:. Uruchomienie nowej instancji programu PowerShell pokaże, że jest to problem z pamięcią podręczną - po prostu nie jestem teraz pewien, gdzie powinna działać metoda Refresh. Mogę zapytać o zmienną środowiskową o nazwie bla Get-WmiObject Win32_Environment | where-object -filter {$_.Name -eq 'blah'} | select VariableValue, a to z radością pokazuje mi najnowszą wersję, mimo że pamięć podręczna wciąż nie została odświeżona dla dysku env:. Spojrzę jeszcze trochę ...
Rob Farley,
0

Czy uruchomiłeś nową instancję PowerShell?

Każdy proces otrzymuje swój własny blok środowiska podczas uruchamiania. Zwykle otrzymuje kopię nadrzędnego bloku środowiska procesu, ale CreateProcess może również przyjąć niestandardowy.

Oznacza to, że zmiany w środowisku systemowym nie wpłyną na uruchomione procesy. Musisz więc założyć nowy.

Jay Bazuzi
źródło