Sdílet prostřednictvím


12. Atributy

Redakční poznámka

Důležitý

specifikace jazyka Windows PowerShell 3.0 byla publikována v prosinci 2012 a je založená na prostředí Windows PowerShell 3.0. Tato specifikace neodráží aktuální stav PowerShellu. Tato dokumentace se neplánuje aktualizovat tak, aby odrážela aktuální stav. Tato dokumentace je zde uvedena pro historické reference.

Dokument specifikace je k dispozici jako dokument aplikace Microsoft Word z webu Microsoft Download Center na adrese: https://www.microsoft.com/download/details.aspx?id=36389 Dokument aplikace Word byl převeden pro prezentaci zde na webu Microsoft Learn. Během převodu byly provedeny některé redakční změny tak, aby vyhovovaly formátování pro platformu Docs. Některé překlepy a menší chyby byly opraveny.

Atribut objekt přidruží předdefinované systémové informace k cílovému prvku , kterým může být parametrický blok nebo parametr (§8.10). Každý objekt atributu má typ atributu .

Informace poskytované atributem se také označují jako metadata . Metadata mohou být zkoumána příkazem nebo spouštěcím prostředím a řídit, jak příkaz zpracovává data, nebo před spuštěním externími nástroji k řízení způsobu zpracování nebo údržby samotného příkazu.

Na stejný cílový prvek lze použít více atributů.

Specifikace atributu 12.1

Spropitné

Zápis ~opt~ 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 nějaké) předchází pojmenované argumenty. Pojmenovaný argument se skládá z jednoduchého názvu, volitelně následovaného rovnítkem a za ním výrazem . Pokud je výraz vynechán, předpokládá se hodnota $true.

název atributu je rezervovaný typ atributu (§12.3) nebo určitý typ atributu definovaný implementací.

12.2 Instancí atributů

Instance atributu je objekt typu atributu. Instance představuje atribut během běhu programu.

Chcete-li vytvořit objekt některého typu atributu , 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. Například

[A(10,IgnoreCase=$true)]

zobrazuje instanci typu A vytvářenou 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 je možné 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 parametru. Parametr může mít více aliasů a každý název aliasu musí být jedinečný v seznamu parametrů. Jedním z možných použití je mít různé názvy parametru v různých sadách parametrů (viz ParameterSetName).

Argument atributu má typ string[].

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

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í funkce Test2, které má následující blok param a který se volá, jak je znázorněno:

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

Cmdlet Get-ChildItem (alias dir) přidává k objektu, který vrací, novou vlastnost NoteProperty typu string, nazývanou PSPath.

12.3.2 Atribut AllowEmptyCollection

Tento atribut se používá v script-parameter k povolení prázdné kolekce jako argumentu povinného parametru.

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

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 script-parameter k povolení prázdného řetězce jako argumentu povinného parametru.

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

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

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

Zvažte volání funkce Test, které má následující blok parametrů a které se volá, jak je znázorněno:

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 nepotřebuje tento atribut; již existuje implicitní převod z $null na int.

12.3.5 Atribut CmdletBinding

Tento atribut je určen k použití v seznamu atributů a parametrovém bloku funkce k označení, že funkce funguje podobně jako cmdlet. Konkrétně umožňuje funkcím přistupovat k řadě metod a vlastností prostřednictvím proměnné $PSCmdlet pomocí počátečního, procesního a koncového pojmenovaného bloku (§8.10.7).

Pokud je tento atribut k dispozici, poziční argumenty, které nemají žádné odpovídající poziční parametry, způsobí selhání vazby parametrů a $args není definován. (Bez tohoto atributu by $args přebíraly všechny nepřiřazené hodnoty pozičních argumentů.)

K definování charakteristik parametru se používají následující argumenty:

název parametru Účel
SupportsShouldProcess (pojmenovaný)

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 odeslání zpětné vazby před provedením změny v systému. Hodnota $true označuje, že to dělá. Hodnota $false značí, že ne.

ConfirmImpact (pojmenovaný)

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 argument ConfirmImpact je větší nebo roven hodnotě proměnné předvolby $ConfirmPreference.

Možné hodnoty tohoto argumentu jsou:

Žádné potvrzení: Potlačit všechny žádosti o potvrzení.

Nízká: Provedená akce má nízké riziko ztráty dat.

Střední: Provedená akce má střední riziko ztráty dat.

Vysoká: Provedená akce má vysoké riziko ztráty dat.

Hodnotu $ConfirmPreference lze nastavit tak, aby o potvrzení mohly požádat pouze příkazy cmdlet se stejnou nebo vyšší úrovní dopadu před tím, než provedou svou operaci. Pokud je například "$ConfirmPreference" nastavená na střední úroveň, mohou "cmdlety" se střední nebo vysokou úrovní dopadu žádat o potvrzení. Požadavky z cmdletů s nízkou úrovní dopadu jsou potlačeny.

DefaultParameterSetName (pojmenovaný)

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

Určuje sadu parametrů, která se má použít, pokud nelze určit z argumentů. Viz pojmenovaný argument ParameterSetName v parametru atributu ([§12.3.7][§12.3.7]).

PositionalBinding (pojmenovaný)

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

Určuje, jestli je poziční vazba podporovaná nebo ne. Hodnota tohoto argumentu se ignoruje, pokud některé parametry specifikují nenastavené hodnoty pro buďto pojmenovaný argument Position, nebo pojmenovaný argument ParameterSetName v atributu Parametr ([§12.3.7]). Pokud je argument $false pak nejsou žádné parametry poziční, jinak jsou parametry přiřazeny pozici na základě pořadí, ve které jsou parametry zadány.

Tady je příklad architektury 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ů attribute-list uvnitř param-block k určení vrácených typů. K definování charakteristik parametru se používají následující argumenty:

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

Typ: string[] nebo pole literálů typu

Seznam typů vrácených hodnot.

ParameterSetName (pojmenovaný)

Typ: string[]

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

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á v script-parametru. K definování charakteristik parametru se používají následující pojmenované argumenty:

parameter Účel
HelpMessage (pojmenovaný)

Typ: řetězec

Tento argument určuje zprávu, která má obsahovat krátký popis parametru. Tato zpráva se používá způsobem definovaným implementací, pokud je funkce nebo rutina spuštěna, ale povinný parametr, který má HelpMessage nemá odpovídající argument.

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

param ( [Parameter(Mandatory = $true;
HelpMessage = "Pole názvů počítačů.")]
[řetězec[]] $ComputerName )

Windows PowerShell: Pokud není zadaný povinný parametr, 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, jestli je parametr povinný v dané sadě parametrů (viz níže uvedený argument ParameterSetName). Hodnota $true označuje, že tomu tak je. Hodnota $false označuje, že není.

param ( [Parameter(Mandatory = $true)]
[řetězec[]] $ComputerName )

Windows PowerShell: Pokud není zadaný povinný parametr, modul runtime vyzve uživatele k zadání hodnoty parametru. Dialogové okno výzvy obsahuje text HelpMessage( pokud existuje).

ParameterSetName (pojmenovaný)

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

Pro různé scénáře je možné napsat jednu funkci nebo rutinu, která může provádět různé akce. Provede to tak, že zobrazí různé skupiny parametrů v závislosti na akci, kterou chce provést. Takové seskupení parametrů se nazývají sady parametrů.

Argument ParameterSetName určuje parametr, do kterého 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 Parameter pro každou sadu parametrů. To umožňuje definovat parametr odlišně pro každou sadu parametrů.

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čit stejnou pozici.

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

Pokud je definováno více sad parametrů, pojmenovaný argument DefaultParameterSetName atributu CmdletBinding ([§12.3.5][§12.3.5]) slouží k určení výchozí sady parametrů. Modul runtime používá výchozí sadu parametrů, pokud nemůže určit sadu parametrů, která se má použít na základě informací poskytovaných příkazem, nebo vyvolá výjimku, pokud nebyla zadána žádná výchozí sada parametrů.

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

param ( [Parameter(Mandatory = $true;
ParameterSetName = "Computer")]
[řetězec[]] $ComputerName,

[Parametr(Povinné = $true,
ParameterSetName = "User")]
[řetězec[]] $UserName,

[Parametr(Povinné = $true,
ParameterSetName = "Computer")]
[Parameter(ParameterSetName = "User")]
[int] $SharedParam = 5 )

if ($PSCmdlet.ParameterSetName -eq "Computer")
{
# zpracovat sadu parametrů "Computer"
}

elseif ($PSCmdlet.ParameterSetName -eq "User")
{
# zpracovat "User" sadu parametrů
}

}

Test -ComputerName "Mars","Venus" -SharedParam 10
Test -UserName "Mary","Jack"
Test -UserName "Mary","Jack" -SharedParam 20

Pozice (pojmenovaná)

Typ: int

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

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

param ( [Parameter(Position = 0)]
[řetězec[]] $ComputerName )

ValueFromPipeline (pojmenovaný)

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 to dělá. Hodnota $false označuje, že ne.

Zadejte $true, pokud funkce nebo rutina přistupují k úplnému objektu, nejen k vlastnosti objektu.

Jako $true může deklarovat hodnotu ValueFromPipeline 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 ( [Parameter(Mandatory = $true;
ValueFromPipeline=$true)]
[řetězec[]] $ComputerName )

Příklad použití tohoto parametru ve spojení s atributem Alias viz [§12.3.1][§12.3.1].

ValueFromPipelineByPropertyName (pojmenováno)

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

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

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

Parametr s nastavením ValueFromPipelineByPropertyName na $true nemusí mít v rámci stejné sady parametr s nastavením ValueFromPipeline na $true.

Pokud má funkce parametr $ComputerName a piped objekt má vlastnost ComputerName, hodnota vlastnosti ComputerName je přiřazena k parametru $ComputerName funkce.

param ( [Parameter(Mandatory = $true;
ValueFromPipelineByPropertyName = $true)]
[řetězec[]] $ComputerName )

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

Při vytváření vazby parametru s vlastností vstupního objektu prostředí runtime nejprve vyhledá vlastnost se stejným názvem jako parametr.  Pokud taková vlastnost neexistuje, prostředí runtime hledá aliasy pro tento parametr v jejich pořadí deklarací, přičemž vybere první takový alias, pro který vlastnost existuje.

funkce Process-Date
{
param(
[Parameter(ValueFromPipelineByPropertyName=$true)]
[int]$Rok,

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

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

process { ... }
}

Get-Date | Process-Date

ValueFromRemainingArguments (pojmenovaný)

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

Tento argument určuje, zda parametr přijímá všechny zbývající argumenty, které nejsou vázány na parametry funkce. Hodnota $true označuje, že to dělá. Hodnota $false označuje, že ne.

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 funkci Test:

param ( [Parameter(Mandatory = $true)][int] $p 1;
[Parameter(Povinný = $true)][int] $p 2,
[Parameter(ValueFromRemainingArguments = $true)]
[řetězec[]] $Others )

Test 10 20 # $Others má délku 0
Test 10 20 30 40 # $Others má délku 2, hodnotu 30 40

Implementace může také definovat další atributy.

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

  • HelpMessageBaseName: Určuje umístění, kde se nacházejí identifikátory prostředků. Tento parametr může například zadat sestavení prostředků, které obsahuje nápovědní zprávy určené k lokalizaci.
  • HelpMessageResourceId: Určuje identifikátor prostředku pro zprávu nápovědy.

12.3.8 Atribut PSDefaultValue

Tento atribut se používá v parametru skriptu k poskytnutí dalších informací o parametru. Atribut se používá definovaným způsobem implementace. K definování charakteristik parametru se používají následující argumenty:

název parametru Účel
Nápověda (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á způsobem definovaným implementací.

Windows PowerShell: Zpráva se používá jako součást popisu parametru tématu nápovědy zobrazeného rutinou [Get-Help](xref:Microsoft.PowerShell.Core.Get-Help).

Hodnota (pojmenovaná)

Typ: objekt

Tento argument určuje hodnotu, která má být výchozí hodnotou parametru. Hodnota se používá způsobem definovaným implementací.

Windows PowerShell: Hodnota se používá jako součást popisu parametru tématu nápovědy zobrazeného rutinou [Get-Help](xref:Microsoft.PowerShell.Core.Get-Help), pokud není zadána vlastnost Nápověda.

12.3.9 Atribut *SupportsWildcards*

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

Tento atribut se používá jako součást popisu parametru tématu nápovědy zobrazeného rutinou 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é parametr může přijmout. K definování charakteristik parametru se používají následující argumenty:

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ů.

Pokud tento atribut chybí, může mít odpovídající seznam hodnot argumentů parametru libovolnou délku.

Zvažte volání funkce Test, které má následující blok parametrů a které se volá, jak je znázorněno:

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 proměnné k určení minimální a maximální délky argumentu parametru, který musí obsahovat řetězec typu. K definování charakteristik parametru se používají následující argumenty:

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ů.

Pokud tento atribut chybí, může mít odpovídající argument parametru libovolnou délku.

Zvažte volání funkce Test, které má následující blok parametrů a které se volá, jak je znázorněno:

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 parametru skriptu nebo proměnné k určení, že argument parametru nemůže být $null nebo kolekce obsahující prvek s hodnotou null.

Zvažte volání funkce Test, které má následující blok parametrů a které je voláno jako "znázorněno":

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 parametru skriptu nebo proměnné k určení, že argument nemůže být $null, prázdný řetězec, prázdné pole ani kolekce obsahující prvek s hodnotou $null nebo prázdného řetězce.

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

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 proměnné k určení regulárního výrazu pro porovnávání vzoru argumentu parametru. K definování charakteristik parametru se používají následující argumenty:

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

Typ: Řetězec

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

Možnosti (pojmenované)

Typ: Možnosti regulárních výrazů

Viz [§4.2.6.4][§4.2.6.4] pro povolené hodnoty.

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

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

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 proměnné k určení minimální a maximální hodnoty argumentu parametru. K definování charakteristik parametru se používají následující argumenty:

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

Typ: objekt

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

MaxRange (pozice 1)

Typ: objekt

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

Bez tohoto atributu neexistuje žádné omezení rozsahu.

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

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í parametrický blok 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í funkce Test3, které má následující blok param a který se volá, jak je znázorněno:

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 parametru skriptu nebo proměnné k určení skriptu, který se má použít k ověření argumentu parametru.

Argument na pozici 1 je výraz typu script-block-expression .

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

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 script-parametru nebo proměnné k určení sady platných hodnot pro argument parametru. K definování charakteristik parametru se používají následující argumenty:

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

Typ: string[]

Sada platných hodnot.

IgnoreCase (pojmenované)

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

Určuje, zda má být velká a malá písmena ignorována pro parametry typu řetězec.

Pokud má parametr typ pole, musí každý prvek odpovídající pole argumentu odpovídat prvku sady hodnot.

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

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