Управление переменными окружения Windows в PowerShell

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

В Windows доступны несколько типов переменных окружения:

  • Переменные окружения процесса – создаются динамически и доступны только в текущем запущенном процесс
  • Пользовательские переменные окружения – содержат настройки конкретного пользователя и хранятся в его профиле (хранятся в ветке реестре HKEY_CURRENT_USEREnvironment )
  • Системные переменные окружения – глобальные переменные окружения, которые применяются для все пользователей (хранятся в ветке HKLMSYSTEMCurrentControlSetControlSession ManagerEnvironment )

Типы переменных окружения Windows указаны в порядке уменьшения приоритета. Т.е. значение переменной окружения %TEMP% в пользовательском профиле будет иметь больший приоритет, чем значение системной переменной окружения %TEMP%.

Для управления переменными окружениями обычно используется вкладка Advanced в свойствах системы. Чтобы открыть System Properties , выполните команду SystemPropertiesAdvanced и нажмите на кнопку Environment Variable .

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

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

Get-ChildItem Env:

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

Получить значение определенной переменной окружения Path:

Get-ChildItem env:Path

Т.к. переменные окружения, по сути, это файлы на виртуальном диске, нажатием кнопки TAB вы можете использовать автозавершение для набора имени переменной окружения.

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

(Get-ChildItem env:Path).value -split ";"

Добавить значение в переменную окружения Path:

$Env:Path += ";c:tools"

Однако это добавляет временное значение в переменную окружения Path . При следующей перезагрузке новое значение в переменной будет сброшено. Чтобы добавить постоянное значение в системную переменную окружения, используется такая конструкция:

$path = [System.Environment]::GetEnvironmentVariable("Path","Machine")
[System.Environment]::SetEnvironmentVariable("Path", $path + ";C:tools", "Machine")
[System.Environment]::GetEnvironmentVariable("Path","Machine") -Split ";"

Чтобы изменить пользовательскую переменную окружения, замените в предыдущих командах область Machine на User .

Несмотря на то, что фактически переменные окружения и их значения хранятся в реестре, прямое изменение их значений в реестре используется редко. Причина в том, что текущий процесс при запуске считывает значение переменных окружения из реестра. Если вы измените их, процесс не будет уведомлён об этом.

Если вам нужно из PowerShell изменить в реестре значение переменной окружения, используются команды:

$variable = Get-ItemPropertyValue -Path 'HKCU:Environment' -Name 'Path'
$add_path = $variable + ';C:Git'
Set-ItemProperty -Path 'HKCU:Environment' -Name 'Path' -Value $add_path

Вы можете создать локальную переменную окружения. По умолчанию такая переменная окружения будет доступна только в текущем процессе (PowerShell), из которого она создана. После того, как процесс будет закрыт – переменная окружения будет удалена.

$env:SiteName = 'remontka.com'
Get-ChildItem Env:SiteName

Если нужно создать глобальную системную переменную (нужны права администратора), используйте команду:

[System.Environment]::SetEnvironmentVariable('siteName','remontka.com',"Machine")

Очистить и удалить глобальную переменную окружения:

[Environment]::SetEnvironmentVariable('siteName', $null, "Machine")

admin

Share
Published by
admin

Recent Posts

Что такое Zulip

Zulip — программное обеспечение для реализации корпоративного чата. Разработан в 2012 году, в 2014 был…

3 месяца ago

Что такое Zookeeper

Zookeeper — cервис-координатор, который позволяет обеспечить контроль синхронизации данных. Разработан на Java компанией Apache Software…

3 месяца ago

Что такое Zimbra

Zimbra — программное обеспечение для реализации почтового сервиса или, если сказать точнее, автоматизации совместной деятельности…

3 месяца ago

Что такое Zabbix

Zabbix — бесплатная система мониторинга. Позволяет отслеживать состояние сетевых узлов, компьютеров и серверов. Возможности: Поддержка…

3 месяца ago

Что такое YouTube

YouTube — компания-владелец одноименного портала для просмотра и хранения видео. Чтобы пользоваться данным порталом достаточно…

3 месяца ago

Что такое yota

Yota — провайдер, предоставляющий доступ к сети Интернет по беспроводной связи. Впервые, сервис начал работать…

3 месяца ago