Работа с переменными окружения в PowerShell

  • Михаил
  • 15 мин. на прочтение
  • 307
  • 28 Jul 2023
  • 28 Jul 2023

С помощью PowerShell вы можете получать, добавлять, изменять, очищать и удалять значения переменных окружения. Переменные среды — это переменные, которые описывают среду, в которой работают ваши программы. Windows и PowerShell используют переменные среды для хранения постоянной информации, которая влияет на выполнение системы и процессов. В отличие от переменных PowerShell, переменные среды не подлежат ограничениям области видимости. Environment представляет собой плоское пространство имён, содержащее переменные среды, характерные для текущего сеанса пользователя. Переменные среды не имеют дочерних элементов.

Как вывести все переменные окружения в PowerShell

Чтобы показать все переменные окружения в PowerShell используйте команду:

Get-ChildItem Env:

Точно такой же результат будет получен при использовании сокращённой записи этой команды:

gci env:

Командлет Get-Item даст точно такой же результат — выведет все переменные окружения:

Get-Item Env:

Для постраничного вывода информации с возможностью пролистывания используйте следующую команду:

Get-ChildItem Env: | more

Для сохранения вывода в файл output.txt, который можно открыть в любом редакторе, например в Notepad.:

Get-ChildItem Env: > output.txt

Чтобы показать значения всех переменных в списке, отсортированным по именам переменных:

Get-ChildItem Env: | Sort Name

Как показать значение переменной окружения в PowerShell

Чтобы показать значение только одной переменной, используйте конструкцию:

gci env: | where name -contain 'ИМЯ-ПЕРЕМЕННОЙ'

К примеру, чтобы показать значение только PROCESSOR_ARCHITECTURE:

gci env: | where name -contain 'PROCESSOR_ARCHITECTURE'

Чтобы показать значение всех переменных, соответствующих указанному шаблону, используйте команду вида:

gci env: | where name -like 'ЧАСТЬ-ИМЕНИ*'

Например, чтобы показать значения всех переменных, чьё имя начинается на «Pro»:

gci env: | where name -like 'Pro*'

Вы можете использовать и другой синтаксис для показа значения переменной окружения.

Следующая команда выведет содержимое WINDIR:

Get-ChildItem -Path Env:windir

Эта команда также покажет значение переменной окружения WINDIR (обратите внимание на разницу в форматировании):

$env:windir

Как установить или поменять значение переменной окружения в PowerShell
Для установки новой переменной окружения используется команда вида:

$Env:<ИМЯ-ПЕРЕМЕННОЙ> = "<НОВОЕ-ЗНАЧЕНИЕ>"

Например, чтобы установить значение переменной servpath на c:/Server:

$Env:servpath = "c:/Server"

Чтобы добавить;c:\temp к значению переменной окружения Path используйте следующий синтаксис:

$Env:Path += ";c:\temp"

На Linux или MacOS в качестве разделителя используйте двоеточие (:), чтобы отделить новый путь от имеющихся путей.

$Env:PATH += ":/usr/local/temp"

Вы также можете использовать командлеты PowerShell, такие как Set-Item, Remove-Item и Copy-Item для изменения значений переменных окружения.

Пример использования командлета Set-Item для добавления ;c:\temp к значению переменной окружения Path

Set-Item -Path Env:Path -Value ($Env:Path + ";C:\Temp")

В этой команде значение заключено в кавычки, чтобы оно интерпретировалось как единый юнит.

Как удалить переменную окружения в PowerShell
Эта команда удаляет переменную окружения USERROLE2 из текущей сессии:

Remove-Item -Path Env:USERROLE2

Эта команда удаляет переменную окружения USERROLE очищая её значение:

Clear-Item -Path Env:USERROLE