У меня есть переменная окружения, установленная через «свойства системы -> расширенные -> переменные среды». Я изменил значение переменной. В cmd я вижу новое значение. В PowerShell это значение остается прежним. Попытка установить его с помощью [Environment] :: SetEnvironmentVariable не имеет никакого эффекта.
5
(get-item .).Refresh()
- но это, кажется, недоступно для папки Env :. Запуск нового экземпляра PowerShell продемонстрирует, что это проблема с кэшированием - сейчас я просто не уверен, где метод Refresh должен жить для него. Я могу запросить переменную окружения, называемую blah, с помощью которой я сGet-WmiObject Win32_Environment | where-object -filter {$_.Name -eq 'blah'} | select VariableValue
радостью показываю последнюю версию, хотя кеш до сих пор не обновлен для диска env :. Я посмотрю еще немного ...Вы запустили новый экземпляр PowerShell?
Каждый процесс получает свой собственный блок среды при запуске. Обычно он получает копию блока среды родительского процесса, но CreateProcess также может принимать пользовательский.
Это означает, что изменения в системной среде не влияют на запущенные процессы. Так что вам нужно начать новый.
источник