Оболочка Windows PowerShell работает с объектами. Windows PowerShell позволяет создавать переменные — по сути, именованные объекты, — чтобы сохранять в них данные вывода для последующего использования. Пользователям, привыкшим работать с переменными в других оболочках, следует помнить, что в Windows PowerShell переменными является не текст, а объекты.

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

Создание переменной

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

PS> $loc
PS>

Эта команда не вернет никакой результат, потому что переменная $loc не имеет значения. Создать переменную и присвоить ей какое-либо значение можно одним действием. Windows PowerShell создает переменную, только если она еще не существует; в противном случае указанное значение присваивается существующей переменной. Для сохранения текущего местоположения в переменной $loc введите:

$loc = Get-Location

После ввода этой команды ее вывод не отображается, потому что он отправляется в переменную $loc. Отображение вывода в оболочке Windows PowerShell представляет собой побочный эффект отправки данных: если не указано иное направление отправки, то данные всегда отправляются на экран. Чтобы вывести текущее местоположение, нужно ввести имя переменной "$loc":

PS> $loc

Path
----
C:\temp

Для отображения сведений о содержимом переменных можно воспользоваться командлетом Get-Member. Передача переменной $loc по конвейеру командлету Get-Member показывает, что это объект класса PathInfo, так же как и вывод командлета Get-Location.

PS> $loc | Get-Member -MemberType Property


   TypeName: System.Management.Automation.PathInfo

Name         MemberType Definition
----         ---------- ----------
Drive        Property   System.Management.Automation.PSDriveInfo Drive {get;}
Path         Property   System.String Path {get;}
Provider     Property   System.Management.Automation.ProviderInfo Provider {...
ProviderPath Property   System.String ProviderPath {get;}

Управление переменными

Для работы с переменными в оболочке Windows PowerShell имеется несколько команд. Полный список команд в удобной для чтения форме можно вывести следующим образом:

Get-Command -Noun Variable | Format-Table -Property Name,Definition -AutoSize -Wrap

Кроме переменных, создаваемых пользователем в текущем сеансе Windows PowerShell, существует несколько системных переменных. С помощью командлета Remove-Variable можно очистить все переменные, не управляемые оболочкой Windows PowerShell. Введите следующую команду, чтобы очистить все переменные:

Remove-Variable -Name * -Force -ErrorAction SilentlyContinue

Это приведет к запросу подтверждения, как показано ниже:

Confirm
Are you sure you want to perform this action?
Performing operation "Remove Variable" on Target "Name: Error".
[Y] Yes  [A] Yes to All  [N] No  [L] No to All  [S] Suspend  [?] Help
(default is "Y"):A

Если после этого запустить командлет Get-Variable, будут показаны оставшиеся переменные Windows PowerShell. Поскольку в Windows PowerShell имеется еще и переменный диск, все переменные Windows PowerShell можно вывести командой:

Get-ChildItem variable:

Использование переменных Cmd.exe

Оболочка Windows PowerShell не является командной оболочкой Windows, запускаемой файлом Cmd.exe, но несмотря на это Windows PowerShell выполняется в среде командной оболочки, и может работать со всеми переменными, доступными в любой среде операционной системы Windows. Такие переменные передаются через диск с именем env:. Просмотреть переменные можно с помощью команды:

Get-ChildItem env:

Несмотря на то что стандартные командлеты не предназначены для работы с переменными диска env:, эти переменные могут использоваться при указании префикса env:. Например, чтобы показать корневой каталог операционной системы, в Windows PowerShell можно использовать переменную %SystemRoot% командной оболочки:

PS> $env:SystemRoot
C:\WINDOWS

Создавать и изменять переменные среды можно также в оболочке Windows PowerShell. Переменные среды, доступные в оболочке Windows PowerShell, соответствуют обычным правилам для переменных любой другой среды Windows.




Содержание