пятница, 4 октября 2013 г.

Environment variable is not visible (процесс не видит установленную environment variable)

Пытался прочитать недавно установленную environment variable из PowerShell в SQL Agent Job, но он упорно не видел ее. Наткнулся на следующую очевидную вещь, которую, видимо, знали все кроме меня:
 
 
т.е.  эти переменные кэшируются процессом во время старта и дальше он не видит их изменений (кроме случая, когда изменил их сам). Официального workaround не существует (кроме как перезапустить процесс), но вот вам неофициальный от меня: можно прочитать эти значения в реестре (например, при помощи следующей строчки в Powershell script).


$MSU=(New-Object -ComObject WScript.Shell).RegRead("HKLM\SYSTEM\ControlSet001\Control\....")