PowerShell: невозможно изменить переменные среды

5

У меня есть переменная окружения, установленная через «свойства системы -> расширенные -> переменные среды». Я изменил значение переменной. В cmd я вижу новое значение. В PowerShell это значение остается прежним. Попытка установить его с помощью [Environment] :: SetEnvironmentVariable не имеет никакого эффекта.

IttayD
источник

Ответы:

4

PowerShell будет кешировать свою информацию. Используйте метод Refresh, чтобы решить вашу проблему. Я нашел это в области SQL тоже.

Роб Фарли
источник
Как именно я запускаю этот метод?
IttayD
В обычном каталоге вы должны быть в состоянии сделать: (get-item .).Refresh()- но это, кажется, недоступно для папки Env :. Запуск нового экземпляра PowerShell продемонстрирует, что это проблема с кэшированием - сейчас я просто не уверен, где метод Refresh должен жить для него. Я могу запросить переменную окружения, называемую blah, с помощью которой я с Get-WmiObject Win32_Environment | where-object -filter {$_.Name -eq 'blah'} | select VariableValueрадостью показываю последнюю версию, хотя кеш до сих пор не обновлен для диска env :. Я посмотрю еще немного ...
Роб Фарли
0

Вы запустили новый экземпляр PowerShell?

Каждый процесс получает свой собственный блок среды при запуске. Обычно он получает копию блока среды родительского процесса, но CreateProcess также может принимать пользовательский.

Это означает, что изменения в системной среде не влияют на запущенные процессы. Так что вам нужно начать новый.

Джей Базузи
источник