1 ответ:
Следующий код определяет переменную окружения
FOO, если она еще не существует.if (-not (Test-Path env:FOO)) { $env:FOO = 'bar' }Примечание: эта вновь определенная переменная среды будет существовать только длятекущего процесса и любых дочерних процессов, которые он создает (например, при запуске нового сеанса PowerShell из ISE). Спасибо PetSerAl.
следующее было в основном внесено Ansgar Wiechers , с дополнением Mathias R. Джессен:
Если вы хотите определить переменную окружения постоянно, Вам нужно использовать статику
SetEnvironmentVariable()способ проведения[System.Environment]класс:Обратите внимание, что эти определения вступают в силу в будущих сеансах (процессах), поэтому для того, чтобы определить переменную для текущего процесса , а также, беги# user environment [Environment]::SetEnvironmentVariable('FOO', 'bar', 'User') # system environment (requires admin privileges) [Environment]::SetEnvironmentVariable('FOO', 'bar', 'Machine')$env:FOO = 'bar'кроме того , что фактически то же самое, что[Environment]::SetEnvironmentVariable('FOO', 'bar', 'Process').при использовании
[Environment]::SetEnvironmentVariable()сUserилиMachine, aWM_SETTINGCHANGEсообщение отправляется другим приложениям, чтобы уведомить их об изменении (хотя немногие приложения реагируют на такие уведомления).
Это не применяется при таргетингеProcess(или при назначении$env:FOO), потому что никакие другие приложения (процессы) не могут видеть переменную в любом случае.
Comments