- Работа с переменными окружения в PowerShell
- Как вывести все переменные окружения в PowerShell
- Как показать значение переменной окружения в PowerShell
- Как установить или поменять значение переменной окружения в PowerShell
- Как удалить переменную окружения в PowerShell
- Работа с переменными окружения в командной строке (CMD)
- Как вывести все переменные окружения в командной строке
- Как показать значение переменной в CMD
- Как установить значение переменной
- Как удалить переменную
- Каким образом я могу изменить переменные среды Windows 10?
- Откройте окно переменных среды
- Как редактировать переменную среды в Windows
- Как редактировать переменную среды из командной строки
- Как редактировать переменную среды из PowerShell
- Как очистить значение переменной среды в Windows (из командной строки)
- Как удалить переменную среды в Windows
- Как удалить переменную среды из командной строки
- Как удалить переменную среды из PowerShell
- Командная строка для удаления переменной среды из конфигурации уровня ОС
Работа с переменными окружения в PowerShell
В PowerShell вы можете получать, добавлять, изменять, очищать и удалять значения переменных окружения.
Переменные среды — это переменные, которые описывают среду, в которой работают ваши программы. Windows и PowerShell используют переменные среды для хранения постоянной информации, которая влияет на выполнение системы и процессов. В отличие от переменных PowerShell, переменные среды не подлежат ограничениям области видимости.
Environment представляет собой плоское пространство имён, содержащее переменные среды, характерные для текущего сеанса пользователя. Переменные среды не имеют дочерних элементов.
Как вывести все переменные окружения в PowerShell
Чтобы показать все переменные окружения в PowerShell используйте команду:
Точно такой же результат будет получен при использовании сокращённой записи этой команды:
Командлет Get-Item даст точно такой же результат — выведет все переменные окружения:
Для постраничного вывода информации с возможностью пролистывания используйте следующую команду:
Для сохранения вывода в файл output.txt, который можно открыть в любом редакторе, например в Notepad.:
Чтобы показать значения всех переменных в списке, отсортированным по именам переменных:
Как показать значение переменной окружения в PowerShell
Чтобы показать значение только одной переменной, используйте конструкцию:
К примеру, чтобы показать значение только PROCESSOR_ARCHITECTURE:
Чтобы показать значение всех переменных, соответствующих указанному шаблону, используйте команду вида:
Например, чтобы показать значения всех переменных, чьё имя начинается на «Pro»:
Вы можете использовать и другой синтаксис для показа значения переменной окружения.
Следующая команда выведет содержимое WINDIR:
Эта команда также покажет значение переменной окружения WINDIR (обратите внимание на разницу в форматировании):
Как установить или поменять значение переменной окружения в PowerShell
Для установки новой переменной окружения используется команда вида:
Например, чтобы установить значение переменной servpath на c:/Server:
Чтобы добавить;c:\temp к значению переменной окружения Path используйте следующий синтаксис:
На Linux или MacOS в качестве разделителя используйте двоеточие (:), чтобы отделить новый путь от имеющихся путей.
Вы также можете использовать командлеты PowerShell, такие как Set-Item, Remove-Item и Copy-Item для изменения значений переменных окружения.
Пример использования командлета Set-Item для добавления ;c:\temp к значению переменной окружения Path
В этой команде значение заключено в кавычки, чтобы оно интерпретировалось как единый юнит.
Как удалить переменную окружения в PowerShell
Эта команда удаляет переменную окружения USERROLE2 из текущей сессии:
Эта команда удаляет переменную окружения USERROLE очищая её значение:
Работа с переменными окружения в командной строке (CMD)
Как вывести все переменные окружения в командной строке
Чтобы показать все переменные окружения и их значения в командной строке используйте команду:
Чтобы вывод огранить одним экраном с возможностью пролистывания списка, используйте следующую конструкцию:
Для сохранения вывода в файл:
Этот текстовый файл output.txt можно открыть в любом редакторе, например в Notepad.
Как показать значение переменной в CMD
Для показа значения переменной используйте знакомую команду set:
Команда set выводит значение всех переменных, которые начинаются на строку ПЕРЕМЕННАЯ. К примеру, предыдущая команда выведет значение переменных PATH и PATHEXT.
А следующая команда выведет значения всех переменных, чьё имя начинается на P:
Как установить значение переменной
Чтобы установить значение переменной, используйте одну из двух конструкций.
В после выполнения этой команды вам будет показано приглашение командной строки для ввода значения переменной:
Подстановка переменной среды может быть расширена следующим образом:
расширит действие переменной среды PATH, заменяя каждое вхождение «str1» в расширенном результате на «str2». «str2» может быть пустой строкой для эффективного удаления вхождений «str1» из расширенного вывода. «str1» может начинаться со звёздочки, и в этом случае это будет соответствовать любому началу расширенного вывода до первого вхождения оставшейся части «str1».
Как удалить переменную
Чтобы удалить переменную, используйте следующую команду:
В результате будет полностью удалена ПЕРЕМЕННАЯ. Обратите внимание, что используется знак равенства, но в отличие от предыдущей команды, не используется флаг /P. Поэтому значение не просто становится равным пустой строке, а происходит удаление переменной целиком.
Каким образом я могу изменить переменные среды Windows 10?
Программистам, системным администраторам и опытным пользователям может потребоваться в какой-то момент поработать с переменными среды. Некоторые могут захотеть удалить переменную среды; другие захотят изменить его значение и так далее. В этом руководстве рассказывается, как редактировать или удалять переменные среды, а также как отключить переменные среды в Windows:
Откройте окно переменных среды
Чтобы внести многие изменения, показанные в этой статье, вам сначала нужно открыть окно переменных среды. В этом руководстве объясняется, как это сделать, и показаны основы работы с переменными среды.
Если вы хотите пропустить его чтение, один путь, который работает одинаково во всех версиях Windows, — это открыть окно «Выполнить» (Win + R), командную строку или PowerShell и выполнить команду: rundll32.exe sysdm.cpl,EditEnvironmentVariables .
Как редактировать переменную среды в Windows
Если вы хотите изменить значение существующей переменной среды, сначала выберите ее в окне «Переменные среды». Затем щелкните или коснитесь «Изменить».
Вам будет показано окно, в котором вы можете редактировать как имя, так и значение переменной. Внесите желаемые изменения и нажмите ОК . Затем еще раз нажмите OK в окне переменных среды .
Как редактировать переменную среды из командной строки
Вы также можете создать новую переменную среды или изменить значение существующей переменной среды (но не ее имя) из командной строки . Вам нужно ввести следующую команду:
- setx variable_name «value» , если вы хотите создать переменную среды пользователя
- setx variable_name «value» /m , если вы собираетесь создать системную переменную среды
Например, мы набрали setx TEST «C:\digitalcitizen» и создали пользовательскую переменную TEST со значением C:\digitalcitizen.
Если мы хотим изменить значение переменной среды, мы можем запустить ту же команду setx, но указать новое значение для переменной. Например, выполнение setx TEST «C:\DC» изменяет значение переменной среды TEST на C:\DC.
Это работает, потому что команда setx перезаписывает существующее значение последним введенным вами. Следовательно, если вы используете эту команду несколько раз для одной и той же переменной, переменная сохранит последнее введенное вами значение.
Если вы хотите, чтобы переменная имела несколько путей в своем значении, вы должны записать их все, разделяя их точкой с запятой, без пробелов, как на скриншоте ниже.
ПРИМЕЧАНИЕ. Вы можете получить список всех доступных переменных среды, выполнив команду set в командной строке (не setx и без каких-либо параметров). Однако, если вы только что создали или отредактировали переменную среды, необходимо закрыть и снова открыть командную строку, чтобы изменения отобразились.
Как редактировать переменную среды из PowerShell
Вы также можете создать или изменить значение существующей переменной среды из PowerShell . Команда PowerShell для этого:
- [Environment]::SetEnvironmentVariable(«variable_name»,»variable_value»,»User») , если вы хотите создать переменную среды пользователя.
- [Environment]::SetEnvironmentVariable(“variable_name”,”variable_value”,”Machine”) , если вы хотите создать системную переменную среды.
Например, мы набрали [Environment]::SetEnvironmentVariable(“TEST”,”digitalcitizen.life”,”User”) , чтобы создать переменную пользовательской среды под названием TEST со значением digitalcitizen.life. Чтобы изменить значение переменной позже, мы можем запустить ту же команду с другим значением. Как и setx в командной строке, эта команда переписывает значение указанной переменной каждый раз, когда вы ее запускаете.
Если вы хотите присвоить переменной несколько значений, введите их все в команду, разделяя их точками с запятой, как показано ниже.
ПРИМЕЧАНИЕ. В PowerShell вы можете получить список всех переменных среды, выполнив команду Get-ChildItem Env: . Однако, если вы только что создали или отредактировали переменную среды, вам необходимо закрыть и снова открыть PowerShell, чтобы изменения отобразились.
Как очистить значение переменной среды в Windows (из командной строки)
Если вы хотите удалить значение переменной среды (сохранив ее имя), вы не можете сделать это с помощью мыши и клавиатуры из окна переменных среды . Если вы выберете переменную и нажмете «Изменить», вы можете удалить значение, но не можете нажать «ОК», так как эта кнопка становится серой. Поэтому вы не можете сохранить свои изменения.
Однако вы можете очистить значение переменной среды с помощью командной строки. Чтобы отменить установку переменной среды из командной строки , введите команду setx variable_name «» . Например, мы набрали setx TEST «» , и эта переменная среды теперь имела пустое значение.
Далее давайте посмотрим, как удалить переменную среды.
Как удалить переменную среды в Windows
Если вы больше не хотите использовать конкретную переменную среды, выберите ее в окне «Переменные среды». Затем нажмите Удалить. Windows не запрашивает подтверждения этого действия. Поэтому, если вы передумали, необходимо нажать Отмена, чтобы удаление не применялось. Если вы хотите, чтобы удаление продолжилось, нажмите ОК .
Как удалить переменную среды из командной строки
Чтобы удалить переменную среды из командной строки , введите одну из этих двух команд в зависимости от типа этой переменной:
- REG delete «HKCU\Environment» /F /V «variable_name» , если это переменная среды пользователя, или
- REG delete «HKLM\SYSTEM\CurrentControlSet\Control\Session Manager\Environment» /F /V «variable_name» , если это системная переменная среды.
Например, мы набрали REG delete «HKCU\Environment» /F /V «TEST» , и наша переменная среды TEST исчезла из профиля пользователя.
Как удалить переменную среды из PowerShell
Чтобы отменить установку и удалить переменную среды из PowerShell , введите команду:
- [Environment]::SetEnvironmentVariable(«variable_name», $null ,»User») , если это переменная профиля пользователя, или
- [Environment]::SetEnvironmentVariable(«variable_name», $null ,»Machine») , если это общесистемная переменная.
Например, мы набрали [Environment]::SetEnvironmentVariable(«TEST», $null ,»User») , и эта переменная среды исчезла из профиля пользователя.
Командная строка для удаления переменной среды из конфигурации уровня ОС
В Windows есть команда setx :
Таким образом, вы можете установить переменную следующим образом:
И вы можете очистить значение следующим образом:
Однако переменная не удаляется. Он остается в реестре:
Итак, как бы вы на самом деле удалили переменную?
Чтобы удалить переменную из текущей среды (не навсегда):
Чтобы навсегда удалить переменную из среды пользователя (это место по умолчанию setx помещает ее):
Если переменная установлена в системной среде (например, если вы изначально установили ее с помощью setx /M ), администратор запустит:
Примечание. Команды REG , описанные выше, не влияют на существующие процессы (и некоторые новые процессы, которые разветвляются из существующих процессов), поэтому, если важно, чтобы изменение вступило в силу немедленно, вы может выйти из системы и снова войти или перезагрузиться.
Чтобы удалить переменную из текущего сеанса команды, не удаляя ее постоянно, используйте регулярную встроенную команду set – просто не помещайте ничего после знака равенства:
Чтобы подтвердить, запустите set без аргументов и проверьте текущую среду. Переменная должна отсутствовать в списке целиком.
Примечание: это приведет только к удалению переменной из текущей среды – она не будет сохраняться в реестре. Когда будет запущен новый командный процесс, переменная вернется.
Это было рассмотрено довольно много, но есть важная часть информации, которая отсутствует. Надеюсь, я смогу помочь разобраться, как это работает, и немного облегчить усталых путешественников. 🙂
Удалить из текущего процесса
Очевидно, что все знают, что вы просто делаете это, чтобы удалить переменную окружения из вашего текущего процесса:
Постоянное удаление
Существует два набора переменных среды: общесистемные и пользовательские.
Удалить переменную среды пользователя:
Удалить общесистемную переменную среды:
Применить значение без перезагрузки
Здесь волшебная информация, которая отсутствует! Вы задаетесь вопросом, почему после того, как вы сделаете это, когда вы запускаете новое командное окно, переменная окружения все еще там. Причина в том, что explorer.exe не обновил свою среду. Когда один процесс запускает другой, новый процесс наследует среду от процесса, который его запустил.
Есть два способа исправить это без перезагрузки. Самый грубый способ – убить процесс explorer.exe и запустить его снова. Вы можете сделать это из диспетчера задач. Однако я не рекомендую этот метод.
Другой способ – сообщить explorer.exe, что среда изменилась и что она должна перечитать ее. Это делается путем трансляции сообщения Windows (WM_SETTINGCHANGE). Это можно сделать с помощью простого скрипта PowerShell. Вы можете легко написать один, чтобы сделать это, но я нашел его в Настройки окна обновления после скриптовых изменений:
Резюме
Поэтому, чтобы удалить переменную среды пользователя с именем “FOO” и отразить это изменение в процессах, которые вы запускаете впоследствии, выполните следующие действия.
- Сохраните сценарий PowerShell в файл (назовем его updateenv.ps1).
- Сделайте это из командной строки: reg delete “HKCU\Environment”/v FOO/f
- Запустите updateenv.ps1.
- Закройте и снова откройте командную строку, и вы увидите, что переменная среды больше не определяется.
Обратите внимание, что вам, вероятно, придется обновить настройки PowerShell, чтобы позволить вам запускать этот сценарий, но я оставлю это как упражнение Google-fu для вас.
SET бесполезен для изменений в основной среде.
К вашему сведению: системные переменные находятся в HKLM\SYSTEM\CurrentControlSet\Control\Session Manager\Environment (намного дольше, чем пользовательские переменные).
Поэтому полная команда для системной переменной с именем FOOBAR выглядит так:
(обратите внимание на кавычки, необходимые для обработки пробела.)
Очень плохо, что команда setx не поддерживает синтаксис удаления. 🙁
PS: Используйте ответственно – если вы убьете свою переменную пути, не вините меня!
Команда в ответе DougWare не сработала, но это сработало:
Ярлык HKLM можно использовать для HKEY_LOCAL_MACHINE .
Из PowerShell вы можете использовать метод .NET [System.Environment]::SetEnvironmentVariable() :
Чтобы удалить переменную среды пользователя с именем FOO :
Note that [TG43] is used to better signal the intent to remove the variable, though technically it is effectively the same as passing [TG44] in this case.
Чтобы удалить системную (машинную) переменную среды с именем FOO – требуется повышение прав (необходимо запускать с правами администратора):
Помимо более быстрого выполнения, преимущество по сравнению с методом reg.exe -based заключается в том, что другие приложения уведомляются об изменении через сообщение WM_SETTINGCHANGE (хотя не все приложения слушают на это сообщение).
просто заставляет значение FOOBAR быть пустой строкой. (Хотя это показывается командой set с “”, поэтому, возможно, двойные кавычки – это строка.)
а затем FOOBAR больше не был указан в команде set. (Выход не требуется.)
Windows 7 32-разрядная, используя командную строку, не администратор это то, что я использовал. (Не cmd или Windows + R , которые могут отличаться.)
Кстати, я не видел переменную, которую я создал где-то в реестре после того, как я ее создал. Я использую RegEdit не как администратор.
Вы также можете создать небольшой VBScript скрипт:
Тогда назовите это как %windir%\System32\cscript.exe //Nologo «script_name.vbs» FOOBAR .
Недостаток в том, что вам нужен дополнительный скрипт, но он не требует перезагрузки.