Переменные

Категории переменных в PowerShell

5.2 Variable categories

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

Ключи в хэш-таблице можно рассматривать как «имена переменных», а значения — как их содержимое.

Пример:

$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

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` Переменные из провайдеров

about_Automatic_Variables

Автоматические переменные определяются как переменные, которые сохраняют информацию о состоянии для 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 
}