РАЗДЕЛ
about_Environment_Variables
КРАТКОЕ ОПИСАНИЕ
Описывает, как обращаться к переменным среды Windows из Windows
PowerShell.
ПОЛНОЕ ОПИСАНИЕ
Переменные среды хранят сведения о среде операционной системы.
Эти сведения включают в себя такие данные, как путь операционной
системы, количество процессоров, используемых операционной
системой, а также местонахождение временных папок.
В переменных среды хранятся данные, используемые операционной
системой и другими программами. Например, переменная среды WINDIR
содержит местоположение каталога установки Windows. Программы
могут запрашивать значение этой переменной, чтобы определить,
где находятся файлы операционной системы Windows.
Windows PowerShell позволяет просматривать и изменять значения
переменных среды Windows, в том числе переменных, заданных в
реестре и заданных для конкретного сеанса. Поставщик среды
Windows PowerShell упрощает процесс просмотра и изменения
переменных среды.
В отличие от переменных других типов в Windows PowerShell,
переменные среды и их значения наследуются в дочерних сеансах,
например в локальных фоновых заданиях и сеансах, в которых
выполняются модули. Поэтому переменные среды хорошо подходят для
хранения значений, которые требуются как в родительских, так и в
дочерних сеансах.
Поставщик среды Windows PowerShell
Поставщик среды Windows PowerShell позволяет обращаться к
переменным среды Windows из Windows PowerShell на диске Windows
PowerShell (диск Env:). Этот диск очень похож на диски файловой
системы. Чтобы перейти к диску Env:, введите:
set-location env:
Затем, чтобы отобразить содержимое диска Env:, введите:
get-childitem
Переменные среды на диске Env: можно просматривать с любого
другого диска Windows PowerShell; кроме того, можно войти на
диск Env:, чтобы просматривать и изменять переменные среды.
Объекты переменных среды
В Windows PowerShell каждая переменная среды представляется
объектом, который является экземпляром класса System.Collections.
DictionaryEntry.
В каждом объекте DictionaryEntry имя переменной среды является
ключом словаря. Значение переменной является значением словаря.
Для отображения переменной среды в Windows PowerShell
необходимо получить объект, представляющий переменную, а затем
отобразить значения свойств объекта. При изменении переменной
среды в Windows PowerShell следует использовать методы,
связанные с объектом DictionaryEntry.
Для отображения свойств и методов объекта, представляющего
переменную среды в Windows PowerShell, следует использовать
командлет Get-Member. Например, для отображения методов и
свойств всех объектов на диске Env: введите:
get-item -path env:* | get-member
Отображение переменных среды
Для отображения и изменения значений переменных среды, можно
использовать командлеты, содержащие слово Item (командлеты
Item). Поскольку у переменных среды нет дочерних элементов,
выходные данные командлетов Get-Item и Get-ChildItem одинаковы.
При обращении к переменной среды введите имя диска Env: и имя
переменной. Например, для отображения значения переменной среды
COMPUTERNAME введите:
get-childitem env:computername
Для отображения значений всех переменных среды введите:
get-childitem env:
По умолчанию в Windows PowerShell перемененные отображаются в
том порядке, в котором они извлекаются. Чтобы отсортировать
список переменных среды по имени переменной, необходимо
передать выходные данные команды Get-ChildItem по конвейеру
командлету Sort-Object. Например, из любого диска Windows
PowerShell введите:
get-childitem env: | sort name
Кроме того, к диску Env: можно перейти с помощью командлета
Set-Location:
set-location env:
Если диск Env: уже открыт, имя диска Env: в пути можно не
указывать. Например, для отображения всех переменных среды введите:
get-childitem
Чтобы отобразить значение переменной COMPUTERNAME, находясь на
диске Env:, введите:
get-childitem computername
Отображать и изменять значения переменных среды можно также без
использования командлета при помощи синтаксического анализатора
выражений в Windows PowerShell. Для отображения значения
переменной среды используется следующий синтаксис:
$env:<имя_переменной>
Например, чтобы отобразить значение переменной среды WINDIR,
введите в командную строку Windows PowerShell следующую команду:
$env:windir
В этом выражении знак доллара ($) обозначает переменную, а имя
диска указывает, что используется переменная среды.
Изменение переменных среды
Чтобы сохранить изменение переменной среды, необходимо
воспользоваться компонентом "Система" в "Панели управления" (вкладка
"Дополнительно" или пункт "Дополнительные параметры системы") и
сохранить изменение в реестре.
При изменении переменных среды в Windows PowerShell эти
изменения распространяются только на текущий сеанс. Это похоже
на применение команды Set в средах на базе Windows и команды
Setenv в средах на базе UNIX.
Необходимо также иметь разрешение на изменение значений
переменных. При попытке изменения значения без необходимого
разрешения команду выполнить не удается, и в Windows PowerShell
появляется сообщение об ошибке.
Значения переменных можно изменять без применения командлета,
используя следующий синтаксис:
$env:<имя_переменной> = "<новое_значение>"
Например, чтобы добавить к переменной среды Path фрагмент
";c:\temp", следует воспользоваться следующим выражением:
$env:path = $env:path + ";c:\temp"
Для изменения значений переменных среды могут использоваться
также командлеты Item, такие как Set-Item, Remove-Item и
Copy-Item. Например, чтобы добавить к переменной среды Path
фрагмент ";c:\temp" с помощью командлета Set-Item, следует
воспользоваться следующим выражением:
set-item -path env:path -value ($env:path + ";c:\temp")
В этой команде значение, заключенное в круглые скобки,
интерпретируется как единое выражение.
Сохранение изменений переменных среды
Чтобы создать или изменить значение переменной среды во всех
сеансах Windows PowerShell, необходимо добавить изменение в
профиль Windows PowerShell.
Например, чтобы добавить каталог C:\Temp в переменную среды
Path во всех сеансах Windows PowerShell, необходимо добавить в
профиль Windows PowerShell следующую команду.
$env:path = $env:path + ";c:\temp"
Чтобы добавить команду в существующий профиль, например в профиль
CurrentUser,AllHosts, введите:
add-content -path $profile.CurrentUserAllHosts -value '$env:path = $env:path + ";c:\temp"'
Переменные среды, в которых хранятся параметры
Компоненты Windows PowerShell могут использовать переменные
среды для хранения пользовательских параметров. Эти переменные
ведут себя как привилегированные переменные, но наследуются
дочерними сеансами тех сеансов, в которых они были созданы.
Дополнительные сведения о привилегированных переменных см.
в разделе about_preference_variables.
Переменные среды, в которых хранятся параметры, включают:
PSModulePath
Хранит пути к каталогам модулей по умолчанию. Если полный
путь к модулю не задан, среда Windows PowerShell ищет
модули в указанных каталогах.
По умолчанию переменная $env:PSModulePath имеет следующее
значение:
$home\Documents\WindowsPowerShell\Modules; $pshome\Modules
Среда Windows PowerShell устанавливает значение
"$pshome\Modules" в реестре. Значение
"$home\Documents\WindowsPowerShell\Modules"
устанавливается при каждом запуске Windows PowerShell.
Кроме того, программы установки, которые устанавливают
модули в другие каталоги, например в каталог Program
Files, добавляют соответствующие местоположения в
значение переменной PSModulePath.
Чтобы изменить каталоги модулей по умолчанию, измените
значение переменной среды PSModulePath.
Например, чтобы добавить в значение переменной среды
PSModulePath каталог "C:\ps-test\Modules", введите:
$env:PSModulePath = $env:PSModulePath + ";c:\ps-test\Modules"
Точка с запятой (;) в этой команде отделяет новый путь от
предыдущего пути в списке.
Изменения распространяются только на текущий сеанс, если
только не добавляется команда, которая изменяет значение
в профиле, или не используется элемент "Система" в
"Панели управления", с помощью которого значение
переменной среды PSModulePath изменяется в реестре.
Дополнительные сведения см. в разделе about_Modules.
СМ. ТАКЖЕ
Cреда (поставщик)