Observação
O acesso a essa página exige autorização. Você pode tentar entrar ou alterar diretórios.
O acesso a essa página exige autorização. Você pode tentar alterar os diretórios.
Um objeto de atributo associa informações predefinidas do sistema a um elemento de destino, que pode ser um bloco param ou um parâmetro (seção 8.10). Cada objeto de atributo tem um tipo de atributo.
As informações fornecidas por um atributo também são conhecidas como metadados. Os metadados podem ser examinados pelo comando ou pelo ambiente de execução para controlar como o comando processa dados ou antes do runtime, por ferramentas externas para controlar como o comando em si é processado ou mantido.
Vários atributos podem ser aplicados ao mesmo elemento de destino.
12.1 Especificação de atributo
Dica
A notação ~opt~
nas definições de sintaxe indica que a entidade lexical é opcional na sintaxe.
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
Um atributo consiste em um attribute-name e uma lista opcional de argumentos posicionais e nomeados.
Os argumentos posicionais (se houver) precedem os argumentos nomeados. Um argumento nomeado consiste em um simple-name, opcionalmente seguido por um sinal de igual e seguido por uma expressão. Se a expressão for omitida, o valor $true
será presumido.
O attribute-name é um tipo de atributo reservado (seção 12.3) ou algum tipo de atributo definido pela implementação.
12.2 Instâncias de atributo
Uma instância de atributo é um objeto de um tipo de atributo. A instância representa um atributo em tempo de execução.
Para criar um objeto de algum tipo de atributo A, use a notação A()
. Um atributo é declarado delimitando sua instância dentro de []
, como em [A()]
. Alguns tipos de atributo têm parâmetros posicionais e nomeados (seção 8.14), assim como as funções e os cmdlets. Por exemplo,
[A(10,IgnoreCase=$true)]
mostra uma instância do tipo A que está sendo criada usando um parâmetro posicional cujo valor de argumento é 10 e um parâmetro nomeado, IgnoreCase, cujo valor de argumento é $true
.
12.3 Atributos reservados
Os atributos descritos nas seções a seguir podem ser usados para aumentar ou modificar o comportamento de funções, filtros, scripts e cmdlets do PowerShell.
12.3.1 O atributo Alias
Esse atributo é usado em um script-parameter para especificar um nome alternativo para um parâmetro. Um parâmetro pode ter vários aliases e cada nome de alias deve ser exclusivo em uma parameter-list. Como exemplo, é possível ter nomes diferentes para um parâmetro em conjuntos de parâmetros diferentes (veja ParameterSetName).
O argumento do atributo tem tipo string[].
Considere uma chamada de função Test1
que tenha o seguinte bloco param e que é chamada conforme mostrado:
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
Considere uma chamada de função Test2
que tenha o seguinte bloco param e que é chamada conforme mostrado:
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
O cmdlet Get-ChildItem
(alias Dir
) adiciona ao objeto que retorna uma nova NoteProperty do tipo string
, chamada PSPath.
12.3.2 O atributo AllowEmptyCollection
Esse atributo é usado em um script-parameter para permitir uma coleção vazia como o argumento de um parâmetro obrigatório.
Considere uma chamada de função Test
que tenha o seguinte bloco param e que é chamada conforme mostrado:
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 O atributo AllowEmptyString
Esse atributo é usado em um script-parameter para permitir uma cadeia de caracteres vazia como o argumento de um parâmetro obrigatório.
Considere uma chamada de função Test
que tenha o seguinte bloco param e que é chamada conforme mostrado:
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 O atributo AllowNull
Esse atributo é usado em um script-parameter para permitir $null como o argumento de um parâmetro obrigatório para o qual não haja nenhuma conversão implícita disponível.
Considere uma chamada de função Test que tenha o seguinte bloco param e que é chamada conforme mostrado:
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
Observe que o segundo caso acima não precisa desse atributo; já há uma conversão implícita de $null
para int.
12.3.5 O atributo CmdletBinding
Esse atributo é usado na attribute-list do param-block de uma função para indicar que a função atua de modo semelhante a um cmdlet. Especificamente, ele permite que as funções acessem vários métodos e propriedades por meio da variável $PsCmdlet usando os blocos nomeados begin, process e end (seção 8.10.7).
Quando esse atributo está presente, argumentos posicionais que não têm parâmetros posicionais correspondentes causam falha na associação de parâmetros e $args não é definido. (Sem esse atributo, o $args assumiria qualquer valor de argumento posicional sem correspondência).
Os seguintes argumentos são usados para definir as características do parâmetro :
Nome do parâmetro | Finalidade |
---|---|
SupportsShouldProcess (nomeado) | Tipo: bool; Valor padrão: $false Especifica se a função dá suporte a chamadas para o método ShouldProcess, que é usado para solicitar informações do usuário antes que a função faça uma alteração no sistema. Um valor de $true indica que ela dá suporte. Um valor $false indica que não. |
ConfirmImpact (nomeado) | Tipo: cadeia de caracteres; Valor padrão: "Médio" Especifica o nível de impacto da ação executada. A chamada ao método ShouldProcess exibirá um prompt de confirmação somente quando o argumento ConfirmImpact for maior ou igual ao valor da variável de preferência $ConfirmPreference. Os valores possíveis desse argumento são: Nenhum: suprimir todas as solicitações de confirmação. Baixo: a ação executada tem um baixo risco de perda de dados. Médio: a ação executada tem um risco médio de perda de dados. Alto: a ação executada tem um risco médio de perda de dados. O valor de $ConfirmPreference pode ser definido para que somente cmdlets com um nível de impacto igual ou superior possam solicitar confirmação antes de executarem sua operação. Por exemplo, se $ConfirmPreference for definido como Médio, os cmdlets com um nível de impacto Médio ou Alto poderão solicitar confirmação. As solicitações de cmdlets com um nível de impacto baixo serão suprimidas. |
DefaultParameterSetName (nomeado) | Tipo: cadeia de caracteres; Valor padrão: "__AllParameterSets" Especifica o conjunto de parâmetros a ser usado, se não for possível determinar por meio dos argumentos. Confira o argumento nomeado ParameterSetName no atributo Parameter ([seção 12.3.7][seção 12.3.7]). |
PositionalBinding (nomeado) | Tipo: bool; Valor padrão: $true Especifica se há suporte para a associação posicional ou não. O valor desse argumento será ignorado se algum parâmetro especificar valores não padrão para o argumento nomeado Position ou o argumento nomeado ParameterSetName no atributo Parameter ([seção 12.3.7][seção 12.3.7]). Caso contrário, se o argumento for $false, nenhum parâmetro será posicional; de outro modo, os parâmetros receberão uma posição com base na ordem em que os parâmetros forem especificados. |
Veja um exemplo da estrutura para usar este atributo:
[CmdletBinding(SupportsShouldProcess = $true, ConfirmImpact = "Low")]
param ( ... )
begin { ... }
Get-process { ... }
end { ... }
12.3.6 O atributo OutputType
Esse atributo é usado na attribute-list de param-block para especificar os tipos retornados. Os seguintes argumentos são usados para definir as características do parâmetro :
Nome do parâmetro | Finalidade |
---|---|
Tipo (posição 0) | Tipo: string[] ou matriz de literais de tipo Uma lista dos tipos dos valores retornados. |
ParameterSetName (nomeado) | Tipo: string[] Especifica os conjuntos de parâmetros que retornam os tipos indicados pelos elementos correspondentes do parâmetro Type. |
Aqui estão vários exemplos de uso desse atributo:
[OutputType([int])] param ( ... )
[OutputType("double")] param ( ... )
[OutputType("string","string")] param ( ... )
12.3.7 O atributo Parameter
Esse atributo é usado em um script-parameter. Os seguintes argumentos nomeados são usados para definir as características do parâmetro :
Parâmetro | Finalidade |
---|---|
HelpMessage (nomeado) | Type: string Esse argumento especifica uma mensagem que deve conter uma breve descrição do parâmetro. Essa mensagem é usada na forma definida pela implementação quando a função ou o cmdlet é executado, ainda que um parâmetro obrigatório que tem uma HelpMessage não tenha o argumento correspondente. O exemplo a seguir mostra uma declaração de parâmetro que fornece uma descrição do parâmetro. param ( [Parameter(Mandatory = $true, Windows PowerShell: se um parâmetro necessário não for fornecido, o runtime solicitará ao usuário um valor de parâmetro. A caixa de diálogo do aviso inclui o texto HelpMessage. |
Mandatory (nomeado) | Tipo: bool; Valor padrão: $false Esse argumento especifica se o parâmetro é necessário dentro do conjunto de parâmetros fornecido (veja o argumento ParameterSetName abaixo). O valor $true indica que é necessário. O valor $false indica que não é. param ( [Parameter(Mandatory = $true)] Windows PowerShell: se um parâmetro necessário não for fornecido, o runtime solicitará ao usuário um valor de parâmetro. A caixa de diálogo do aviso inclui o texto HelpMessage, se houver. |
ParameterSetName (nomeado) | Tipo: cadeia de caracteres; Valor padrão: "__AllParameterSets" É possível escrever uma única função ou um cmdlet que execute ações diferentes em cenários diferentes. Isso é feito por meio da exposição de diferentes grupos de parâmetros, dependendo da ação que se deseja executar. Esses agrupamentos de parâmetros são chamados de conjuntos de parâmetros. O argumento ParameterSetName especifica o conjunto de parâmetros ao qual um parâmetro pertence. Esse comportamento significa que cada conjunto de parâmetros deve ter um parâmetro exclusivo que não seja membro de nenhum outro conjunto de parâmetros. No caso de parâmetros que pertencem a vários conjuntos de parâmetros, adicione um atributo Parameter para cada conjunto de parâmetros. Isso permite que o parâmetro seja definido de maneira diferente para cada conjunto de parâmetros. Um conjunto de parâmetros que contém vários parâmetros posicionais deve definir posições exclusivas para cada parâmetro. Dois parâmetros posicionais não podem especificar a mesma posição. Se nenhum conjunto de parâmetros for especificado para um parâmetro, o parâmetro pertencerá a todos os conjuntos de parâmetros. Quando vários conjuntos de parâmetros são definidos, o argumento nomeado DefaultParameterSetName do atributo CmdletBinding ([seção 12.3.5][seção 12.3.5]) é usado para especificar o conjunto de parâmetros padrão. O runtime usará o parâmetro padrão definido se ele não puder determinar o conjunto de parâmetros a ser usado com base nas informações fornecidas pelo comando ou vai gerar uma exceção se nenhum conjunto de parâmetros padrão tiver sido especificado. O exemplo a seguir mostra uma função Test com uma declaração de parâmetro de dois parâmetros que pertencem a dois conjuntos de parâmetros diferentes e um terceiro parâmetro que pertence a ambos os conjuntos: param ( [Parameter(Mandatory = $true, [Parameter(Mandatory = $true, [Parameter(Mandatory = $true, if ($PsCmdlet.ParameterSetName -eq "Computer") elseif ($PsCmdlet.ParameterSetName -eq "User") Test -ComputerName "Mars","Venus" -SharedParam 10 |
Position (nomeado) | Tipo: int Esse argumento especifica a posição do parâmetro na lista de argumentos. Se esse argumento não for especificado, o nome do parâmetro ou seu alias deverá ser especificado explicitamente quando o parâmetro for definido. Se nenhum dos parâmetros de uma função tiver posições, as posições serão atribuídas a cada parâmetro com base na ordem em que forem recebidos. O exemplo a seguir mostra a declaração de um parâmetro cujo valor deverá ser especificado como o primeiro argumento quando a função for chamada. param ( [Parameter(Position = 0)] |
ValueFromPipeline (nomeado) | Tipo: bool; Valor padrão: $false Esse argumento especifica se o parâmetro aceita entrada de um objeto de pipeline. Um valor de $true indica que ele aceita. O valor $false indica que não. Especifique $true se a função ou o cmdlet acessar o objeto completo, não apenas uma propriedade do objeto. Somente um parâmetro em um conjunto de parâmetros pode declarar ValueFromPipeline como $true. O exemplo a seguir mostra a declaração de parâmetro de um parâmetro obrigatório, $ComputerName, que aceita o objeto de entrada que é passado para a função por meio do pipeline. param ( [Parameter(Mandatory = $true, Para ver um exemplo de como usar esse parâmetro em conjunto com o atributo Alias, confira [seção 12.3.1][seção 12.3.1]. |
ValueFromPipelineByPropertyName (nomeado) | Tipo: bool; Valor padrão: $false Esse argumento especifica se o parâmetro recebe seu valor de uma propriedade de um objeto de pipeline que tem o mesmo nome ou o mesmo alias que esse parâmetro. Um valor de $true indica que ele aceita. O valor $false indica que não. Especifique $true se as seguintes condições forem verdadeiras: o parâmetro acessa uma propriedade do objeto com pipe e a propriedade tem o mesmo nome que o parâmetro ou a propriedade tem o mesmo alias que o parâmetro. Um parâmetro com ValueFromPipelineByPropertyName definido como $true não precisa ter um parâmetro no mesmo conjunto com ValueFromPipeline definido como $true. Se uma função tiver um parâmetro $ComputerName e o objeto de pipe tiver uma propriedade ComputerName, o valor da propriedade ComputerName será atribuído ao parâmetro $ComputerName da função: param ( [parameter(Mandatory = $true, Vários parâmetros em um conjunto de parâmetros podem definir o ValueFromPipelineByPropertyName como $true. Embora um único objeto de entrada não possa ser associado a vários parâmetros, propriedades diferentes nesse objeto de entrada podem estar associadas a parâmetros diferentes. Ao associar um parâmetro a uma propriedade de um objeto de entrada, o ambiente do runtime vai primeiro procurar uma propriedade com o mesmo nome do parâmetro. Se essa propriedade não existir, o ambiente do runtime procurará aliases desse parâmetro, em ordem de declaração, selecionando o primeiro alias para o qual existir uma propriedade. function Process-Date [Parameter(ValueFromPipelineByPropertyName=$true)] [Parameter(ValueFromPipelineByPropertyName=$true)] process { … } |
ValueFromRemainingArguments (nomeado) | Tipo: bool; Valor padrão: $false Esse argumento especifica se o parâmetro aceita todos os argumentos restantes que não estão associados aos parâmetros da função. Um valor de $true indica que ele aceita. O valor $false indica que não. O exemplo a seguir mostra um parâmetro $others que aceita todos os argumentos restantes do objeto de entrada que é passado para a função Test: param ( [parameter(Mandatory = $true)][int] $p1, Test 10 20 # $others has Length 0 |
Uma implementação também pode definir outros atributos.
Os seguintes atributos também são fornecidos:
- HelpMessageBaseName: especifica o local em que residem os identificadores de recurso. Por exemplo, esse parâmetro pode especificar um assembly de recurso que contém mensagens de Ajuda que devem ser localizadas.
- HelpMessageResourceId: especifica o identificador de recurso de uma mensagem de Ajuda.
12.3.8 O atributo PSDefaultValue
Esse atributo é usado em um script-parameter para fornecer informações adicionais sobre o parâmetro. O atributo é usado de uma forma definida pela implementação. Os seguintes argumentos são usados para definir as características do parâmetro :
Nome do parâmetro | Finalidade |
---|---|
Help (nomeado) | Type: string Esse argumento especifica uma mensagem que deve conter uma breve descrição do valor padrão de um parâmetro. Essa mensagem é usada de uma forma definida pela implementação. Windows PowerShell: a mensagem é usada como parte da descrição do parâmetro para o tópico de ajuda exibido pelo cmdlet [Get-Help](xref:Microsoft.PowerShell.Core.Get-Help). |
Value (nomeado) | Tipo: object Esse argumento especifica um valor que se destina a ser o valor padrão de um parâmetro. O valor é usado de uma forma definida pela implementação. Windows PowerShell: o valor é usado como parte da descrição do parâmetro para o tópico de ajuda exibido pelo cmdlet [Get-Help](xref:Microsoft.PowerShell.Core.Get-Help) quando a propriedade Help não é especificada. |
12.3.9 O atributo SupportsWildcards
Esse atributo é usado em um script-parameter para fornecer informações adicionais sobre o parâmetro. O atributo é usado de uma forma definida pela implementação.
Esse atributo é usado como parte da descrição do parâmetro para o tópico de ajuda exibido pelo cmdlet Get-Help.
12.3.10 O atributo ValidateCount
Esse atributo é usado em um script-parameter para especificar o número mínimo e máximo de valores de argumento que o parâmetro pode aceitar. Os seguintes argumentos são usados para definir as características do parâmetro :
Nome do parâmetro | Finalidade |
---|---|
MinLength (posição 0) | Tipo: int Esse argumento especifica o número mínimo de valores de argumento permitidos. |
MaxLength (posição 1) | Tipo: int Esse argumento especifica o número máximo de valores de argumento permitidos. |
Na ausência desse atributo, a lista de valores de argumento correspondente do parâmetro poderá ter qualquer tamanho.
Considere uma chamada de função Test que tenha o seguinte bloco param e que é chamada conforme mostrado:
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 O atributo ValidateLength
Esse atributo é usado em um script-parameter ou variable para especificar o comprimento mínimo e máximo do argumento do parâmetro, que deve ter tipo string. Os seguintes argumentos são usados para definir as características do parâmetro :
Nome do parâmetro | Finalidade |
---|---|
MinLength (posição 0) | Tipo: int Esse argumento especifica o número mínimo de caracteres permitidos. |
MaxLength (posição 1) | Tipo: int Esse argumento especifica o número máximo de caracteres permitidos. |
Na ausência desse atributo, o argumento correspondente do parâmetro poderá ter qualquer tamanho.
Considere uma chamada de função Test que tenha o seguinte bloco param e que é chamada conforme mostrado:
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 O atributo ValidateNotNull
Esse atributo é usado em um script-parameter ou variable para especificar que o argumento do parâmetro não pode ser $null
nem ser uma coleção que contenha um elemento com valor nulo.
Considere uma chamada de função Test
que tem o seguinte bloco param e que é chamada conforme mostrado:
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 O atributo ValidateNotNullOrEmpty
Esse atributo é usado em um script-parameter ou variable para especificar que o argumento do parâmetro não pode ser $null, uma cadeia de caracteres vazia, uma matriz vazia e nem ser uma coleção que contenha um elemento com valor $null ou uma cadeia de caracteres vazia.
Considere uma chamada de função Test
que tenha o seguinte bloco param e que é chamada conforme mostrado:
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 O atributo ValidatePattern
Esse atributo é usado em um script-parameter ou variable para especificar uma expressão regular para corresponder ao padrão do argumento do parâmetro. Os seguintes argumentos são usados para definir as características do parâmetro :
Nome do parâmetro | Finalidade |
---|---|
RegexString (posição 0) | Tipo: String Uma expressão regular que é usada para validar o argumento do parâmetro |
Options (nomeado) | Tipo: Regular-Expression-Option Confira [seção 4.2.6.4][seção 4.2.6.4] para ver os valores permitidos. |
Se o argumento for uma coleção, cada elemento da coleção deverá corresponder ao padrão.
Considere uma chamada de função Test
que tenha o seguinte bloco param e que é chamada conforme mostrado:
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 O atributo ValidateRange
Esse atributo é usado em um script-parameter ou variable para especificar os valores mínimo e máximo do argumento do parâmetro. Os seguintes argumentos são usados para definir as características do parâmetro :
Nome do parâmetro | Finalidade |
---|---|
MinRange (posição 0) | Tipo: object Esse argumento especifica o valor mínimo permitido. |
MaxRange (posição 1) | Tipo: object Esse argumento especifica o valor máximo permitido. |
Na ausência desse atributo, não haverá restrição de intervalo.
Considere uma chamada de função Test1
que tenha o seguinte bloco param e que é chamada conforme mostrado:
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
Considere uma chamada de função Test2 que tenha o seguinte bloco param e chamadas:
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
Considere uma chamada de função Test3
que tenha o seguinte bloco param e que é chamada conforme mostrado:
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 O atributo ValidateScript
Esse atributo é usado em um script-parameter ou variable para especificar um script que deve ser usado para validar o argumento do parâmetro.
O argumento na posição 1 é uma script-block-expression.
Considere uma chamada de função Test
que tenha o seguinte bloco param e que é chamada conforme mostrado:
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 O atributo ValidateSet
Esse atributo é usado em um script-parameter ou variable para especificar um conjunto de valores válidos para o argumento do parâmetro. Os seguintes argumentos são usados para definir as características do parâmetro :
Nome do parâmetro | Finalidade |
---|---|
ValidValues (posição 0) | Tipo: string[] O conjunto de valores válidos. |
IgnoreCase (nomeado) | Tipo: bool; Valor padrão: $true Especifica se a diferenciação de maiúsculas e minúsculas deve ser ignorada em parâmetros do tipo cadeia de caracteres. |
Se o parâmetro tiver um tipo matriz, cada elemento da matriz de argumentos correspondente deverá corresponder a um elemento do conjunto de valores.
Considere uma chamada de função Test
que tenha o seguinte bloco param e que é chamada conforme mostrado:
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