Переменные
Категории переменных в PowerShell
PowerShell определяет несколько категорий переменных:
- статические переменные
- экземплярные переменные
- элементы массива
- пары ключ/значение хэш-таблицы
- параметры
- обычные переменные
- переменные на provider drives
Ниже приведено описание каждой категории с примерами.
Статические переменные
Это переменные .NET-классов, доступные через имя класса и статическое свойство/поле.
Пример:
[Math]::PI # 3.14159265358979 [DateTime]::Now # текущая дата и время
Экземплярные переменные
Это свойства объектов (экземпляров классов).
Пример:
$date = Get-Date $date.Month # 8 (если август) $date.Year # 2025
Элементы массива
Каждый элемент массива можно рассматривать как отдельную переменную, к которой обращаются по индексу.
Пример:
$values = 10, 20, 30, 40 $values[2] # 30
Hashtable key/value pairs
Ключи в хэш-таблице можно рассматривать как «имена переменных», а значения — как их содержимое.
Пример:
$h1 = @{ FirstName = 'Pavel'; LastName = 'Nagaev' } $h1.FirstName # Pavel $h1['FirstName'] # Pavel
Параметры
Переменные, которые передаются в функции или скрипты как входные значения.
Пример:
function Get-CircleArea { param($radius, $pi = [Math]::PI) return $pi * $radius * $radius } Get-CircleArea -radius 5
Обычные переменные
Наиболее распространённые переменные, создаваемые пользователем.
Пример:
$radius = 10 $circumference = 2 * [Math]::PI * $radius $date = Get-Date $month = $date.Month
Переменные на provider drives
PowerShell поддерживает поставщиков (providers), которые позволяют обращаться к различным хранилищам как к файловой системе. В них также существуют переменные.
Примеры:
$Alias:A # алиас "A" $Env:Path # переменная окружения PATH ${E:output.txt} # переменная в диске E: $Function:GetDate # функция $Variable:pi # обычная переменная $pi через полный квалификатор
Сводная таблица
Категория | Пример | Пояснение |
---|---|---|
Статическая переменная | `[Math]::PI` | Статическое свойство класса .NET |
Экземплярная переменная | `$date.Month` | Свойство объекта |
Элемент массива | `$values[2]` | Элемент массива по индексу |
Hashtable key/value | `$h1.FirstName` / `$h1['FirstName']` | Доступ к значению по ключу |
Параметры | `$p1`, `$p2` | Аргументы функции или скрипта |
Обычные переменные | `$radius`, `$date`, `$h1` | Переменные пользователя |
Provider drive variables | `$Env:Path`, `$Alias:A`, `$Function:F`, `$Variable:v` | Переменные из провайдеров |
Автоматические переменные
Автоматические переменные определяются как переменные, которые сохраняют информацию о состоянии для PowerShell. Эти переменные включают сведения о клиенте и системе, переменные по умолчанию и времени выполнения, а также настройки PowerShell. Эти переменные могут быть разработаны и обработаны Windows PowerShell.
$ | Эта переменная включает в себя последний токен, доступный в последней строке, полученной сеансом. |
$? | Эта переменная может содержать статус завершения последней операции. Если последняя операция прошла успешно, ее значение равно TRUE, а если неудачно - FALSE. |
$^ | Может содержать первый токен предыдущей команды |
$$ | Содержит последний токен последней запущенной команды |
$Args | содержит коллекцию необъявленных параметров или значений параметров. Они передаются в скрипт, блок скрипта или функцию. При создании функции вы можете отобразить параметры, используя ключевое слово param или включив список параметров, разделенных запятыми, в круглые скобки сразу после имени функции. |
$Error | Эта переменная содержит массив объектов ошибок, которые представляют последние ошибки. Текущая ошибка - это первый объект ошибки в массиве ($Error[0]). |
$ForEach | Эта переменная содержит перечислитель (а не результирующие значения) цикла ForEach. Вы можете использовать свойства и процессы перечислителей на значении переменной $ForEach. Эта переменная живет только во время работы цикла ForEach; после завершения цикла она удаляется |
$Home | Эта переменная содержит полный путь к домашней директории клиента. Эта переменная является аналогом переменных окружения %homedrive%%homepath%, обычно известных как C:\Users<UserName> |
$OFS | $OFS - это замечательная переменная, которая сохраняет строку (серию символов), которую вы хотите использовать в качестве разделителя выходных полей. Используйте эту переменную при преобразовании массива в строку. По умолчанию значение $OFS равно " ", но вы можете изменить значение $OFS в своей сессии, просто набрав $OFS="<значение>". Если вы ожидаете, что в вашем модуле, скрипте или конфигурационном выводе по умолчанию будет стоять значение " ", убедитесь, что значение $OFS по умолчанию не было изменено нигде в вашем коде. |
$PSVersionTable | Содержит хэш-таблицу, доступную только для чтения, в которой отображаются сведения о версии PowerShell |
$args | Содержит массив значений для необъявленных параметров, передаваемых в функции, скрипт или блок скрипта. При создании функции вы можете объявить параметры с помощью ключевого слова param или добавив разделенный запятыми список параметров в круглых скобках после имени функции. |
$env:TEMP | Путь к временной директории |
$ConsoleFileName |
Проверка существования переменной
if (!(test-path variable:MyList)){ $MyList=@() }#> if ($MyList.count -eq 0){ $MyList = Get-service }