Как установить переменную окружения в PowerShell, если его не существует?



Я удивлен, что не получил ответа на этот распространенный сценарий после того, как некоторое время гуглил...



Как можно задать переменную окружения в Powershell, если она не существует?

567   1  

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, a WM_SETTINGCHANGE сообщение отправляется другим приложениям, чтобы уведомить их об изменении (хотя немногие приложения реагируют на такие уведомления).
Это не применяется при таргетинге Process (или при назначении $env:FOO), потому что никакие другие приложения (процессы) не могут видеть переменную в любом случае.

См. также .

Comments

    Ничего не найдено.