Поделиться через


4. Типы

Редакционная заметка

Важный

спецификация языка Windows PowerShell 3. 0 была опубликована в декабре 2012 года и основана на Windows PowerShell 3.0. Эта спецификация не отражает текущее состояние PowerShell. Нет плана обновить эту документацию, чтобы отразить текущее состояние. Эта документация представлена здесь для получения исторической справки.

Документ спецификации доступен в формате Microsoft Word из Центра загрузки Майкрософт: https://www.microsoft.com/download/details.aspx?id=36389. Этот документ Word был преобразован для представления здесь на Microsoft Learn. Во время преобразования некоторые редакционные изменения были внесены в соответствии с форматированием платформы Docs. Исправлены некоторые опечатки и незначительные ошибки.

В PowerShell каждое значение имеет тип, и эти типы делятся на две основные категории: типы значений и ссылочные типы. Рассмотрим тип int, типичный для типов значений. Значение типа int полностью автономно; все биты, необходимые для представления этого значения, хранятся в этом значении, и каждый битовый шаблон в этом значении представляет допустимое значение для его типа. Теперь рассмотрим тип массива int[], который является типичным для ссылочных типов. Так называемое значение типа массива может содержать ссылку на объект, который фактически содержит элементы массива, или ссылку null, значение которого $null. Важное различие между двумя категориями типов лучше всего демонстрируется различиями в их семантике во время назначения. Например

$i = 100 # $i designates an int value 100
$j = $i # $j designates an int value 100, which is a copy

$a = 10,20,30 # $a designates an object[], Length 3, value 10,20,30
$b = $a # $b designates exactly the same array as does $a, not a copy
$a[1] = 50 # element 1 (which has a value type) is changed from 20 to 50
$b[1] # $b refers to the same array as $a, so $b[1] is 50

Как мы видим, присваивание значения ссылочного типа включает в себя неглубокое копирование, то есть копию ссылки на объект, а не его фактическое значение. В отличие от этого, для глубокого копирования требуется создание копии объекта.

Тип числовых — это тип, который позволяет представлять целые или дробные значения, а также поддерживает арифметические операции с этими значениями. Набор числовых типов включает целочисленное число (§4.2.3) и реальное число (§4.2.4) но не включает bool (§4.2.1) или char (§4.2.2). Реализация может предоставлять другие числовые типы (например, подписанные байты, неподписанные целые числа и целые числа других размеров).

коллекция — это набор одного или нескольких связанных элементов, которые необязательно должны иметь одинаковый тип. Примерами типов коллекций являются массивы, стеки, очереди, списки и хэш-таблицы. Программа может перечислить (или итерировать) над элементами коллекции, получая доступ к каждому элементу поочерёдно. Это можно сделать с помощью инструкции foreach (§8.4.4) и командлета ForEach-Object . Тип объекта, представляющего перечислитель, описан в §4.5.16.

В этой главе есть таблицы, которые перечисляют доступные члены для заданного типа. Для методов типа используется следующая форма: returnType/argumentTypeList. Если список типов аргументов слишком длинен, чтобы поместиться в этом столбце, он отображается в столбце назначения.

Другие целые типы: SByte, Int16, UInt16, UInt32и UInt64, все в пространстве имен System.

Многие классы коллекций определяются как часть пространства имен System.Collections или System.Collections.Generic. Большинство классов коллекций реализуют интерфейсы ICollection, IComparer, IEnumerable, IList, IDictionaryи IDictionaryEnumerator и их универсальные эквиваленты.

Также можно использовать сокращенные имена для некоторых типов. Дополнительные сведения см. в о типах ускорителей.

4.1 Специальные типы

4.1.1 Тип void

Этот тип не может быть создан. Он предоставляет способ явного отказа от значения с помощью оператора приведения (§7.2.9).

4.1.2 Тип NULL

тип null имеет один экземпляр, автоматическую переменную $null (§2.3.2.2), также называемую значением NULL. Это значение предоставляет средства для выражения "ничего" в контексте ссылок. Характеристики этого типа не определены.

4.1.3 Тип объекта

Каждый тип в PowerShell, за исключением типа NULL (§4.1.2) является производным напрямую или косвенно от объекта типа, поэтому объект является конечным базовым типом всех типов, отличных от NULL. Переменная, ограниченная (§5.3) по типу объекта, по сути не ограничена вообще, так как она может содержать значение любого типа.

4.2 Типы значений

4.2.1 Булевый

Логический тип — bool. Существует только два значения этого типа, False и True, представленные автоматическими переменными $false и $trueсоответственно (§2.3.2.2).

В PowerShell bool сопоставляется с System.Boolean.

4.2.2 Символ

Символьное значение имеет тип char, который способен хранить любую 16-битную кодовую точку Юникода в кодировке UTF-16.

Тип char включает следующие доступные члены:

участник Тип участника типа назначение
Максимальное значение Статичное свойство (только для чтения) символ Наибольшее возможное значение типа char
Минимальное значение Статичное свойство (только для чтения) символ Наименьшее возможное значение типа char
IsControl Статический метод bool/char Проверяет, является ли символ элементом управления
IsDigit Статический метод bool/char Проверяет, является ли символ десятичным числом
IsLetter Статический метод bool/char Проверяет, является ли символ буквой алфавита
IsLetterOrDigit (является ли буквой или цифрой) Статический метод bool/char ** Проверяет, является ли символ десятичной цифрой или буквой
IsLower Статический метод bool/char Проверяет, является ли символ строчной буквой
Препинание IsPunctuation Статический метод bool/char Проверяет, является ли символ знаком препинания
IsUpper Статический метод bool/char Проверяет, является ли символ буквой в алфавитном регистре
IsWhiteSpace Статический метод bool/char Проверяет, является ли символ пробельным символом.
ToLower Статический метод символ/строка Преобразует символ в нижний регистр
ToUpper Статический метод символ/строка Преобразует символ в верхний регистр

Windows PowerShell: char сопоставляется с System.Char.

4.2.3 Целое число

Существуют два типа целых чисел со знаком, оба используют представление дополнения до двух для отрицательных значений.

  • Тип int, который использует 32 бита, задавая диапазон от -2147483648 до +2147483647, включительно.
  • Тип long, который использует 64 бита, предоставляя ему диапазон -9223372036854775808 до +9223372036854775807, включительно.

Тип int содержит следующие доступные элементы:

участник Тип участника типа назначение
Максимальное значение Статичное свойство (только для чтения) int Максимально возможное значение типа int
MinValue Статичное свойство (только для чтения) int Наименьшее возможное значение типа int

Тип long содержит следующие доступные элементы:

участник Тип участника типа назначение
Максимальное значение Статичное свойство (только для чтения) длинный Максимально возможное значение типа long
Минимальное значение Статичное свойство (только для чтения) длинный Наименьшее возможное значение типа long

Существует один целочисленный тип без знака:

  • Тип byte, который использует 8 битов, предоставляя ему диапазон от 0 до 255 включительно.

Тип byte имеет следующие доступные элементы:

участник Тип участника типа назначение
Максимальное значение Статичное свойство (только для чтения) байт Наибольшее возможное значение байта типа
MinValue Статичное свойство (только для чтения) байт Наименьшее возможное значение байта типа

В PowerShell byte, intи long соответствуют System.Byte, System.Int32и System.Int64соответственно.

4.2.4 Реальное число

4.2.4.1 float и double

Существует два реальных типа (или с плавающей запятой):

  • Тип float использует 32-битное представление с одинарной точностью IEEE.
  • Тип double использует 64-разрядное представление IEEE с двойной точностью.

Имя третьего типа, single, является синонимом для типа float; float используется в этой спецификации.

Хотя размер и представление типов float и double определяются этой спецификацией, реализация может использовать расширенную точность для промежуточных результатов.

Тип float содержит следующие доступные элементы:

участник Тип участника типа назначение
Максимальное значение Статичное свойство (только для чтения) плавать Наибольшее возможное значение типа float
MinValue Статичное свойство (только для чтения) плавать Наименьшее возможное значение типа float
NaN Статичное свойство (только для чтения) плавать Константное значение Not-a-Number
Отрицательная бесконечность Статичное свойство (только для чтения) плавать Константное значение отрицательной бесконечности
PositiveInfinity Статичное свойство (только для чтения) плавать Константное значение положительной бесконечности

Тип double имеет следующие доступные элементы:

участник Тип участника типа назначение
Максимальное значение Статичное свойство (только для чтения) двойной Максимально возможное значение типа double
Минимальное значение Статичное свойство (только для чтения) двойной Наименьшее возможное значение типа double
NaN Статичное свойство (только для чтения) двойной Константное значение Not-a-Number
Отрицательная бесконечность Статичное свойство (только для чтения) двойной Константное значение отрицательной бесконечности
PositiveInfinity Статичное свойство (только для чтения) двойной Константное значение положительной бесконечности

В PowerShell float и double соответствуют System.Single и System.Doubleсоответственно.

4.2.4.2 десятичная система

Тип Decimal использует 128-разрядное представление. По крайней мере, он должен поддерживать масштаб s таким образом, что 0 <= s<= не менее чем 28, а диапазон значений от -79228162514264337593543950335 до 79228162514264337593543950335. Фактическое представление десятичного числа определяется реализацией.

Десятичный тип имеет следующие доступные элементы:

участник Тип участника типа назначение
Максимальное значение Статичное свойство (только для чтения) десятичный Максимально возможное значение десятичного типа
Минимальное значение Статичное свойство (только для чтения) десятичный Наименьшее возможное значение десятичного типа

Заметка

Десятичные реальные числа имеют характеристику, называемую масштабирования, которая представляет число цифр справа от десятичной точки. Например, значение 2.340 имеет разрядность 3, где конечные нули являются существенными. Если два десятичных реальных числа добавляются или вычитаются, масштаб результата больше двух масштабов. Например, 1.0 + 2.000 — 3.000, а 5.0 – 2.00 — 3.00. При умножении двух десятичных реальных чисел масштаб результата — это сумма двух масштабов. Например, 1.0 * 2.000 — 2.0000. При делении двух десятичных реальных чисел масштаб результата является масштабом первого меньшего числа второго. Например, 4.0000/2.000 — 2.00. Однако масштабирование не может быть меньше, чем необходимо для сохранения правильного результата. Например, 3.000/2.000, 3.00/2.000, 3.0/2.000 и 3/2 все 1.5.

В PowerShell decimal сопоставляется с System.Decimal. Представление десятичного числа выглядит следующим образом:

  • При рассмотрении массива из четырех int значений он содержит следующие элементы:
    • Индекс 0 (биты 0-31) содержит младшие 32 бита коэффициента десятичного числа.
    • Индекс 1 (биты 32-63) содержит средние 32 бита коэффициента десятичного числа.
    • Индекс 2 (биты 64-95) содержит старшие 32 бита коэффициента десятичного числа.
    • Индекс 3 (биты 96-127) содержит бит знака и масштаб, как показано ниже.
      • биты 0--15 равны нулю
      • bits 16-23 содержит масштаб в виде значения 0--28
      • биты 24-30 равны нулю
      • бит 31 — это знак (0 для положительных, 1 для отрицательных)

4.2.5 Тип коммутатора

Этот тип используется для ограничения типа параметра в команде (§8.10.5). Если аргумент с соответствующим именем параметра присутствует, параметр тестируется на $true; в противном случае он тестируется на $false.

В PowerShell switch сопоставляется с System.Management.Automation.SwitchParameter.

4.2.6 Типы перечисления

Тип перечисления — это тот, который определяет набор именованных констант, представляющий все возможные значения, которые можно назначить объекту этого типа перечисления. В некоторых случаях набор значений такой, что одновременно может быть представлено только одно значение. В других случаях набор значений — это разные полномочия двух, и с помощью оператора -bor (§7.8.5), в одном объекте можно закодировать несколько значений.

Среда PowerShell предоставляет ряд типов перечислений, как описано в следующих разделах.

Тип 4.2.6.1 Действие-Предпочтение

Этот тип, определенный реализацией, имеет следующие члены с взаимоисключающими значениями:

участник Тип участника назначение
Продолжать Константа перечисления Среда выполнения PowerShell продолжит обработку и уведомит пользователя о том, что произошло действие.
Запросить Константа перечисления Среда выполнения PowerShell остановит обработку и обратится к пользователю за указаниями о том, как следует действовать.
Продолжать бесшумно Константа перечисления Среда выполнения PowerShell продолжит обработку без уведомления пользователя о том, что произошло действие.
Остановка Константа перечисления Среда выполнения PowerShell остановит обработку при возникновении действия.

В PowerShell этот тип System.Management.Automation.ActionPreference.

Тип Confirm-Impact 4.2.6.2

Этот тип, определенный реализацией, имеет следующие члены с взаимоисключающими значениями:

участник Тип участника назначение
Высокий Константа перечисления Действие, выполняемое, имеет высокий риск потери данных, таких как переформатирование жесткого диска.
Низкий Константа перечисления Выполненное действие имеет низкий риск потери данных.
Средний Константа перечисления Действие, выполняемое, имеет средний риск потери данных.
Никакой Константа перечисления Не подтверждать какие-либо действия (подавлять все запросы на подтверждение).

В PowerShell этот тип System.Management.Automation.ConfirmImpact.

Тип 4.2.6.3 атрибуты файла

Этот тип, определенный реализацией, имеет следующие доступные элементы, которые можно объединить:

участник Тип участника назначение
Архив Константа перечисления Состояние архива файла. Приложения используют этот атрибут, чтобы пометить файлы для резервного копирования или удаления.
Сжатый Константа перечисления Файл сжимается.
Устройство Зарезервировано для дальнейшего использования.
Каталог Константа перечисления Файл является каталогом.
Зашифрованные Константа перечисления Файл или каталог шифруются. Для файла это означает, что все данные в файле шифруются. Для каталога это означает, что шифрование по умолчанию для только что созданных файлов и каталогов.
Скрытый Константа перечисления Файл скрыт и поэтому не включается в обычный список каталогов.
Нормальный Константа перечисления Файл является нормальным и не имеет других атрибутов. Этот атрибут действителен только в том случае, если используется только один.
Не индексируется содержимое Константа перечисления Файл не будет индексирован службой индексирования содержимого операционной системы.
Офлайн Константа перечисления Файл находится в автономном режиме. Данные файла не сразу доступны.
ReadOnly Константа перечисления Файл доступен только для чтения.
ReparsePoint Константа перечисления Файл содержит точку повторного анализа, которая является блоком определяемых пользователем данных, связанных с файлом или каталогом.
Разреженный файл Константа перечисления Файл является разреженным файлом. Разреженные файлы обычно являются большими файлами, данные которых в основном равны нулю.
Система Константа перечисления Файл является системным файлом. Файл является частью операционной системы или используется исключительно операционной системой.
Временный Константа перечисления Файл является временным. Файловые системы пытаются сохранить все данные в памяти для быстрого доступа, а не сбрасывать данные обратно в массовое хранилище. Временный файл следует удалить приложением, как только он больше не нужен.

В PowerShell этот тип — System.IO.FileAttributes с атрибутом FlagsAttribute.

4.2.6.4 Регулярный типExpression-Option

Этот тип, определенный реализацией, имеет следующие доступные элементы, которые можно объединить:

участник Тип участника назначение
IgnoreCase Константа перечисления Указывает, что сопоставление не учитывает регистр.
Нет Константа перечисления Указывает, что параметры не заданы.

Реализация может предоставлять другие значения.

В PowerShell этот тип System.Text.RegularExpressions.RegexOptions с атрибутом FlagsAttribute. Определены следующие дополнительные значения: Compiled, CultureInvariant, ECMAScript, ExplicitCapture, IgnorePatternWhitespace, Multiline, RightToLeft, Singleline.

4.3 Ссылочные типы

4.3.1 Строки

Строковое значение имеет тип string и является неизменяемой последовательностью из нуля или более символов типа char, каждый из которых содержит 16-битный кодовый пункт Юникода, закодированный в формате UTF-16.

Тип строк имеет следующие доступные члены:

участник Тип участника типа назначение
Длина Свойство экземпляра int (только для чтения) Возвращает количество символов в строке
ToLower Метод экземпляра струна Создает новую строку, содержащую эквивалент нижнего регистра.
ToUpper Метод экземпляра струна Создает новую строку, содержащую эквивалент верхнего регистра

В PowerShell string сопоставляется с System.String.

4.3.2 Массивы

Все типы массивов являются производными от типа array. Этот тип имеет следующие доступные элементы:

участник Тип участника типа назначение
Длина Свойство экземпляра (только для чтения) int Количество элементов в массиве
Ранг Свойство экземпляра (только для чтения) int Количество измерений в массиве
Копировать Статический метод пусто/см. в столбце "Назначение"

Копирует диапазон элементов из одного массива в другой. Существуют четыре версии, в которых источник является исходным массивом, целевой является целевым массивом, число — это количество элементов для копирования, а sourceIndex и целевойИндекс являются начальными позициями в соответствующих массивах.

Copy(source, назначение, int count)
Copy(source, место назначения, длинный счетчик)
Copy(source, sourceIndex, destination, destinationIndex, int count)
Copy(source, sourceIndex, назначение, индекс назначения, long количество)

GetLength Метод экземпляра (только для чтения) int/нет

Количество элементов в заданном измерении

GetLength(int измерение)

Дополнительные сведения о массивах см. в §9.

В PowerShell array сопоставляется с System.Array.

4.3.3 Хэштеблы

Тип Hashtable содержит следующие доступные элементы:

участник Тип участника типа назначение
Количество Свойство экземпляра int Возвращает количество пар "ключ-значение" в хэш-таблице
Ключи Свойство экземпляра Зависит от реализации Возвращает коллекцию всех ключей
Значения Свойство экземпляра Зависит от реализации Получает коллекцию всех значений
Убирать Метод экземпляра пустой/нет Удаляет указанный ключ или значение

Дополнительные сведения о хеш-таблицах см. в §10.

В PowerShell Hashtable сопоставляется с System.Collections.Hashtable. Hashtable элементы хранятся в объекте типа DictionaryEntry, а коллекции, возвращаемые ключами и значениями, имеют тип ICollection.

4.3.4 Тип XML

Тип XML реализует модель объекта документа W3C (DOM) уровня 1 Core и уровня 2 Core DOM. DOM — это древовидное представление XML-документа в памяти (кэше), которое позволяет навигацию и редактирование этого документа. Этот тип поддерживает оператор подстрока [] (§7.1.4.4).

В PowerShell xml сопоставляется с System.Xml.XmlDocument.

4.3.5 Тип regex

Тип regex предоставляет механизм для поддержки обработки регулярных выражений. Он используется для ограничения типа параметра (§5.3), соответствующий аргумент которого может содержать регулярное выражение.

В PowerShell regex сопоставляется с System.Text.RegularExpressions.Regex.

4.3.6 Тип ссылок

Обычно аргументы передаются командам по значению. В случае аргумента, имеющего какой-то тип значения, передается копия значения. В случае аргумента, имеющего какой-то ссылочный тип, передается копия ссылки.

Тип ref предоставляет механизм, позволяющий передавать аргументы командам по ссылке, чтобы команды могли изменять значение аргумента. Тип ref содержит следующие доступные элементы:

участник Тип участника типа назначение
Ценность Свойство экземпляра (чтение и запись) Тип значения, на которое имеется ссылка. Возвращает/задает значение, на которое ссылается ссылка.

Рассмотрим следующее определение функции и вызов:

function Doubler {
    param ([ref]$x) # parameter received by reference
    $x.Value *= 2.0 # note that 2.0 has type double
}

$number = 8 # designates a value of type int, value 8
Doubler([ref]$number) # argument received by reference
$number # designates a value of type double, value 8.0

Рассмотрим случай, в котором $number ограничен типом:

[int]$number = 8 # designates a value of type int, value 8
Doubler([ref]$number) # argument received by reference
$number # designates a value of type int, value 8

Как показано ниже, аргумент и соответствующий параметр должны быть объявлены ref.

В PowerShell ref сопоставляется с System.Management.Automation.PSReference.

4.3.7 Тип scriptblock

Тип scriptblock представляет предварительно скомпилированный блок текста скрипта (§7.1.8), который можно использовать в качестве одной единицы. Он имеет следующие доступные элементы:

участник Тип участника типа назначение
Атрибуты Свойство экземпляра (только для чтения) Коллекция атрибутов Возвращает атрибуты блока скрипта.
Файл Свойство экземпляра (только для чтения) струна Возвращает имя файла, в котором определен блок скрипта.
Модуль Свойство экземпляра (только для чтения) определение реализации ([§4.5.12][§4.5.12]) Получает сведения о модуле, в котором определен блок скрипта.
GetNewClosure Метод экземпляра scriptblock
/никакой
Извлекает блок скрипта, привязанный к модулю. Все локальные переменные, которые находятся в контексте вызывающего объекта, будут скопированы в модуль.
Вызвать Метод экземпляра Коллекция объекта или объекта[] Вызывает блок скрипта с указанными аргументами и возвращает результаты.
InvokeReturnAsIs Метод экземпляра объект/объект[] Вызывает блок скрипта с указанными аргументами и возвращает все созданные объекты.
Создавать Статический метод scriptblock
/строка
Создает новый объект scriptblock, содержащий указанный скрипт.

В PowerShell scriptblock сопоставляется с System.Management.Automation.ScriptBlock. Invoke возвращает коллекцию PSObject.

4.3.8 Математический тип

Тип math предоставляет доступ к некоторым константам и методам, полезным в математических вычислениях. Он имеет следующие доступные элементы:

участник Тип участника типа назначение
Е Статичное свойство (только для чтения) двойной Естественная логарифмическая база
ПИ Статичное свойство (только для чтения) двойной Отношение окружности круга к его диаметру
Абдоминальные мышцы Статический метод числовой/числовой Абсолютное значение (возвращаемый тип совпадает с типом переданного аргумента)
Акос Статический метод двойное / двойное Угол, косинус которого является указанным числом
Asin Статический метод двойное / двойное Угол, синус которого является указанным числом
Атан Статический метод двойное / двойное Угол, тангенс которого является указанным числом
Atan2 Статический метод double / double y, double x Угол, тангенс которого является кворентом двух указанных чисел x и y
Потолок Статический метод

десятичное или десятичное

двойное / двойное

наименьшее целое число больше или равно указанному числу
Салат ромэн Статический метод двойное / двойное Косинус указанного угла
Спокойный Статический метод двойное / двойное Гиперболический косинус указанного угла
Эксп Статический метод двойное / двойное e, поднятый на указанную мощность
Этаж Статический метод

десятичное или десятичное

двойное / двойное

Наибольшее целое число меньше или равно указанному числу
Журнал Статический метод

double / double число

двойное/двойное число, двойное базовое

Логарифм числа с основанием e или основание
Log10 Статический метод двойное / двойное Десятичный логарифм указанного числа
Макс Статический метод числовой/числовой Большее из двух указанных чисел (возвращаемый тип совпадает с типом переданных аргументов)
Мин Статический метод числовой/числовой, числовой Меньшее из двух заданных чисел (возвращаемый тип совпадает с типом переданных аргументов)
Бах Статический метод double / double x, double y Указанное число x, поднятое до указанного значения y
Грех Статический метод двойное / двойное Синус указанного угла
Синх Статический метод двойное / двойное Гиперболический синус указанного угла
Sqrt Статический метод двойное / двойное Квадратный корень указанного числа
Загар Статический метод двойное / двойное Тангенс указанного угла
Танх Статический метод двойное / двойное Гиперболический тангенс указанного угла

В PowerShell Math сопоставляется с System.Math.

4.3.9 Упорядоченный тип

Тип ordered — это псевдотип, используемый только для преобразований.

4.3.10 Тип pscustomobject

Тип pscustomobject — это псевдотип, используемый только для преобразований.

4.4 Универсальные типы

Ряд языков программирования и сред предоставляют типы, которые могут быть специализированными. Многие из этих типов называются типами контейнеров, так как экземпляры этих типов могут содержать объекты другого типа. Рассмотрим тип Stack, который может представлять стек значений, в который можно добавлять элементы и из которого можно их удалять. Как правило, пользователь стека хочет хранить только один тип объекта в этом стеке. Однако если язык или среда не поддерживает специализацию типов, необходимо реализовать несколько различных вариантов типа Stack, хотя все они выполняют одну и ту же задачу, просто с различными элементами типа.

Специализация типов позволяет реализовать универсального типа таким образом, чтобы его можно было ограничить на обработку некоторых наборов типов при использовании. Например

  • Универсальный тип стека, специализированный для хранения строк, может быть записан как Stack[string].
  • Универсальный тип словаря, специализированный для хранения ключей int со связанными строковыми значениями, может быть записан как Dictionary[int,string].
  • Стек стеков строк может быть записан как Stack[Stack[string]].

Хотя PowerShell не определяет встроенные универсальные типы, он может использовать такие типы, если они предоставляются средой узла. См. синтаксис §7.1.10.

Полное имя указанного выше типа Stack[string] равно System.Collections.Generic.Stack[string]. Полное имя указанного выше типа Dictionary[int,string] равно System.Collections.Generic.Dictionary[int,string].

4.5 Анонимные типы

В некоторых случаях реализация PowerShell создает объекты определенного типа, а эти объекты имеют члены, доступные для скрипта. Однако фактическое имя этих типов не обязательно должно быть указано, если доступные члены определены достаточно подробно для их использования. То есть скрипты могут сохранять объекты этих типов и получать доступ к их членам без фактического знания имен этих типов. В следующих подразделах указаны эти типы.

Тип описания поставщика 4.5.1

Этот тип описывает состояние поставщика. Он имеет следующие доступные элементы:

участник Тип участника типа назначение
Диски Свойство экземпляра (только для чтения) Реализация определена (§4.5.2) Коллекция объектов описания диска
Имя Свойство экземпляра (только для чтения) струна Имя поставщика

В PowerShell этот тип System.Management.Automation.ProviderInfo.

Тип описания диска 4.5.2

Этот тип инкапсулирует состояние диска. Он имеет следующие доступные элементы:

участник Тип участника типа назначение
Текущее местоположение Свойство экземпляра (чтение и запись) струна Текущее рабочее расположение (§3.1.4) диска
Описание Свойство экземпляра (чтение и запись) струна Описание диска
Имя Свойство экземпляра (только для чтения) струна Имя диска
Корень Свойство экземпляра (только для чтения) струна Имя диска

В PowerShell этот тип System.Management.Automation.PSDriveInfo.

Тип описания переменной 4.5.3

Этот тип инкапсулирует состояние переменной. Он имеет следующие доступные элементы:

участник Тип участника типа назначение
Атрибуты Свойство экземпляра (только для чтения) Реализация определена Коллекция атрибутов
Описание Свойство экземпляра (доступ на чтение и запись) струна Описание, назначенное переменной с помощью командлетов New-Variable или Set-Variable.
Модуль Свойство экземпляра (только для чтения) Определение реализации (§4.5.12) Модуль, из которого экспортирована эта переменная
Имя модуля Свойство экземпляра (только для чтения) струна Модуль, в котором определена эта переменная
Имя Свойство экземпляра (только для чтения) струна Имя, назначенное переменной при создании на языке PowerShell или с помощью командлетов New-Variable и Set-Variable.
Параметры Свойство экземпляра (чтение и запись) струна Параметры, присвоенные переменной с помощью командлетов New-Variable и Set-Variable.
Ценность Свойство экземпляра (чтение и запись) объект Значение, назначенное переменной при назначении на языке PowerShell или с помощью командлетов New-Variable и Set-Variable.

В PowerShell этот тип System.Management.Automation.PSVariable.

Windows PowerShell: тип коллекции атрибутов — System.Management.Automation.PSVariableAttributeCollection.

Тип описания псевдонима 4.5.4

Этот тип инкапсулирует состояние псевдонима. Он имеет следующие доступные элементы:

участник Тип участника типа назначение
CommandType Свойство экземпляра (только для чтения) Реализация определена Должен сравниться с "Псевдоним".
Определение Свойство экземпляра (только для чтения) струна Команда или псевдоним, которым был присвоен псевдоним посредством командлетов New-Alias или Set-Alias.
Описание Свойство экземпляра (чтение и запись) струна Описание, назначенное псевдониму с помощью командлетов New-Alias или Set-Alias.
Модуль Свойство экземпляра (только для чтения) Определение реализации (§4.5.12) Модуль, из которого экспортирован этот псевдоним
Имя модуля Свойство экземпляра (только для чтения) струна Модуль, в котором определен этот псевдоним.
Имя Свойство экземпляра (только для чтения) струна Имя, назначенное псевдониму при создании с помощью командлетов New-Alias или Set-Alias.
Параметры Свойство экземпляра (чтение и запись) струна Параметры, назначенные псевдониму с помощью командлетов New-Alias New-Alias или Set-Alias.
ТипВыхода Свойство экземпляра (только для чтения) Коллекция, определяемая реализацией Указывает типы значений, выводимых командой, на которую ссылается псевдоним.
Параметры Свойство экземпляра (только для чтения) Коллекция, определяемая реализацией Параметры команды.
Наборы параметров Свойство экземпляра (только для чтения) Коллекция, определяемая реализацией Сведения о наборах параметров, связанных с командой.
КомандаСоСсылкой Свойство экземпляра (только для чтения) Реализация определена Сведения о команде, на которую непосредственно ссылается этот псевдоним.
ResolvedCommand Свойство экземпляра (только для чтения) Реализация определена Сведения о команде, которой соответствует псевдоним.

В PowerShell этот тип System.Management.Automation.AliasInfo.

Тип описания рабочего расположения 4.5.5

Этот тип инкапсулирует состояние рабочего места. Он имеет следующие доступные элементы:

участник Тип участника типа назначение
Водить Свойство экземпляра (только для чтения) Реализация определена (§4.5.2) Объект описания диска
Путь Свойство экземпляра (только для чтения) струна Рабочее расположение
Поставщик Свойство экземпляра (только для чтения) Определение реализации (§4.5.1) Поставщик
ProviderPath Свойство экземпляра (только для чтения) струна Текущий путь поставщика

Группа рабочих мест — это коллекция объектов рабочего расположения, как описано выше.

В PowerShell текущее рабочее расположение представлено объектом типа System.Management.Automation.PathInfo. Объект типа System.Management.Automation.PathInfoStack, представляющий собой стек рабочих расположений, является коллекцией объектов PathInfo.

Тип описания переменной среды 4.5.6

Этот тип инкапсулирует состояние переменной среды. Он имеет следующие доступные элементы:

участник Тип участника типа назначение
Имя Свойство экземпляра (чтение и запись) струна Имя переменной среды
Ценность Свойство экземпляра (чтение и запись) струна Значение переменной среды

В PowerShell этот тип System.Collections.DictionaryEntry. Имя переменной — это ключ словаря. Значение переменной среды — это значение словаря. Имя — это AliasProperty, который соответствует ключу.

Тип описания приложения 4.5.7

Этот тип инкапсулирует состояние приложения. Он имеет следующие доступные элементы:

участник Тип участника типа назначение
ТипКоманды Свойство экземпляра (только для чтения) Реализация определена Должно совпадать с "Приложение".
Определение Свойство экземпляра (только для чтения) струна Описание приложения.
Расширение Свойство экземпляра (чтение и запись) струна Расширение файла приложения.
Модуль Свойство экземпляра (только для чтения) Определение реализации (§4.5.12) Модуль, определяющий эту команду.
Имя модуля Свойство экземпляра (только для чтения) струна Имя модуля, определяющего команду.
Имя Свойство экземпляра (только для чтения) струна Имя команды.
ТипВыхода Свойство экземпляра (только для чтения) Коллекция, определяемая реализацией Задает типы значений, выводимых командой.
Параметры Свойство экземпляра (только для чтения) Коллекция, определяемая реализацией Параметры команды.
Наборы параметров Свойство экземпляра (только для чтения) Коллекция, определяемая реализацией Сведения о наборах параметров, связанных с командой.
Путь Свойство экземпляра (только для чтения) струна Возвращает путь к файлу приложения.

В PowerShell этот тип System.Management.Automation.ApplicationInfo.

Тип описания командлета 4.5.8

Этот тип инкапсулирует состояние командлета. Он имеет следующие доступные элементы:

участник Тип участника типа назначение
CommandType Свойство объекта (только для чтения) Реализация определена Должен быть равен "Cmdlet".
Набор параметров по умолчанию Свойство экземпляра (только для чтения) Реализация определена Набор параметров по умолчанию, используемый, если PowerShell не может определить, какой набор параметров будет использоваться на основе предоставленных аргументов.
Определение Свойство экземпляра (только для чтения) струна Описание командлета.
HelpFile Свойство экземпляра (чтение и запись) струна Путь к файлу командлета для справки.
ТипРеализации Свойство экземпляра (чтение и запись) Реализация определена Тип, реализующий командлет.
Модуль Свойство экземпляра (только для чтения) Определение реализации (§4.5.12) Модуль, определяющий этот командлет.
Имя модуля Свойство экземпляра (только для чтения) струна Имя модуля, определяющего командлет.
Имя Свойство экземпляра (только для чтения) струна Название командлета.
Существительное Свойство экземпляра (только для чтения) струна Имя командлета как существительное.
ТипВыхода Свойство экземпляра (только для чтения) Коллекция, определяемая реализацией Задает типы значений, выводимых командлетом.
Параметры Свойство экземпляра (только для чтения) Коллекция, определяемая реализацией Параметры командлета.
Наборы параметров Свойство экземпляра (только для чтения) Коллекция, определяемая реализацией Сведения о наборах параметров, связанных с cmdlet.
Глагол Свойство экземпляра (только для чтения) струна Имя глагола командлета.
PSSnapIn Свойство экземпляра (только для чтения) Реализация определена Windows PowerShell: сведения о оснастке Windows PowerShell, используемой для регистрации командлета.

В PowerShell этот тип System.Management.Automation.CmdletInfo.

Тип описания внешнего скрипта 4.5.9

Этот тип инкапсулирует состояние внешнего скрипта (который является напрямую исполняемым с помощью PowerShell, но не встроенный). Он имеет следующие доступные элементы:

участник Тип участника типа назначение
ТипКоманды Свойство экземпляра (только для чтения) Реализация определена Должен совпадать с "ExternalScript".
Определение Свойство экземпляра (только для чтения) струна Определение скрипта.
Модуль Свойство экземпляра (только для чтения) Определение реализации (§4.5.12) Модуль, определяющий этот скрипт.
Имя модуля Свойство экземпляра (только для чтения) струна Имя модуля, определяющего скрипт.
Имя Свойство экземпляра (только для чтения) струна Имя скрипта.
Оригинальная кодировка Свойство экземпляра (только для чтения) Реализация определена Исходная кодировка, используемая для преобразования символов скрипта в байты.
ТипВыхода Свойство экземпляра (только для чтения) Коллекция, определяемая реализацией Задает типы выходных значений скриптом.
Параметры Свойство экземпляра (только для чтения) Коллекция, определяемая реализацией Параметры скрипта.
Наборы параметров Свойство экземпляра (только для чтения) Коллекция, определяемая реализацией Сведения о наборах параметров, связанных с скриптом.
Путь Свойство экземпляра (только для чтения) струна Путь к файлу скрипта.
ScriptBlock Свойство экземпляра (только для чтения) scriptblock Внешний скрипт.
ScriptContents Свойство экземпляра (только для чтения) струна Исходное содержимое скрипта.

В PowerShell этот тип System.Management.Automation.ExternalScriptInfo.

Тип описания функции 4.5.10

Этот тип инкапсулирует состояние функции. Он имеет следующие доступные элементы:

участник Тип участника типа назначение
CmdletBinding Свойство экземпляра (только для чтения) bool Указывает, использует ли функция ту же привязку параметров, которая использует скомпилированные командлеты (см. раздел §12.3.5).
ТипКоманды Свойство экземпляра (только для чтения) Реализация определена Можно сравнить этот объект на равенство с "Function" или "Filter", чтобы определить, какой из них он представляет.
Набор параметров по умолчанию Свойство экземпляра (только для чтения) струна Указывает набор параметров, используемый, если это невозможно определить из аргументов (см. раздел §12.3.5).
Определение Свойство экземпляра (только для чтения) струна Строковое представление ScriptBlock
Описание Свойство экземпляра (чтение и запись) струна Описание функции.
Модуль Свойство экземпляра (только для чтения) Определение реализации (§4.5.12) Модуль, из которого экспортирована эта функция
Имя модуля Свойство экземпляра (только для чтения) струна Модуль, в котором была определена эта функция
Имя Свойство экземпляра (только для чтения) струна Имя функции
Опции Свойство экземпляра (чтение и запись) Реализация определена Параметры области функции (§3.5.4).
ТипВыхода Свойство объекта (только для чтения) Коллекция, определяемая реализацией Указывает типы выходных значений в порядке (см. §12.3.6).
Параметры Свойство экземпляра (только для чтения) Коллекция, определяемая реализацией Задает имена параметров в порядке. Если функция действует как командлет (см. CmdletBinding выше), общие параметры добавляются в конец коллекции.
Наборы параметров Свойство экземпляра (только для чтения) Коллекция, определяемая реализацией Сведения о наборах параметров, связанных с командой. Для каждого параметра результат показывает имя и тип параметра, а также указывает, является ли параметр обязательным, по позиции или параметру переключателя. Если функция действует как командлет (см. CmdletBinding выше), общие параметры добавляются в конец коллекции.
ScriptBlock Свойство экземпляра (только для чтения) scriptblock (§4.3.6) Тело функции

В PowerShell этот тип System.Management.Automation.FunctionInfo.

  • CommandType имеет тип System.Management.Automation.CommandTypes.
  • Options имеет тип System.Management.Automation.ScopedItemOptions.
  • OutputType имеет тип System.Collections.ObjectModel.ReadOnlyCollection``1[[System.Management.Automation.PSTypeName,System.Management.Automation]].
  • Parameters имеет тип System.Collections.Generic.Dictionary``2[[System.String,mscorlib],[System.Management.Automation.ParameterMetadata,System.Management.Automation]].
  • ParameterSets имеет тип System.Collections.ObjectModel.ReadOnlyCollection``1[[System.Management.Automation.CommandParameterSetInfo,System.Management.Automation]].
  • Видимость имеет тип System.Management.Automation.SessionStateEntryVisibility.
  • PowerShell также имеет свойство Видимость.

Тип описания фильтра 4.5.11

Этот тип инкапсулирует состояние фильтра. Он имеет тот же набор элементов, что и тип описания функции (§4.5.10).

В PowerShell этот тип System.Management.Automation.FilterInfo. Он имеет тот же набор свойств, что и System.Management.Automation.FunctionInfo (§4.5.11).

Тип описания модуля 4.5.12

Этот тип инкапсулирует состояние модуля. Он имеет следующие доступные элементы:

участник Тип участника типа назначение
Описание Свойство экземпляра (чтение и запись) струна Описание модуля (задано манифестом)
ТипМодуля Свойство экземпляра (только для чтения) Реализация определена Тип модуля (манифест, скрипт или двоичный файл)
Имя Свойство экземпляра (только для чтения) струна Имя модуля
Путь Свойство экземпляра (только для чтения) струна Путь модуля

В PowerShell этот тип System.Management.Automation.PSModuleInfo. Тип ModuleTypeSystem.Management.Automation.ModuleType.

Тип описания пользовательского объекта 4.5.13

Этот тип данных инкапсулирует состояние пользовательского объекта. Он не имеет доступных членов.

В PowerShell этот тип System.Management.Automation.PSCustomObject. Командлеты Import-Module и New-Object могут создавать объект этого типа.

Тип описания команды 4.5.14

Автоматическая переменная $PSCmdlet — это объект, представляющий выполняемый командлет или функцию. Тип этого объекта определяется реализацией; он имеет следующие доступные элементы.

участник Тип участника типа назначение
ИмяНабораПараметров Свойство экземпляра (только для чтения) струна Имя текущего набора параметров (см. ParameterSetName)
СледуетПродолжать Метод экземпляра

Перегруженные

/bool

Запрашивает подтверждение операции от пользователя.
ShouldProcess Метод экземпляра

Перегруженные

/bool

Запрашивает подтверждение от пользователя перед выполнением операции.

В PowerShell этот тип — System.Management.Automation.PSScriptCmdlet.

Тип описания записи ошибки 4.5.15

Автоматическая переменная $Error содержит коллекцию записей об ошибках, представляющих последние ошибки (§3.12). Хотя тип этой коллекции не указан, он поддерживает подстроку для получения доступа к отдельным записям ошибок.

В PowerShell тип коллекции — это System.Collections.ArrayList. Тип отдельной записи об ошибке в коллекции — System.Management.Automation.ErrorRecord. Этот тип имеет следующие общедоступные свойства:

  • CategoryInfo — получает сведения о категории ошибки.
  • ErrorDetails — возвращает и задает более подробные сведения об ошибке, например сообщение об ошибке замены.
  • Исключение: возвращает исключение, связанное с этой записью об ошибке.
  • FullyQualifiedErrorId — возвращает полный идентификатор ошибки для этой записи об ошибке.
  • InvocationInfo — получает сведения о команде, которая была вызвана при возникновении ошибки.
  • PipelineIterationInfo — возвращает состояние конвейера при создании этой записи об ошибке.
  • TargetObject — возвращает объект, обрабатываемый при возникновении ошибки.

Тип описания перечислителя 4.5.16

Ряд переменных — это перечислители для коллекций (§4). Автоматическая переменная $foreach — это перечислитель, созданный для любой инструкции foreach. Автоматическая переменная $input — это перечислитель коллекции, доставленной в функцию из конвейера. Автоматическая переменная $switch — это перечислитель, созданный для любой инструкции switch.

Тип перечислителя определяется реализацией; он имеет следующие доступные члены:

участник Тип участника типа назначение
Текущий Свойство экземпляра (только для чтения) объект Возвращает текущий элемент коллекции. Если перечислитель в настоящее время не расположен на элементе коллекции, то поведение определяется реализацией.
ПерейтиКСледующему Метод экземпляра None/bool Перемещает перечислитель к следующему элементу коллекции. Возвращает $true, если перечислитель успешно передвигался к следующему элементу; $false, если перечислитель прошел конец коллекции.

В PowerShell эти элементы определяются в интерфейсе System.IEnumerator, который реализуется типами, указанными ниже. Если перечислитель в настоящее время не расположен в элементе коллекции, возникает исключение типа InvalidOperationException. Этот тип для $foreach является System.Array+SZArrayEnumerator. Для $input этот тип System.Collections.ArrayList+ArrayListEnumeratorSimple. Для $switch тип — System.Array+SZArrayEnumerator.

Тип описания каталога 4.5.17

Командлет New-Item может создавать элементы различных типов, включая каталоги файловой системы. Тип объекта описания каталога определен; он имеет следующие доступные члены:

участник Тип участника типа назначение
Атрибуты Свойство экземпляра (для чтения и записи) Реализация определена (§4.2.6.3) Возвращает или задает один или несколько атрибутов объекта каталога.
Время создания Свойство экземпляра (чтение и запись) Определение реализации (§4.5.19) Возвращает и задает время создания объекта каталога.
Расширение Свойство экземпляра (только для чтения) струна Возвращает часть расширения имени каталога.
Полное имя Свойство экземпляра (только для чтения) струна Возвращает полный путь к каталогу.
ВремяПоследнейЗаписи Свойство экземпляра (чтение и запись) Определение реализации (§4.5.19) Возвращает и задает время последней записи в каталоге.
Имя Свойство экземпляра (только для чтения) струна Возвращает имя каталога.

В PowerShell этот тип System.IO.DirectoryInfo. Тип свойства АтрибутыSystem.IO.FileAttributes.

Тип описания файла 4.5.18

Командлет New-Item может создавать элементы различных типов, включая файлы Файловой системы. Тип объекта описания файла определен; он имеет следующие доступные члены:

участник Тип участника типа назначение
Атрибуты Свойство экземпляра (чтение и запись) Реализация определена (§4.2.6.3) Возвращает или задает один или несколько атрибутов объекта файла.
ОсновноеИмя Свойство экземпляра (только для чтения) струна Возвращает имя файла, за исключением расширения.
Время создания Свойство экземпляра (чтение и запись) Определение реализации (§4.5.19) Возвращает и задает время создания объекта файла.
Расширение Свойство экземпляра (только для чтения) струна Возвращает расширение имени файла.
Полное имя Свойство экземпляра (только для чтения) струна Возвращает полный путь к файлу.
ВремяПоследнейЗаписи Свойство экземпляра (чтение и запись) Определение реализации (§4.5.19) Возвращает и задает время последнего изменения файла.
Длина Свойство экземпляра (только для чтения) длинный Возвращает размер файла в байтах.
Имя Свойство экземпляра (только для чтения) струна Возвращает имя файла.
Информация о версии Свойство экземпляра (только для чтения) Реализация определена Windows PowerShell: Это свойство скрипта возвращает System.Diagnostics.FileVersionInfo для файла.

В PowerShell этот тип System.IO.FileInfo.

Тип описания 4.5.19 Date-Time

Тип объекта описания даты и времени определен; он имеет следующие доступные члены:

участник Тип участника типа назначение
День Свойство экземпляра (только для чтения) целое число (int) Возвращает компонент дня месяца, представленный этим экземпляром.
Час Свойство экземпляра (только для чтения) int Возвращает компонент часа даты, представленной этим экземпляром.
Минута Свойство экземпляра (только для чтения) int Возвращает значение минуты даты, представленной этим экземпляром.
Месяц Свойство экземпляра (только для чтения) int Возвращает компонент месяца даты, представленной этим экземпляром.
второй Свойство экземпляра (только для чтения) int Возвращает компонент секунд даты, представленной этим экземпляром.
Год Свойство экземпляра (только для чтения) int Возвращает компонент года даты, представленной этим экземпляром.

Объект этого типа можно создать с помощью командлета Get-Date.

В PowerShell этот тип System.DateTime.

Тип описания 4.5.20 Group-Info

Тип объекта описания групповой информации определяется реализацией; он имеет следующие доступные члены:

Член Тип члена Тип Цель
Количество Свойство экземпляра (только для чтения) int Возвращает количество элементов в группе.
Группа Свойство экземпляра (только для чтения) Коллекция, определяемая реализацией Возвращает элементы группы.
Имя Свойство экземпляра (только для чтения) струна Возвращает имя группы.
Значения Свойство экземпляра (только для чтения) Коллекция, определяемая реализацией Возвращает значения элементов группы.

Объект этого типа можно создать с помощью командлета group-Object.

В PowerShell этот тип Microsoft.PowerShell.Commands.GroupInfo.

Тип описания 4.5.21 Generic-Measure-Info

Тип объекта описания generic-measure-info определяется реализацией; он имеет следующие доступные члены:

участник Тип участника типа назначение
Средний Свойство экземпляра (только для чтения). двойной Возвращает среднее значение значений свойств, измеряемых.
Количество Свойство экземпляра (только для чтения) int Возвращает количество объектов с указанными свойствами.
Максимум Свойство экземпляра (только для чтения) двойной Возвращает максимальное значение указанных свойств.
Минимум Свойство экземпляра (только для чтения) двойной Возвращает минимальное значение указанных свойств.
Свойство Свойство экземпляра (только для чтения) струна Возвращает свойство, которое нужно измерять.
Сумма Свойство экземпляра (только для чтения) двойной Возвращает сумму значений указанных свойств.

Объект этого типа можно создать с помощью командлета Measure-Object.

В программе PowerShell этот тип Microsoft.PowerShell.Commands.GenericMeasureInfo.

4.5.22 Text-Measure-Info тип описания

Тип объекта описания текстовой информации определяется реализацией; он имеет следующие доступные члены:

участник Тип участника типа назначение
Символы Свойство экземпляра (только для чтения) int Возвращает количество символов в целевом объекте.
Линии Свойство экземпляра (только для чтения) int Возвращает количество строк в целевом объекте.
Свойство Свойство экземпляра (только для чтения) струна Возвращает свойство, которое нужно измерять.
Слова Свойство экземпляра (только для чтения) int Возвращает количество слов в целевом объекте.

Объект этого типа можно создать с помощью командлета Measure-Object.

В PowerShell этот тип Microsoft.PowerShell.Commands.TextMeasureInfo.

4.5.23 Тип учетных данных

Затем объект учетных данных можно использовать в различных операциях безопасности. Тип объекта учетных данных зависит от реализации; он имеет следующие доступные элементы:

Член Тип члена Тип Цель
Пароль Свойство экземпляра (только для чтения) Реализация определена Возвращает пароль.
Имя пользователя Свойство экземпляра (только для чтения) струна Возвращает имя пользователя.

Объект этого типа можно создать с помощью командлета get-Credential.

В PowerShell этот тип System.Management.Automation.PSCredential.

Тип указателя метода 4.5.24

Тип методного указателя определяется реализацией; он имеет следующие доступные члены:

участник Тип участника типа назначение
Вызвать Метод экземпляра число и тип объекта или переменной Принимает переменное число аргументов и косвенно вызывает метод, на который ссылается родительский конструктор методов, передавая аргументы.

Объект этого типа можно создать с помощью выражения вызова (§7.1.3).

В PowerShell этот тип — System.Management.Automation.PSMethod.

Тип определения члена 4.5.25

Этот тип инкапсулирует определение элемента. Он имеет следующие доступные элементы:

участник Тип участника типа назначение
Определение Свойство экземпляра (только для чтения) струна Возвращает определение элемента.
Тип участника Свойство экземпляра (только для чтения) Реализация определена Возвращает тип PowerShell члена.
Имя Свойство экземпляра (только для чтения) струна Возвращает имя члена.
ТипИмя Свойство экземпляра (только для чтения) струна Возвращает имя типа элемента.

В PowerShell этот тип Microsoft.PowerShell.Commands.MemberDefinition.

4.6 Расширение и адаптация типов

Реализация PowerShell включает семейство основных типов (которые описаны в этой главе), каждый из которых содержит собственный набор базовых членов. Эти члены могут быть методами или свойствами, и они могут быть экземплярами или статическими элементами. Например, базовые элементы строки типа (§4.3.1) являются свойством экземпляра Length и методами экземпляра ToLower и ToUpper.

При создании объекта он содержит все свойства экземпляра типа этого объекта, а методы экземпляра этого типа можно вызывать в этом объекте. Объект можно настроить с помощью добавления элементов экземпляра во время выполнения. Результат называется пользовательским объектом. Все члены, добавленные в экземпляр, существуют лишь на протяжении жизни этого экземпляра; другие экземпляры одного и того же типа не затрагиваются.

Базовый набор элементов типа можно дополнить добавлением следующих типов элементов:

  • адаптированные элементы с помощью расширенной системы типов (ETS), наиболее подробные сведения о которых не указаны.
  • дополнительных членовс помощью командлета Add-Member.

В PowerShell расширенные члены также можно добавлять с помощью types.ps1xml файлов. Адаптированные и расширенные члены называются коллективно искусственныечлены.

ETS добавляет следующие элементы ко всем объектам PowerShell: psbase, psadapted, psextendedи pstypenames. Дополнительные сведения об этих элементах см. в параметрах Force и View командлета Get-Member.

Элемент экземпляра может скрыть расширенный и (или) адаптированный член того же имени, а расширенный элемент может скрыть адаптированный элемент. В таких случаях наборы элементов psadapted и psextended можно использовать для доступа к этим скрытым членам.

Если types.ps1xml указывает элемент с именем Поддерживает, obj.psextended предоставляет доступ только к этому члену, а не к члену, добавленным через Add-Member.

Существует три способа создания пользовательского объекта с новым членом M:

  1. Этот подход можно использовать для добавления одного или нескольких элементов NoteProperty.

    $x = New-Object PSObject -Property @{M = 123}
    
  2. Этот подход можно использовать для добавления элементов NoteProperty или ScriptMethod.

    $x = New-Module -AsCustomObject {$M = 123 ; Export-ModuleMember --Variable M}
    
  3. Этот подход можно использовать для добавления любого типа элемента.

    $x = New-Object PSObject
    Add-Member -InputObject $x -Name M -MemberType NoteProperty -Value 123
    

PSObject — базовый тип всех типов PowerShell.