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.
5
(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 blaGet-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ę ...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.
źródło