Налаштування змінних середовища Windows PowerShell

Я з'ясував, що установка змінної оточення PATH впливає тільки на старий командний рядок. PowerShell, схоже, має інші налаштування середовища. Як змінити змінні середовища для PowerShell (v1)?

Примітка:

Я хочу зробити свої зміни постійними, тому мені не потрібно встановлювати їх при кожному запуску PowerShell. Чи є у PowerShell файл профілю? Щось на зразок профілю Bash в Unix?

Якщо в якийсь момент під час сеансу PowerShell вам потрібно тимчасово долучитися до змінної оточення PATH, ви можете зробити це таким чином:

$env:Path += ";C:\Program Files\GnuWin32\bin"
Коментарі (7)
Рішення

Зміна актуальних змінних оточення може бути виконана за допомогою використовуючи інформацію env: простір імен/диск. Наприклад, такий код оновить змінну оточення path:

$env:Path = "SomeRandomPath";             (replaces existing path) 
$env:Path += ";SomeRandomPath"            (appends to existing path)

Існують способи зробити налаштування середовища постійними, але якщо ви використовуєте їх тільки з PowerShell, можливо набагато краще використовувати ваш профіль для ініціювання параметрів. При запуску PowerShell буде запускати будь-які .ps1 файли файли, які він знайде в каталозі WindowsPowerShell в папці Мої документи. Зазвичай у вас вже є файл profile.ps1 файл вже є в цьому каталозі. Шлях на моєму комп'ютері наступний

C:\Users\JaredPar\Documents\WindowsPowerShell\profile.ps1
Коментарі (8)

Ви також можете змінити користувацькі/системні змінні середовища постійно (тобто вони будуть постійними при перезапуску оболонки) за допомогою наступних дій:

Зміна системної змінної оточення

[Environment]::SetEnvironmentVariable
     ("Path", $env:Path, [System.EnvironmentVariableTarget]::Machine)

Змінити змінну оточення користувача

[Environment]::SetEnvironmentVariable
     ("INCLUDE", $env:INCLUDE, [System.EnvironmentVariableTarget]::User)

Використання з коментарів - додати в системну змінну оточення

[Environment]::SetEnvironmentVariable(
    "Path",
    [Environment]::GetEnvironmentVariable("Path", [EnvironmentVariableTarget]::Machine) + ";C:\bin",
    [EnvironmentVariableTarget]::Machine)

Рядкове рішення також можливе, якщо ви не хочете писати типи

[Environment]::SetEnvironmentVariable("Path", $env:Path + ";C:\bin", "Machine")
Коментарі (11)