РАЗДЕЛ 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реда (поставщик)