12. atributů

Objekt atributu přidruží předdefinované systémové informace k cílovému prvku, který může být blok param nebo parametrem (§ 8,10). Každý objekt atributu má typ atributu.

Informace poskytované atributem se také označují jako metadata. Metadata lze prozkoumat příkazem nebo spouštěcím prostředím a řídit tak, jak příkaz zpracovává data nebo před spuštěním pomocí externích nástrojů k řízení toho, jak je samotný příkaz zpracován nebo udržován.

U stejného cílového prvku lze použít více atributů.

specifikace atributu 12,1

Tip

~opt~Zápis v definicích syntaxe označuje, že lexikální entita je v syntaxi nepovinná.

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

Atribut se skládá z názvu atributu a volitelného seznamu pozičních a pojmenovaných argumentů. Poziční argumenty (pokud existují) předcházejí pojmenované argumenty. Pojmenovaný argument se skládá z jednoduchého názvu, volitelně následovaný rovnítkem a následovaný výrazem. Pokud je výraz vynechán, hodnota $true se předpokládá.

Atribut Name je rezervovaný typ atributu (§ 12,3) nebo nějaký typ atributu definovaný implementací.

instance atributů 12,2

Instance atributu je objekt typu atributu. Instance představuje atribut v době běhu.

Chcete-li vytvořit objekt některého typu atributu a, použijte zápis A() . Atribut je deklarován uzavřením jeho instance uvnitř [] , jako v [A()] . Některé typy atributů mají poziční a pojmenované parametry (§ 8,14), stejně jako funkce a rutiny. Třeba

[A(10,IgnoreCase=$true)]

zobrazuje instanci typu A , která je vytvořena pomocí pozičního parametru, jehož hodnota argumentu je 10, a pojmenovaný parametr, IgnoreCase, jehož hodnota argumentu je $true .

12,3 rezervované atributy

Atributy popsané v následujících částech se dají použít k rozšíření nebo úpravě chování funkcí PowerShellu, filtrů, skriptů a rutin.

12.3.1 atribut alias

Tento atribut se používá v parametru skriptu k určení alternativního názvu pro parametr. Parametr může mít několik aliasů a každý název aliasu musí být v rámci seznamu parametrů jedinečný. Jedním z možných použití je mít různé názvy pro parametr v různých sadách parametrů (viz ParameterSetName).

Argument atributu má typ String [].

Zvažte volání Test1 funkce, které má následující blok param a který je volán tak, jak je znázorněno níže:

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

Zvažte volání Test2 funkce, které má následující blok param a který je volán tak, jak je znázorněno níže:

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

Rutina Get-ChildItem (alias Dir ) přičítá k objektu, který vrací nový NoteProperty typu string s názvem PSPath.

12.3.2 atribut AllowEmptyCollection

Tento atribut se používá v parametru skriptu pro povolení prázdné kolekce jako argument povinného parametru.

Zvažte volání Test funkce, které má následující blok param a který je volán tak, jak je znázorněno níže:

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 atribut AllowEmptyString

Tento atribut se používá v parametru skriptu pro povolení prázdného řetězce jako argument povinného parametru.

Zvažte volání Test funkce, které má následující blok param a který je volán tak, jak je znázorněno níže:

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 atribut AllowNull má

Tento atribut se používá v parametru skriptu pro povolení $null jako argument povinného parametru, pro který není k dispozici žádný implicitní převod.

Zvažte test volání funkce, který má následující blok param a který je volán tak, jak je znázorněno níže:

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

Všimněte si, že druhý výše uvedený případ tento atribut nepotřebuje; implicitní převod z $null na typ int již existuje.

12.3.5 atribut CmdletBinding

Tento atribut se používá v seznamu atributů bloku funkce k označení toho, že funkce funguje podobně jako rutina. Konkrétně umožňuje funkcím přístup k několika metodám a vlastnostem prostřednictvím proměnné $PsCmdlet pomocí rozhraní Begin, Process a koncových pojmenovaných bloků (§ 8.10.7).

Pokud je tento atribut přítomen, Poziční argumenty, které nemají odpovídající poziční parametry, způsobují neúspěch vazby parametru a $args nejsou definovány. (Bez tohoto atributu $args by převzaly jakékoli hodnoty pozičních argumentů, které se neshodují.)

Následující argumenty slouží k definování charakteristik parametru:

Název parametru Účel
SupportsShouldProcess (s názvem)

Typ: bool; Výchozí hodnota: $false

Určuje, zda funkce podporuje volání metody ShouldProcess, která se používá k zobrazení výzvy uživateli k zadání zpětné vazby předtím, než funkce změní systém. Hodnota $true označuje, že má. Hodnota $false označuje, že ne.

ConfirmImpact (s názvem)

Typ: řetězec; Výchozí hodnota: "střední"

Určuje úroveň dopadu provedené akce. Volání metody ShouldProcess zobrazí výzvu k potvrzení pouze v případě, že je argument ConfirmImpact větší nebo roven hodnotě proměnné předvolby $ConfirmPreference.

Možné hodnoty tohoto argumentu jsou:

Žádné: potlačí všechny požadavky na potvrzení.

Nízká: prováděná akce má nízké riziko ztráty dat.

Střední: prováděná akce má středně rizikové riziko ztráty dat.

Vysoká: prováděná akce má vysoké riziko ztráty dat.

Hodnota $ConfirmPreference může být nastavena tak, aby bylo možné potvrdit pouze rutiny se stejnou nebo vyšší úrovní dopadu, než budou moci provést jejich provoz. Například pokud je $ConfirmPreference nastavené na střední, můžou rutiny se střední nebo vysokou úrovní dopadu požádat o potvrzení. Žádosti z rutin s nízkou úrovní dopadu jsou potlačeny.

DefaultParameterSetName (s názvem)

Typ: řetězec; Výchozí hodnota: "__AllParameterSets"

Určuje parametr nastavený pro použití, pokud nelze určit z argumentů. Podívejte se na pojmenovaný argument ParameterSetName v parametru atributu ([§ 12.3.7] [§ 12.3.7]).

PositionalBinding (s názvem)

Typ: bool; Výchozí hodnota: $true

Určuje, jestli je podporovaná pozice vazby. Hodnota tohoto argumentu je ignorována, pokud některé parametry určují jiné než výchozí hodnoty buď pro umístění pojmenovaného argumentu, nebo pro pojmenovaný argument ParameterSetName v parametru atributu ([§ 12.3.7] [§ 12.3.7]). V opačném případě, pokud je argument $false, žádné parametry nejsou pozice, jinak jsou k těmto parametrům přiřazeny pozice v závislosti na pořadí, ve kterém jsou parametry zadány.

Tady je příklad rozhraní pro použití tohoto atributu:

[CmdletBinding(SupportsShouldProcess = $true, ConfirmImpact = "Low")]
param ( ... )

begin { ... }
Get-process { ... }
end { ... }

12.3.6 atribut OutputType

Tento atribut se používá v seznamu atributů- bloku param pro určení vrácených typů. Následující argumenty slouží k definování charakteristik parametru:

Název parametru Účel
Typ (pozice 0)

Typ: String [] nebo pole typů literálů

Seznam typů vrácených hodnot.

ParameterSetName (s názvem)

Typ: String []

Určuje sady parametrů, které vracejí typy označené odpovídajícími prvky parametru typu.

Tady je několik příkladů použití tohoto atributu:

[OutputType([int])] param ( ... )
[OutputType("double")] param ( ... )
[OutputType("string","string")] param ( ... )

12.3.7 atribut parametru

Tento atribut se používá ve parametrech skriptu. Následující pojmenované argumenty slouží k definování charakteristik parametru:

Parametr Účel
HelpMessage (s názvem)

Typ: řetězec

Tento argument určuje zprávu, která by měla obsahovat krátký popis parametru. Tato zpráva se používá v uživatelsky definovaném způsobu implementace, pokud se funkce nebo rutina spustí, ale povinný parametr, který má HelpMessage, nemá odpovídající argument.

Následující příklad ukazuje deklaraci parametru, která poskytuje popis parametru.

param ([parametr (povinný = $true,
HelpMessage = "pole názvů počítačů.")]
[String []] $ComputerName)

Windows PowerShell: není-li požadovaný parametr zadán, modul runtime vyzve uživatele k zadání hodnoty parametru. Dialogové okno výzvy obsahuje text HelpMessage.

Povinná (pojmenovaná)

Typ: bool; Výchozí hodnota: $false

Tento argument určuje, zda je parametr v dané sadě parametrů vyžadován (viz ParameterSetName argument níže). Hodnota $true označuje, že je. Hodnota $false označuje, že není.

param ([parametr (povinný = $true)]
[String []] $ComputerName)

Windows PowerShell: není-li požadovaný parametr zadán, modul runtime vyzve uživatele k zadání hodnoty parametru. Dialogové okno výzvy obsahuje text HelpMessage, pokud existuje.

ParameterSetName (s názvem)

Typ: řetězec; Výchozí hodnota: "__AllParameterSets"

Je možné napsat jednu funkci nebo rutinu, která může provádět různé akce v různých scénářích. Vystavuje různé skupiny parametrů v závislosti na akci, kterou chce provést. Tyto skupiny parametrů se nazývají sady parametrů.

Argument ParameterSetName určuje sadu parametrů, do které parametr patří. Toto chování znamená, že každá sada parametrů musí mít jeden jedinečný parametr, který není členem žádné jiné sady parametrů.

Pro parametry, které patří do více sad parametrů, přidejte atribut parametru pro každou sadu parametrů. To umožňuje, aby byl parametr pro každou sadu parametrů definován odlišně.

Sada parametrů, která obsahuje více pozičních parametrů, musí definovat jedinečné pozice pro každý parametr. Žádné dva poziční parametry nemohou určovat stejné umístění.

Pokud pro parametr není zadána žádná sada parametrů, parametr patří do všech sad parametrů.

Je-li definována více sad parametrů, je pro určení výchozí sady parametrů použit pojmenovaný argument DefaultParameterSetName atributu CmdletBinding ([§ 12.3.5] [§ 12.3.5]). Modul runtime používá výchozí sadu parametrů, pokud nemůže určit parametr nastavený na použití na základě informací poskytnutých příkazem nebo vyvolá výjimku, pokud nebyla zadána žádná výchozí sada parametrů.

Následující příklad ukazuje test funkce s deklarací parametru dvou parametrů, které patří do dvou různých sad parametrů, a třetí parametr, který patří do obou sad:

param ([parametr (povinný = $true,
ParameterSetName = "počítač")]
[String []] $ComputerName,

[Parametr (povinný = $true,
ParameterSetName = "uživatel")]
[String []] $UserName,

[Parametr (povinný = $true,
ParameterSetName = "počítač")]
[Parametr (ParameterSetName = "uživatel")]
[int] $SharedParam = 5)

if ($PsCmdlet. ParameterSetName-EQ "počítač")
{
# popisovač sady parametrů Computer
}

ElseIf ($PsCmdlet. ParameterSetName-EQ "uživatel")
{
# zpracovat sadu parametrů "User"
}

}

Test-ComputerName "Mars", "Venus"-SharedParam 10
Test-UserName "Marie", "zdířka"
Test-UserName "Mary", "zdířka"-SharedParam 20

Pozice (s názvem)

Typ: int

Tento argument určuje pozici parametru v seznamu argumentů. Pokud není tento argument zadán, musí být název parametru nebo jeho alias explicitně zadán, pokud je parametr nastaven. Pokud žádný z parametrů funkce nemá pozice, pozice jsou přiřazeny jednotlivým parametrům v závislosti na pořadí, ve kterém byly přijaty.

Následující příklad ukazuje deklaraci parametru, jehož hodnota musí být zadána jako první argument při volání funkce.

param ([parametr (pozice = 0)]
[String []] $ComputerName)

ValueFromPipeline (s názvem)

Typ: bool; Výchozí hodnota: $false

Tento argument určuje, zda parametr přijímá vstup z objektu kanálu. Hodnota $true označuje, že má. Hodnota $false označuje, že není.

Zadejte $true, pokud funkce nebo rutina přistupuje k kompletnímu objektu, nikoli pouze k vlastnosti objektu.

ValueFromPipeline jako $true může deklarovat pouze jeden parametr v sadě parametrů.

Následující příklad ukazuje deklaraci parametru povinného parametru $ComputerName, který přijímá vstupní objekt, který je předán funkci z kanálu.

param ([parametr (povinný = $true,
ValueFromPipeline = $true)]
[String []] $ComputerName)

Příklad použití tohoto parametru ve spojení s atributem alias naleznete v tématu [§ 12.3.1] [§ 12.3.1].

ValueFromPipelineByPropertyName (s názvem)

Typ: bool; Výchozí hodnota: $false

Tento argument určuje, zda parametr přebírá svou hodnotu z vlastnosti objektu kanálu, který má buď stejný název, nebo stejný alias jako tento parametr. Hodnota $true označuje, že má. Hodnota $false označuje, že není.

Zadejte $true, pokud jsou splněny následující podmínky: parametr přistupuje k vlastnosti objektu s kanálem a vlastnost má stejný název jako parametr nebo vlastnost má stejný alias jako parametr.

Parametr, který má ValueFromPipelineByPropertyName nastaveno na $true nemusí mít parametr ve stejné sadě s ValueFromPipeline nastavenou na $true.

Pokud má funkce $ComputerName parametr a objekt s předaným kanálem má vlastnost ComputerName, je hodnota vlastnosti ComputerName přiřazena k parametru $ComputerName funkce:

param ([parametr (povinný = $true,
ValueFromPipelineByPropertyName = $true)]
[String []] $ComputerName)

Více parametrů v sadě parametrů může definovat ValueFromPipelineByPropertyName jako $true. I když jeden vstupní objekt nelze svázat s více parametry, různé vlastnosti v tomto vstupním objektu mohou být vázány na různé parametry.

Při vázání parametru s vlastností vstupního objektu nejprve vyhledá běhové prostředí vlastnost se stejným názvem, jako má parametr. Pokud taková vlastnost neexistuje, běhové prostředí hledá aliasy pro daný parametr v pořadí deklarace, přičemž vybírá první alias, pro který vlastnost existuje.

Process-Date funkce
{
bajty
[Parametr (ValueFromPipelineByPropertyName = $true)]
[int] $Year,

[Parametr (ValueFromPipelineByPropertyName = $true)]
[int] $Month,

[Parametr (ValueFromPipelineByPropertyName = $true)]
[int] $Day
)

zpracovat {... }
}

Get-Date | Process-Date

ValueFromRemainingArguments (s názvem)

Typ: bool; Výchozí hodnota: $false

Tento argument určuje, zda parametr akceptuje všechny zbývající argumenty, které nejsou vázány na parametry funkce. Hodnota $true označuje, že má. Hodnota $false označuje, že není.

Následující příklad ukazuje parametr $others, který přijímá všechny zbývající argumenty vstupního objektu, který je předán testu funkce:

param ([Parameter (povinný = $true)] [int] $p 1,
[parametr (povinný = $true)] [int] $p 2,
[parametr (ValueFromRemainingArguments = $true)]
[String []] $others)

Test 10 20 # $others má délku 0
Test 10 20 30 40 # $others má délku 2, hodnota je 30, 40

Implementace může definovat i další atributy.

K dispozici jsou také následující atributy:

  • Hodnoty helpmessagebasename: Určuje umístění, kde se nacházejí identifikátory prostředků. Tento parametr například může určovat sestavení prostředků, které obsahuje zprávy s nápovědu, které mají být lokalizovány.
  • HelpMessageResourceId: Určuje identifikátor prostředku pro zprávu s nápovědu.

12.3.8 atribut PSDefaultValue

Tento atribut se používá v parametru skriptu k poskytnutí dalších informací o parametru. Atribut se používá v definovaném způsobu implementace. Následující argumenty slouží k definování charakteristik parametru:

Název parametru Účel
Help (pojmenovaná)

Typ: řetězec

Tento argument určuje zprávu, která má obsahovat krátký popis výchozí hodnoty parametru. Tato zpráva se používá v uživatelsky definovaném způsobu implementace.

Windows PowerShell: zpráva se používá jako součást popisu parametru pro téma nápovědy zobrazené pomocí rutiny [Get-help](xref:Microsoft.PowerShell.Core.Get-Help) .

Hodnota (pojmenovaná)

Typ: Object

Tento argument určuje hodnotu, která je určena jako výchozí hodnota parametru. Hodnota se používá v uživatelsky definovaném způsobu implementace.

Windows PowerShell: hodnota se používá jako součást popisu parametru pro téma nápovědy zobrazené pomocí rutiny [Get-help](xref:Microsoft.PowerShell.Core.Get-Help), když není zadaná vlastnost help.

12.3.9 atribut SupportsWildcards

Tento atribut se používá v parametru skriptu k poskytnutí dalších informací o parametru. Atribut se používá v definovaném způsobu implementace.

Tento atribut se používá jako součást popisu parametru pro téma nápovědy zobrazené pomocí rutiny Get-Help .

12.3.10 atribut ValidateCount

Tento atribut se používá v parametru skriptu k určení minimálního a maximálního počtu hodnot argumentů, které může parametr přijmout. Následující argumenty slouží k definování charakteristik parametru:

Název parametru Účel
MinLength (pozice 0)

Typ: int

Tento argument určuje minimální povolený počet hodnot argumentů.

MaxLength (pozice 1)

Typ: int

Tento argument určuje maximální povolený počet hodnot argumentů.

V případě absence tohoto atributu může být seznam hodnot odpovídajícího argumentu parametru libovolná délka.

Zvažte test volání funkce, který má následující blok param a který je volán tak, jak je znázorněno níže:

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 atribut ValidateLength

Tento atribut se používá v parametru skriptu nebo v proměnné k určení minimální a maximální délky argumentu parametru, který musí mít typ String. Následující argumenty slouží k definování charakteristik parametru:

Název parametru Účel
MinLength (pozice 0)

Typ: int

Tento argument určuje minimální povolený počet znaků.

MaxLength (pozice 1)

Typ: int

Tento argument určuje maximální povolený počet znaků.

V případě absence tohoto atributu může být odpovídající argument parametru libovolná délka.

Zvažte test volání funkce, který má následující blok param a který je volán tak, jak je znázorněno níže:

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 atribut ValidateNotNull

Tento atribut se používá v proměnné nebo parametru skriptu k určení, že argument parametru nemůže být $null nebo být kolekce obsahující element s hodnotou null.

Zvažte volání Test funkce, které má následující blok param a který se nazývá "zobrazeno:

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 atribut ValidateNotNullOrEmpty

Tento atribut se používá v parametrech skriptu nebo v proměnné pro určení, že argument nemůže být $null, prázdný řetězec nebo prázdné pole nebo kolekce obsahující $null nebo prázdný řetězec elementu.

Zvažte volání Test funkce, které má následující blok param a který je volán tak, jak je znázorněno níže:

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 atribut ValidatePattern

Tento atribut se používá v parametru skriptu nebo v proměnné k určení regulárního výrazu pro porovnání vzoru argumentu parametru. Následující argumenty slouží k definování charakteristik parametru:

Název parametru Účel
RegexString (pozice 0)

Typ: Řetězec

Regulární výraz, který se používá k ověření argumentu parametru

Možnosti (pojmenované)

Typ: Regular-Expression-Option

Povolené hodnoty naleznete v tématu [§ 4.2.6.4] [§ 4.2.6.4].

Pokud je argumentem kolekce, musí každý prvek v kolekci odpovídat vzoru.

Zvažte volání Test funkce, které má následující blok param a který je volán tak, jak je znázorněno níže:

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 atribut ValidateRange

Tento atribut se používá v parametru skriptu nebo v proměnné k určení minimální a maximální hodnoty argumentu parametru. Následující argumenty slouží k definování charakteristik parametru:

Název parametru Účel
MinRange (pozice 0)

Typ: Object

Tento argument určuje minimální povolenou hodnotu.

MaxRange (pozice 1)

Typ: Object

Tento argument určuje maximální povolenou hodnotu.

V případě absence tohoto atributu neexistuje žádné omezení rozsahu.

Zvažte volání Test1 funkce, které má následující blok param a který je volán tak, jak je znázorněno níže:

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

Zvažte volání funkce test2, která má následující blok parametrů a volání:

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

Zvažte volání Test3 funkce, které má následující blok param a který je volán tak, jak je znázorněno níže:

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 atribut ValidateScript

Tento atribut se používá v parametrech skriptu nebo v proměnné pro určení skriptu, který se má použít k ověření argumentu parametru.

Argument na pozici 1 je výraz bloku skriptu.

Zvažte volání Test funkce, které má následující blok param a který je volán tak, jak je znázorněno níže:

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 atribut ValidateSet

Tento atribut se používá v parametru skriptu nebo v proměnné pro určení sady platných hodnot pro argument parametru. Následující argumenty slouží k definování charakteristik parametru:

Název parametru Účel
ValidValues (pozice 0)

Typ: String []

Sada platných hodnot.

IgnoreCase (pojmenovaný)

Typ: bool; Výchozí hodnota: $true

Určuje, jestli se mají pro parametry řetězce typu ignorovat velká a malá písmena.

Pokud má parametr typ pole, musí se každý prvek odpovídajícího pole argumentů shodovat s prvkem sady hodnot.

Představte si volání funkce Test , které má následující blok param a který je volán, jak je znázorněno níže:

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