Заметка
Доступ к этой странице требует авторизации. Вы можете попробовать войти в систему или изменить каталог.
Доступ к этой странице требует авторизации. Вы можете попробовать сменить директорию.
Редакционная заметка
Важно
Спецификация языка Windows PowerShell версии 3.0 была опубликована в декабре 2012 года и основана на Windows PowerShell 3.0. Эта спецификация не отражает текущее состояние PowerShell. Нет плана обновить эту документацию, чтобы отразить текущее состояние. Эта документация представлена здесь для получения исторической справки.
Документ спецификации доступен в виде документа Microsoft Word из Центра загрузок Microsoft: https://www.microsoft.com/download/details.aspx?id=36389. Этот документ Word был конвертирован для презентации на платформе Microsoft Learn. Во время преобразования некоторые редакционные изменения были внесены в соответствии с форматированием платформы Docs. Исправлены некоторые опечатки и незначительные ошибки.
Атрибутный объект связывает предопределенные системные сведения с целевым элементом, который может быть блоком параметров или отдельным параметром (§8.10). Каждый атрибутный объект имеет тип атрибута.
Сведения, предоставляемые атрибутом, также называются метаданными. Метаданные могут быть проверены командой или средой выполнения для управления обработкой данных либо внешними инструментами до момента выполнения команды, чтобы контролировать, как сама команда обрабатывается или поддерживается.
К одному целевому элементу можно применить несколько атрибутов.
Спецификация атрибута 12.1
Совет
Нотация ~opt~ в определениях синтаксиса указывает, что лексическая сущность является необязательной в синтаксисе.
attribute-list:
attribute
attribute-list new-lines~opt~ attribute
attribute:
[ new-lines~opt~ attribute-name ( attribute-arguments new-lines~opt~ ) new-lines~opt~ ]
type-literal
attribute-name:
type-spec
attribute-arguments:
attribute-argument
attribute-argument new-lines~opt~ ,
attribute-arguments
attribute-argument:
new-lines~opt~ expression
new-lines~opt~ simple-name
new-lines~opt~ simple-name = new-lines~opt~ expression
Атрибут состоит из имени атрибута и необязательного списка позиционных и именованных аргументов.
Позиционные аргументы (если таковые имеются) предшествуют именованным аргументам. Именованный аргумент состоит из простого имени , за которым опционально следует знак равенства и затем следует выражение . Если выражение пропущено, предполагается значение $true.
Атрибут с именем является зарезервированным типом атрибута (§12.3) или типом атрибута, определенным реализацией.
12.2 Экземпляры атрибутов
Экземпляр атрибута — это объект типа атрибута. Экземпляр представляет атрибут в процессе выполнения.
Чтобы создать объект определенного типа атрибута A, используйте нотацию A(). Атрибут объявляется путем помещения его экземпляра в [], как в [A()]. Некоторые типы атрибутов имеют позиционные и именованные параметры (§8.14), как функции и командлеты. Например
[A(10,IgnoreCase=$true)]
создается экземпляр типа A с использованием позиционного параметра, значение аргумента которого равно 10, и именованного параметра IgnoreCase, значение аргумента которого равно $true.
12.3 Зарезервированные атрибуты
Атрибуты, описанные в следующих разделах, можно использовать для расширения или изменения поведения функций PowerShell, фильтров, скриптов и командлетов.
12.3.1 Атрибут Alias
Этот атрибут используется в параметре скрипта для указания альтернативного имени параметра. Параметр может иметь несколько псевдонимов, и каждое имя псевдонима должно быть уникальным в списке параметров. Одно из возможных способов — иметь разные имена для параметра в разных наборах параметров (см. раздел ParameterSetName).
Аргумент атрибута имеет строку типа[].
Рассмотрим вызов функции Test1 со следующим блоком param, который вызывается следующим образом:
param (
[Parameter(Mandatory = $true)]
[Alias("CN")]
[Alias("Name", "System")]
[string[]] $ComputerName
)
Test1 "Mars", "Saturn" # pass argument by position
Test1 -ComputerName "Mars", "Saturn" # pass argument by name
Test1 -CN "Mars", "Saturn" # pass argument using first alias
Test1 -Name "Mars", "Saturn" # pass argument using second alias
Test1 -Sys "Mars", "Saturn" # pass argument using third alias
Рассмотрим вызов функции Test2 со следующим блоком param, который вызывается следующим образом:
param (
[Parameter(Mandatory = $true, ValueFromPipelineByPropertyName = $true)]
[Alias('PSPath')]
[string] $LiteralPath
)
Get-ChildItem "E:\*.txt" | Test2 -LiteralPath { $_ ; "`n`t";
$_.FullName + ".bak" }
Get-ChildItem "E:\*.txt" | Test2
Командлет Get-ChildItem (псевдоним dir) добавляет к возвращаемому объекту новое свойство NoteProperty типа stringс именем PSPath.
12.3.2 Атрибут AllowEmptyCollection
Этот атрибут используется в параметре скрипта , чтобы разрешить использование пустой коллекции в качестве аргумента обязательного параметра.
Рассмотрим вызов функции Test со следующим блоком param, который вызывается следующим образом:
param (
[Parameter(Mandatory = $true)]
[AllowEmptyCollection()]
[string[]] $ComputerName
)
Test "Red", "Green" # $ComputerName has Length 2
Test "Red" # $ComputerName has Length 1
Test -Comp @() # $ComputerName has Length 0
12.3.3 Атрибут AllowEmptyString
Этот атрибут используется в параметре скрипта, чтобы разрешить пустую строку в качестве аргумента обязательного параметра.
Рассмотрим вызов функции Test со следующим блоком param, который вызывается следующим образом:
param (
[Parameter(Mandatory = $true)]
[AllowEmptyString()]
[string] $ComputerName
)
Test "Red" # $ComputerName is "Red"
Test "" # empty string is permitted
Test -Comp "" # empty string is permitted
12.3.4 Атрибут AllowNull
Этот атрибут используется в параметре скрипта, чтобы разрешить $null в качестве аргумента обязательного параметра, для которого неявное преобразование недоступно.
Рассмотрим тест вызова функции, имеющий следующий блок парам, и который вызывается, как показано ниже.
param (
[Parameter(Mandatory = $true)]
[AllowNull()]
[int[]] $Values
)
Test 10, 20, 30 # $values has Length 3, values 10, 20, 30
Test 10, $null, 30 # $values has Length 3, values 10, 0, 30
Test -Val $null # $values has value $null
Обратите внимание, что второй случай выше не требует этого атрибута; Уже существует неявное преобразование из $null в int.
12.3.5 Атрибут CmdletBinding
Этот атрибут используется в списке атрибутов блока параметров функции, чтобы указать, что функция действует аналогично командлету. В частности, она позволяет функциям получать доступ к ряду методов и свойств через переменную $PSCmdlet, используя именованные блоки begin, process и end (§8.10.7).
Если этот атрибут присутствует, позиционные аргументы, не имеющие соответствующих позиционных параметров, вызывают сбой привязки параметров и $args не определены. (Без этого атрибута $args будет принимать любые несовпадные значения позиционного аргумента.)
Для определения характеристик параметра используются следующие аргументы:
| Имя параметра | назначение |
|---|---|
| ПоддерживаетShouldProcess (с именем) | Тип: bool; Значение по умолчанию: $false Указывает, поддерживает ли функция вызовы метода ShouldProcess, который используется для запроса пользователя на отзыв, прежде чем функция вносит изменения в систему. Значение $true указывает, что так оно и есть. Значение $false указывает, что это не так. |
| ConfirmImpact (с указанием имени) | Тип: строка; Значение по умолчанию: "Средний" Указывает уровень влияния выполняемого действия. Вызов метода ShouldProcess отображает запрос подтверждения только в том случае, если аргумент ConfirmImpact больше или равен значению переменной предпочтения $ConfirmPreference. Возможные значения этого аргумента: Нет. Отключайте все запросы на подтверждение. Низкий уровень: выполненное действие имеет низкий риск потери данных. Средний: действие, выполняемое, имеет средний риск потери данных. Высокий уровень: выполняемое действие имеет высокий риск потери данных. Значение $ConfirmPreference можно задать таким образом, чтобы только те командлеты, которые имеют равный или более высокий уровень воздействия, могли запрашивать подтверждение перед выполнением своей операции. Например, если для $ConfirmPreference установлено значение "Средний", командлеты со средним или высоким уровнем воздействия могут запросить подтверждение. Запросы от командлетов с низким уровнем влияния подавляются. |
| Имя набора параметров по умолчанию | Тип: строка; Значение по умолчанию: "__AllParameterSets" Указывает набор параметров, используемый, если это невозможно определить из аргументов. См. именованный аргумент ParameterSetName в параметре атрибута ([§12.3.7][§12.3.7]). |
| PositionalBinding (с именем) | Тип: bool; Значение по умолчанию: $true Указывает, поддерживается ли позициальная привязка. Значение этого аргумента игнорируется, если любые параметры указывают значения, отличные от по умолчанию, для именованного положения аргумента или именованного аргумента ParameterSetName в параметре атрибута ([§12.3.7][§12.3.7]). В противном случае, если аргумент $false, то параметры не являются позиционными, иначе им присваивается порядок в зависимости от очередности указания. |
Ниже приведен пример платформы для использования этого атрибута:
[CmdletBinding(SupportsShouldProcess = $true, ConfirmImpact = "Low")]
param ( ... )
begin { ... }
Get-process { ... }
end { ... }
12.3.6 Атрибут OutputType
Этот атрибут используется в списке атрибутов param-block, чтобы указать возвращаемые типы. Для определения характеристик параметра используются следующие аргументы:
| Имя параметра | назначение |
|---|---|
| Тип (позиция 0) | Тип: string[] или массив литеральных типов Список типов возвращаемых значений. |
| ParameterSetName (с именем) | Тип: string[] Задает наборы параметров, возвращающие типы, указанные соответствующими элементами параметра Type. |
Ниже приведены несколько примеров использования этого атрибута:
[OutputType([int])] param ( ... )
[OutputType("double")] param ( ... )
[OutputType("string","string")] param ( ... )
12.3.7 Атрибут параметра
Этот атрибут используется в параметре скрипта. Для определения характеристик параметра используются следующие именованные аргументы:
| Параметр | назначение |
|---|---|
| HelpMessage (именованное) | Тип: строка Этот аргумент указывает сообщение, которое предназначено для краткого описания параметра. Это сообщение используется в конкретной реализации, когда функция или командлет выполняется, но обязательный параметр с сообщением справки не имеет соответствующего аргумента. В следующем примере показано объявление параметров, которое содержит описание параметра. param ( [Параметр(Обязательный = $true; Windows PowerShell: если обязательный параметр не указан, среда выполнения запрашивает пользователю значение параметра. Диалоговое окно запроса содержит текст HelpMessage. |
| Обязательный (именованный) | Тип: bool; Значение по умолчанию: $false Этот аргумент указывает, является ли параметр обязательным в заданном наборе параметров (см. аргумент ParameterSetName ниже). Значение $true указывает, что это так. Значение $false указывает, что это не так. param ( [Параметр(Обязательный = $true)] Windows PowerShell: если обязательный параметр не указан, среда выполнения запрашивает пользователю значение параметра. Диалоговое окно запроса содержит текст HelpMessage, если таковой имеется. |
| ParameterSetName (с именем) | Тип: строка; Значение по умолчанию: "__AllParameterSets" Можно написать одну функцию или командлет, которые могут выполнять различные действия для разных сценариев. Это делается путем предоставления различных групп параметров в зависимости от действия, который он хочет предпринять. Такие группировки параметров называются наборами параметров . Аргумент ParameterSetName указывает параметр, к которому принадлежит параметр. Это означает, что каждый набор параметров должен иметь один уникальный параметр, который не является членом любого другого набора параметров. Для параметров, принадлежащих нескольким наборам параметров, добавьте атрибут параметра для каждого набора параметров. Это позволяет определить параметр по-разному для каждого набора параметров. Набор параметров, содержащий несколько позиционных параметров, должен определять уникальные позиции для каждого параметра. Нет двух позиционных параметров, которые могут указывать одну и ту же позицию. Если для параметра не указан набор параметров, параметр принадлежит всем наборам параметров. При определении нескольких наборов параметров используется именованный аргумент DefaultParameterSetName атрибута CmdletBinding ([§12.3.5][§12.3.5]) для указания набора параметров по умолчанию. Среда выполнения использует набор параметров по умолчанию, если он не может определить набор параметров, используемый на основе сведений, предоставленных командой, или вызывает исключение, если набор параметров по умолчанию не указан. В следующем примере показан тест функции с объявлением параметров двух параметров, принадлежащих двум разным наборам параметров, и третий параметр, принадлежащий обоим наборам: param ( [Параметр(Обязательный = $true; [Параметр(Обязательный = $true); [Параметр(Обязательный = $true); if ($PSCmdlet.ParameterSetName -eq "Computer") elseif ($PSCmdlet.ParameterSetName -eq "Пользователь") Тестирование -ComputerName "Марс", Венера" -SharedParam 10 |
| Должность (названная) | Тип: int Этот аргумент указывает положение параметра в списке аргументов. Если этот аргумент не указан, имя параметра или его псевдоним необходимо указать явным образом при установке параметра. Если ни один из параметров функции не имеет позиций, позиции назначаются каждому параметру в зависимости от порядка их получения. В следующем примере показано объявление параметра, значение которого должно быть указано в качестве первого аргумента при вызове функции. параметр ( [Параметр(Позиция = 0)] |
| ValueFromPipeline (с именованным параметром) | Тип: bool; Значение по умолчанию: $false Этот аргумент указывает, принимает ли параметр входные данные из объекта конвейера. Значение $true указывает, что так оно и есть. Значение $false указывает, что это не так. Укажите $true, если функция или командлет обращается к полному объекту, а не только к свойству объекта. Только один параметр в наборе параметров может объявлять ValueFromPipeline как $true. В следующем примере показано объявление обязательного параметра $ComputerName, который принимает входной объект, передаваемый функции из конвейера. param ( [Параметр(Обязательный = $true; Пример использования этого параметра в сочетании с атрибутом Alias см. в разделе [§12.3.1][§12.3.1]. |
| ValueFromPipelineByPropertyName (именованный) | Тип: bool; Значение по умолчанию: $false Этот аргумент указывает, принимает ли параметр значение из свойства объекта конвейера, имеющего то же имя или тот же псевдоним, что и этот параметр. Значение $true указывает, что так оно и есть. Значение $false указывает, что это не так. Укажите $true, если заданы следующие условия: параметр обращается к свойству объекта, переданного по каналу, а свойство имеет то же имя, что и параметр, или свойство имеет тот же псевдоним, что и параметр. Параметр, у которого свойство ValueFromPipelineByPropertyName установлено в $true, не обязательно должен иметь параметр в том же наборе с свойством ValueFromPipeline, установленным в $true. Если функция имеет параметр $ComputerName, а объект с конвейером имеет свойство ComputerName, значение свойства ComputerName назначается параметру $ComputerName функции: param ( [Параметр(Обязательный = $true; Несколько параметров в наборе параметров могут определять значение ValueFromPipelineByPropertyName как $true. Хотя один входной объект не может быть привязан к нескольким параметрам, разные свойства в этом входном объекте могут быть привязаны к разным параметрам. При привязке параметра со свойством входного объекта среда выполнения сначала ищет свойство с тем же именем, что и параметр. Если такое свойство не существует, среда выполнения ищет псевдонимы этого параметра в порядке объявления, выбрав первый такой псевдоним, для которого существует свойство. функция Process-Date [Parameter(ValueFromPipelineByPropertyName=$true)] [Parameter(ValueFromPipelineByPropertyName=$true)] процесс { ... } |
| ValueFromRemainingArguments (именованный) | Тип: bool; Значение по умолчанию: $false Этот аргумент указывает, принимает ли параметр все остальные аргументы, которые не привязаны к параметрам функции. Значение $true указывает, что так оно и есть. Значение $false указывает, что это не так. В следующем примере показан параметр $Others, который принимает все остальные аргументы входного объекта, передаваемого в тест функции: param ( [Parameter(Обязательный = $true)][int] $p 1, Тест 10 20 # $Others имеет длину 0 |
Реализация также может определять другие атрибуты.
Также предоставляются следующие атрибуты:
- HelpMessageBaseName: указывает расположение, в котором находятся идентификаторы ресурсов. Например, этот параметр может указать сборку ресурсов, содержащую сообщения помощи, которые должны быть локализованы.
- HelpMessageResourceId: указывает идентификатор ресурса для сообщения справки.
12.3.8 Атрибут PSDefaultValue
Этот атрибут используется внутри параметра скрипта для предоставления дополнительных сведений о параметре. Атрибут используется в определенной реализации. Для определения характеристик параметра используются следующие аргументы:
| Имя параметра | назначение |
|---|---|
| Справка (с названием) | Тип: строка Этот аргумент указывает сообщение, которое должно содержать краткое описание значения по умолчанию параметра. Это сообщение используется способом, определяемым реализацией. Windows PowerShell: сообщение используется в рамках описания параметра для раздела справки, отображаемого командлетом [Get-Help](xref:Microsoft.PowerShell.Core.Get-Help) . |
| Значение (именованное) | Тип: объект Этот аргумент указывает значение, которое должно быть значением по умолчанию параметра. Значение используется в определяемом реализацией способе. Windows PowerShell: значение используется в рамках описания параметра для раздела справки, отображаемого командлетом [Get-Help](xref:Microsoft.PowerShell.Core.Get-Help), если свойство справки не указано. |
12.3.9 Атрибут SupportsWildcards
Этот атрибут используется внутри параметра скрипта для предоставления дополнительных сведений о параметре. Атрибут используется в определенной реализации.
Этот атрибут используется как часть описания параметра для раздела справки, отображаемого командлетом Get-Help.
12.3.10 Атрибут ValidateCount
Этот атрибут используется в параметре скрипта, чтобы указать минимальное и максимальное количество значений аргументов, которые может принимать параметр. Для определения характеристик параметра используются следующие аргументы:
| Имя параметра | назначение |
|---|---|
| MinLength (позиция 0) | Тип: int Этот аргумент указывает минимальное число допустимых значений аргументов. |
| MaxLength (позиция 1) | Тип: int Этот аргумент указывает максимально допустимое число значений аргументов. |
В отсутствие этого атрибута соответствующий список аргументов параметра может иметь любую длину.
Рассмотрим тест вызова функции, имеющий следующий блок парам, и который вызывается, как показано ниже.
param (
[ValidateCount(2, 5)]
[int[]] $Values
)
Temp 10, 20, 30
Temp 10 # too few argument values
Temp 10, 20, 30, 40, 50, 60 # too many argument values
[ValidateCount(3, 4)]$Array = 1..3
$Array = 10 # too few argument values
$Array = 1..100 # too many argument values
12.3.11 Атрибут ValidateLength
Этот атрибут используется в параметре скрипта или переменной , чтобы указать минимальную и максимальную длину аргумента параметра, которая должна иметь строку типа. Для определения характеристик параметра используются следующие аргументы:
| Имя параметра | назначение |
|---|---|
| MinLength (позиция 0) | Тип: int Этот аргумент указывает минимальное число допустимых символов. |
| MaxLength (позиция 1) | Тип: int Этот аргумент указывает максимально допустимое число символов. |
В отсутствие этого атрибута соответствующий аргумент параметра может иметь любую длину.
Рассмотрим тест вызова функции, имеющий следующий блок парам, и который вызывается, как показано ниже.
param ( [Parameter(Mandatory = $true)]
[ValidateLength(3,6)]
[string[]] $ComputerName )
Test "Thor","Mars" # length is ok
Test "Io","Mars" # "Io" is too short
Test "Thor","Jupiter" # "Jupiter" is too long
12.3.12 Атрибут ValidateNotNull
Этот атрибут используется в script-parameter или переменной, чтобы указать, что аргумент параметра не может быть $null или коллекцией, содержащей элемент с нулевым значением.
Рассмотрим вызов функции Test со следующим блоком параметров, который вызывается как 'shown'.
param (
[ValidateNotNull()]
[string[]] $Names
)
Test "Jack", "Jill" # ok
Test "Jane", $null # $null array element value not allowed
Test $null # null array not allowed
[ValidateNotNull()]$Name = "Jack" # ok
$Name = $null # null value not allowed
12.3.13 Атрибут ValidateNotNullOrEmpty
Этот атрибут используется в параметре скрипта или переменной , чтобы указать, что аргумент параметра не может быть $null, пустой строкой, пустым массивом или коллекцией, содержащей элемент со значением $null или пустой строкой.
Рассмотрим вызов функции Test со следующим блоком param, который вызывается следующим образом:
param (
[ValidateNotNullOrEmpty()]
[string[]] $Names
)
Test "Jack", "Jill" # ok
Test "Mary", "" # empty string not allowed
Test "Jane", $null # $null array element value not allowed
Test $null # null array not allowed
Test @() # empty array not allowed
[ValidateNotNullOrEmpty()]$Name = "Jack" # ok
$Name = "" # empty string not allowed
$Name = $null # null value not allowed
12.3.14 Атрибут ValidatePattern
Этот атрибут используется в параметре скрипта или переменной для указания регулярного выражения для сопоставления шаблона аргумента параметра. Для определения характеристик параметра используются следующие аргументы:
| Имя параметра | назначение |
|---|---|
| RegexString (позиция 0) | Тип: Строка Регулярное выражение, используемое для проверки аргумента параметра |
| Параметры (именованные) | Тип: Обычный-Expression-Option См. раздел [§4.2.6.4][§4.2.6.4] для получения информации о допустимых значениях. |
Если аргумент является коллекцией, каждый элемент в коллекции должен соответствовать шаблону.
Рассмотрим вызов функции Test со следующим блоком param, который вызывается следующим образом:
param (
[ValidatePattern('\^[A-Z][1-5][0-9]$')]
[string] $Code,
[ValidatePattern('\^(0x|0X)([A-F]|[a-f]|[0-9])([A-F]|[a-f]|[0-9])$')]
[string] $HexNum,
[ValidatePattern('\^[+|-]?[1-9]$')]
[int] $Minimum
)
Test -C A12 # matches pattern
Test -C A63 # does not match pattern
Test -H 0x4f # matches pattern
Test -H "0XB2" # matches pattern
Test -H 0xK3 # does not match pattern
Test -M -4 # matches pattern
Test -M "+7" # matches pattern
Test -M -12 # matches pattern, but is too long
[ValidatePattern('\^[a-z][a-z0-9]\*$')]$ident = "abc"
$ident = "123" # does not match pattern
12.3.15 Атрибут ValidateRange
Этот атрибут используется в параметре скрипта или переменной для указания минимальных и максимальных значений аргумента параметра. Для определения характеристик параметра используются следующие аргументы:
| Имя параметра | назначение |
|---|---|
| MinRange (позиция 0) | Тип: объект Этот аргумент указывает минимально допустимое значение. |
| MaxRange (позиция 1) | Тип: объект Этот аргумент указывает максимально допустимое значение. |
В отсутствие этого атрибута ограничение диапазона отсутствует.
Рассмотрим вызов функции Test1 со следующим блоком param, который вызывается следующим образом:
param (
[Parameter(Mandatory = $true)]
[ValidateRange(1, 10)]
[int] $StartValue
)
Test1 2
Test1 -St 7
Test1 -3 # value is too small
Test1 12 # value is too large
Рассмотрим вызов функции Test2 со следующим блоком параметров и вызовами:
param (
[Parameter(Mandatory = $true)]
[ValidateRange("b", "f")]
[string] $Name
)
Test2 "Bravo" # ok
Test2 "Alpha" # value compares less than the minimum
Test2 "Hotel" # value compares greater than the maximum
Рассмотрим вызов функции Test3 со следующим блоком param, который вызывается следующим образом:
param (
[Parameter(Mandatory = $true)]
[ValidateRange(0.002, 0.003)]
[double] $Distance
)
Test3 0.002
Test3 0.0019 # value is too small
Test3 "0.005" # value is too large
[ValidateRange(13, 19)]$teenager = 15
$teenager = 20 # value is too large
12.3.16 Атрибут ValidateScript
Этот атрибут используется в качестве параметра скрипта или переменной , чтобы указать скрипт, который будет использоваться для проверки аргумента этого параметра.
Аргумент в позиции 1 — это скрипт-блок-выражение .
Рассмотрим вызов функции Test со следующим блоком param, который вызывается следующим образом:
param (
[Parameter(Mandatory = $true)]
[ValidateScript( { ($_ -ge 1 -and $_ -le 3) -or ($_ -ge 20) })]
[int] $Count
)
Test 2 # ok, valid value
Test 25 # ok, valid value
Test 5 # invalid value
Test 0 # invalid value
[ValidateScript({$_.Length --gt 7})]$password = "password" # ok
$password = "abc123" # invalid value
12.3.17 Атрибут ValidateSet
Этот атрибут используется в параметре скрипта
| Имя параметра | назначение |
|---|---|
| ValidValues (позиция 0) | Тип: string[] Набор допустимых значений. |
| IgnoreCase (именованный) | Тип: bool; Значение по умолчанию: $true Указывает, следует ли игнорировать регистр для параметров типа строка. |
Если параметр имеет тип массива, каждый элемент соответствующего массива аргументов должен соответствовать элементу набора значений.
Рассмотрим вызов функции Test со следующим блоком param, который вызывается следующим образом:
param ( [ValidateSet("Red", "Green", "Blue")]
[string] $Color,
[ValidateSet("up", "down", "left", "right", IgnoreCase =
$false)]
[string] $Direction
)
Test -Col "RED" # case is ignored, is a member of the set
Test -Col "white" # case is ignored, is not a member of the set
Test -Dir "up" # case is not ignored, is a member of the set
Test -Dir "Up" # case is not ignored, is not a member of the set
[ValidateSet(("Red", "Green", "Blue")]$color = "RED" # ok, case is ignored
$color = "Purple" # case is ignored, is not a member of the set