Гид по технологиям

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

4 min read Windows Обновлено 12 Dec 2025
PowerShell: вывести переменные окружения в Windows
PowerShell: вывести переменные окружения в Windows

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

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

Что такое переменная окружения

Переменная окружения — это строковый идентификатор, который содержит настройки и пути, связанные с операционной системой или приложением. Примеры: путь к установленным программам, папкам временных файлов, настройки локали и другие значения, которые требуются как родительским процессам, так и их дочерним.

Ключевые свойства переменных окружения:

  • Хранятся в виде строк и обычно не пустые.
  • Наследуются дочерними процессами (если заданы в пределах сессии/пользователя/системы).
  • Доступ к ним можно получить и изменить через провайдер Env в PowerShell.

Определение для быстрого понимания: провайдер Env — это встроенный способ PowerShell представить переменные окружения как «псевдо-папку» Env:, откуда можно получать элементы, перечислять и изменять их.

Основные команды для печати всех переменных окружения

Ниже — проверенные команды и шаги, которые можно выполнить в Windows 10/11 и других поддерживаемых версиях.

1. Быстро: ls env

  1. Нажмите кнопку Пуск и введите PowerShell, затем выберите «Запустить от имени администратора».
  2. Разрешите запрос Контроля учётных записей, выбрав Да.
  3. Вставьте и выполните:
ls env:

Скриншот: команда ls env в PowerShell

Команда вернёт список пар «имя — значение» переменных окружения, представленных как элементы каталога. По умолчанию вывод не сортирован; для сортировки примените | Sort-Object Name.

2. Стандарт: Get-ChildItem Env

  1. Откройте PowerShell с повышенными правами.
  2. Выполните:
Get-ChildItem Env: | Sort Name

Скриншот: команда Get-ChildItem Env в PowerShell

Эта команда перечисляет все переменные окружения и сортирует их по имени.

3. Альтернатива: dir env

  1. Правой кнопкой кликните Пуск и выберите PowerShell (Admin).
  2. Введите:
dir env:

Команда эквивалентна предыдущим и выводит имена и значения переменных окружения.

4. Сохранение вывода в файл

Если нужно отправить список переменных в файл для анализа или резервной копии, используйте экспорт в CSV или простой текст:

  • Экспорт в CSV (структурированный формат):
gci env: | sort-object name | Export-Csv -Path D:\env_variables.txt -NoTypeInformation
  • Экспорт в обычный текст (каждая пара на новой строке):
Get-ChildItem Env: | Sort-Object Name | Format-Table Name,Value -AutoSize > D:\env_variables.txt

Скриншот: экспорт переменных окружения в CSV

Синтаксис Export-Csv (обобщённо) — инструмент для преобразования объектов PowerShell в формат CSV. Часто используемые параметры: -Path, -NoTypeInformation, -Encoding, -Append.

Когда перечисление переменных может не показать ожидаемое значение

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

  • Если вы меняете системные/пользовательские переменные через GUI (Панель управления → Система → Доп. параметры системы), изменения применятся только к новым сессиям процессов.
  • В удалённой сессии PowerShell (WinRM/Enter-PSSession) может использоваться другой набор переменных окружения.
  • Переменные, установленные в текущем скрипте без параметра persist, будут видимы только внутри этого процесса.

Альтернативные подходы

  • Использовать .NET API:
[System.Environment]::GetEnvironmentVariables()
  • Читать напрямую реестр (для постоянных переменных):

HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Session Manager\Environment
HKEY_CURRENT_USER\Environment

  • Через WMI/CIM можно получить переменные из удалённых ПК при необходимости централизованного аудита.

Быстрые приёмы и шаблоны

Cheat sheet — короткие фрагменты для повседневной работы:

  • Просмотреть одну переменную:
$env:Path
  • Установить временно для текущей сессии:
$env:MY_VAR = "значение"
  • Удалить переменную в текущей сессии:
Remove-Item Env:MY_VAR
  • Добавить значение в PATH для текущей сессии:
$env:Path += ";C:\Tools"

Рекомендации по безопасности и правах

  • Избегайте записи паролей или секретов в переменные окружения в открытом виде. Переменные окружения видимы процессам и потенциально могут быть прочитаны другими пользователями или процессами с достаточными правами.
  • Для изменения системных значений используйте учётную запись администратора.

Роли и контрольные списки

Для администратора:

  • Проверить список переменных через Get-ChildItem Env:.
  • Экспортировать список на контролируемое хранилище.
  • По требованию сравнить с эталонным набором (baseline).

Для разработчика:

  • Локально установить значения через $env:VARIABLE для тестов.
  • Не сохранять секреты в системных переменных.
  • Убедиться, что изменения корректно наследуются дочерними процессами.

Когда стоит использовать другие инструменты

  • Для централизованного аудита большого парка машин лучше использовать конфигурационные инструменты (Ansible, SCCM, DSC) или скрипты, которые собирают значения через WinRM.
  • Если нужно управлять переменными на уровне образов/контейнеров — используйте механизмы контейнеризации (Docker/Podman) и их переменные окружения.

Минимальные шаги для воспроизведения и тестирования

  1. Откройте PowerShell (Admin).
  2. Выполните Get-ChildItem Env: | Sort-Object Name и проверьте вывод.
  3. Измените переменную $env:TEST_VAR = "123" и запустите дочерний процесс (например, новую PowerShell сессию) для проверки наследования.

Модель принятия решения

flowchart TD
  A[Нужно просто посмотреть переменные?] -->|Да| B{Сохранить в файл?}
  B -->|Нет| C[Выполнить Get-ChildItem Env: | Sort-Object Name]
  B -->|Да| D[Выполнить Export-Csv в файл]
  A -->|Нет, нужен контроль на многих ПК| E[Использовать WinRM/Ansible/DSC]

Краткое резюме

  • Переменные окружения в PowerShell доступны через провайдер Env:.
  • Основные команды: ls env:, Get-ChildItem Env:, dir env:.
  • Для экспорта используйте Export-Csv или перенаправление вывода.
  • Учтите ограничения: изменения видны новым сессиям, а не текущим процессам, и не храните секреты в открытом виде.

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

Если нужно, могу подготовить готовый скрипт для сбора переменных окружения с нескольких удалённых машин или шаблон CSV для аудита.

Поделиться: X/Twitter Facebook LinkedIn Telegram
Автор
Редакция

Похожие материалы

Как найти и сменить номер в WhatsApp
Мобильные приложения

Как найти и сменить номер в WhatsApp

Как настроить VPN для всей домашней сети
Безопасность

Как настроить VPN для всей домашней сети

Как настроить Azure Virtual Desktop
Cloud

Как настроить Azure Virtual Desktop

Google Drive не синхронизируется в Windows 11 — решения
Поддержка

Google Drive не синхронизируется в Windows 11 — решения

Как повысить вовлечённость в Facebook
Социальные сети

Как повысить вовлечённость в Facebook

OneDrive удаляет файлы — как исправить
OneDrive

OneDrive удаляет файлы — как исправить