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.
Nota editorial
Importante
A Especificação da Linguagem do Windows PowerShell 3.0 foi publicada em dezembro de 2012 e é baseada no Windows PowerShell 3.0. Essa especificação não reflete o estado atual do PowerShell. Não há nenhum plano para atualizar essa documentação para refletir o estado atual. Esta documentação é apresentada aqui para referência histórica.
O documento de especificação está disponível como um documento do Microsoft Word do Centro de Download da Microsoft em: https://www.microsoft.com/download/details.aspx?id=36389 esse documento do Word foi convertido para apresentação aqui no Microsoft Learn. Durante a conversão, algumas alterações editoriais foram feitas para acomodar a formatação para a plataforma Docs. Alguns erros de digitação e pequenos foram corrigidos.
Um objeto de atributo associa informações predefinidas do sistema a um elemento de destino, que pode ser um bloco de parâmetro ou um parâmetro (§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 tempo de execução por ferramentas externas para controlar como o comando em si é processado ou mantido.
Vários atributos podem ser aplicados ao mesmo elemento de destino.
Especificação do atributo 12.1
Dica
A ~opt~ notação 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 nome de atributo e uma lista opcional de argumentos posicionais e nomeados.
Os argumentos posicionais (se houver) precedem os argumentos nomeados. Um argumento nomeado consiste em um nome simples, opcionalmente seguido por um sinal de igual e seguido por uma expressão. Se a expressão for omitida, o valor $true será assumido.
O nome do atributo é um tipo de atributo reservado (§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 atributo tipo A, use a notação A(). Um atributo é declarado colocando sua instância dentro [], como em [A()]. Alguns tipos de atributo têm parâmetros posicionais e nomeados (§8,14), assim como funções e cmdlets. Por exemplo
[A(10,IgnoreCase=$true)]
mostra uma instância do tipo A 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 parâmetro de script 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 lista de parâmetros. Um possível uso é ter nomes diferentes para um parâmetro em conjuntos de parâmetros diferentes (consulte ParameterSetName).
O argumento de atributo tem cadeia de caracteres de tipo[].
Considere uma chamada de Test1 função que tenha o seguinte bloco de parâmetros e que seja chamado 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 Test2 função que tenha o seguinte bloco de parâmetros e que seja chamado 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 um novo NoteProperty do tipo string, chamado PSPath.
12.3.2 O atributo AllowEmptyCollection
Esse atributo é usado em um parâmetro de script para permitir uma coleção vazia como o argumento de um parâmetro obrigatório.
Considere uma chamada de Test função que tenha o seguinte bloco de parâmetros e que seja chamado 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 parâmetro de script para permitir uma cadeia de caracteres vazia como o argumento de um parâmetro obrigatório.
Considere uma chamada de Test função que tenha o seguinte bloco de parâmetros e que seja chamado 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 parâmetro de script para permitir $null como o argumento de um parâmetro obrigatório para o qual nenhuma conversão implícita está disponível.
Considere um teste de chamada de função que tem o seguinte bloco de parâmetros e que é chamado 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 lista de atributos de bloco de param de uma função para indicar que a função age de forma 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 blocos nomeados de início, processo e término (§8.10.7).
Quando esse atributo está presente, argumentos posicionais que não têm parâmetros posicionais correspondentes fazem com que a associação de parâmetro falhe e $args não esteja definida. (Sem esse atributo $args assumiria quaisquer valores de argumento posicional incompatíveis.)
Os seguintes argumentos são usados para definir as características do parâmetro:
| Nome do parâmetro | Propósito |
|---|---|
| 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 comentários ao usuário antes que a função faça uma alteração no sistema. Um valor de $true indica que sim. Um valor de $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 para o método ShouldProcess exibe um prompt de confirmação somente quando o argumento ConfirmImpact é 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. Baixa: a ação executada tem um baixo risco de perder dados. Médio: a ação executada tem um risco médio de perder dados. Alta: a ação executada tem um alto risco de perder 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 a operação. Por exemplo, se $ConfirmPreference for definido como Médio, 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 são suprimidas. |
| DefaultParameterSetName (nomeado) | Tipo: cadeia de caracteres; Valor padrão: "__AllParameterSets" Especifica o conjunto de parâmetros a ser usado se isso não puder ser determinado a partir dos argumentos. Consulte o argumento nomeado ParameterSetName no parâmetro de atributo ([§12.3.7][§12.3.7]). |
| PositionalBinding (nomeado) | Tipo: bool; Valor padrão: $true Especifica se a associação posicional tem suporte ou não. O valor desse argumento será ignorado se algum parâmetro especificar valores não padrão para a posição do argumento nomeado ou o argumento nomeado ParameterSetName no parâmetro de atributo ([§12.3.7][§12.3.7]). Caso contrário, se o argumento for $false, nenhum parâmetro será posicional, caso contrário, os parâmetros receberão uma posição com base na ordem em que os parâmetros são especificados. |
Aqui está 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 lista de atributos do bloco de param para especificar os tipos retornados. Os seguintes argumentos são usados para definir as características do parâmetro:
| Nome do parâmetro | Propósito |
|---|---|
| Tipo (posição 0) | Tipo: cadeia de caracteres[] ou matriz de literais de tipo Uma lista dos tipos dos valores retornados. |
| ParameterSetName (nomeado) | Tipo: cadeia de caracteres[] Especifica os conjuntos de parâmetros que retornam os tipos indicados pelos elementos correspondentes do parâmetro Type. |
Aqui estão vários exemplos do uso deste atributo:
[OutputType([int])] param ( ... )
[OutputType("double")] param ( ... )
[OutputType("string","string")] param ( ... )
12.3.7 O atributo Parameter
Esse atributo é usado em um parâmetro de script. Os seguintes argumentos nomeados são usados para definir as características do parâmetro:
| Parâmetro | Propósito |
|---|---|
| HelpMessage (nomeado) | Tipo: cadeia de caracteres Esse argumento especifica uma mensagem que se destina a conter uma breve descrição do parâmetro. Essa mensagem é usada de maneira definida pela implementação quando a função ou o cmdlet é executado, mas um parâmetro obrigatório que tem um HelpMessage não tem um 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 prompt inclui o texto HelpMessage. |
| Obrigatório (nomeado) | Tipo: bool; Valor padrão: $false Esse argumento especifica se o parâmetro é necessário dentro do conjunto de parâmetros especificado (consulte o argumento ParameterSetName abaixo). Um valor de $true indica que é. Um valor de $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 prompt inclui o texto HelpMessage, se houver. |
| ParameterSetName (nomeado) | Tipo: cadeia de caracteres; Valor padrão: "__AllParameterSets" É possível escrever uma única função ou cmdlet que pode executar ações diferentes para cenários diferentes. Ele faz isso expondo diferentes grupos de parâmetros, dependendo da ação que 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. Para 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 forma 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. Nenhum parâmetro posicional pode especificar a mesma posição. Se nenhum conjunto de parâmetros for especificado para um parâmetro, o parâmetro pertence a todos os conjuntos de parâmetros. Quando vários conjuntos de parâmetros são definidos, o argumento nomeado DefaultParameterSetName do atributo CmdletBinding ([§12.3.5][§12.3.5]) é usado para especificar o conjunto de parâmetros padrão. O runtime usará o conjunto de parâmetros padrão se não puder determinar o conjunto de parâmetros a ser usado com base nas informações fornecidas pelo comando ou gerará uma exceção se nenhum conjunto de parâmetros padrão tiver sido especificado. O exemplo a seguir mostra um teste de função 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") Testar -ComputerName "Marte", "Vênus" -SharedParam 10 |
| Posição (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ão ser especificados 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 são recebidas. O exemplo a seguir mostra a declaração de um parâmetro cujo valor deve ser especificado como o primeiro argumento quando a função é chamada. param ( [Parameter(Position = 0)] |
| ValueFromPipeline (nomeado) | Tipo: bool; Valor padrão: $false Esse argumento especifica se o parâmetro aceita a entrada de um objeto de pipeline. Um valor de $true indica que sim. Um valor de $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. Apenas 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 do pipeline. param ( [Parameter(Mandatory = $true, Para obter um exemplo de como usar esse parâmetro em conjunto com o atributo Alias, consulte [§12.3.1][§12.3.1]. |
| ValueFromPipelineByPropertyName (nomeado) | Tipo: bool; Valor padrão: $false Esse argumento especifica se o parâmetro usa 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 sim. Um valor de $false indica que não. Especifique $true se as seguintes condições forem verdadeiras: o parâmetro acessará uma propriedade do objeto canalizado e a propriedade tiver o mesmo nome do parâmetro ou se a propriedade tiver 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 canalizado 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 com uma propriedade de um objeto de entrada, o ambiente de runtime procura primeiro uma propriedade com o mesmo nome que o parâmetro. Se essa propriedade não existir, o ambiente de runtime procurará aliases para esse parâmetro, em sua ordem de declaração, escolhendo o primeiro alias desse tipo para o qual existe uma propriedade. Process-Date de função [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 sim. Um valor de $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 o teste de função: param ( [Parameter(Mandatory = $true)][int] $p 1, Teste 10 20 # $Others tem Comprimento 0 |
Uma implementação também pode definir outros atributos.
Os seguintes atributos também são fornecidos:
- HelpMessageBaseName: especifica o local onde residem os identificadores de recursos. Por exemplo, esse parâmetro pode especificar um assembly de recurso que contenha mensagens de Ajuda que devem ser localizadas.
- HelpMessageResourceId: especifica o identificador de recurso para uma mensagem de Ajuda.
12.3.8 O atributo PSDefaultValue
Esse atributo é usado em um parâmetro de script para fornecer informações adicionais sobre o parâmetro. O atributo é usado de maneira definida pela implementação. Os seguintes argumentos são usados para definir as características do parâmetro:
| Nome do parâmetro | Propósito |
|---|---|
| Ajuda (nomeada) | Tipo: cadeia de caracteres Esse argumento especifica uma mensagem que se destina a conter uma breve descrição do valor padrão de um parâmetro. Essa mensagem é usada de maneira 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). |
| Valor (nomeado) | Tipo: objeto Esse argumento especifica um valor que se destina a ser o valor padrão de um parâmetro. O valor é usado de maneira 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 for especificada. |
12.3.9 O atributo SupportsWildcards
Esse atributo é usado em um parâmetro de script para fornecer informações adicionais sobre o parâmetro. O atributo é usado de maneira 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 parâmetro de script 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 | Propósito |
|---|---|
| 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 pode ter qualquer comprimento.
Considere um teste de chamada de função que tem o seguinte bloco de parâmetros e que é chamado 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 parâmetro de script ou variável para especificar o comprimento mínimo e máximo do argumento do parâmetro, que deve ter cadeia de caracteres de tipo. Os seguintes argumentos são usados para definir as características do parâmetro:
| Nome do parâmetro | Propósito |
|---|---|
| MinLength (posição 0) | Tipo: int Esse argumento especifica o número mínimo de caracteres permitido. |
| MaxLength (posição 1) | Tipo: int Esse argumento especifica o número máximo de caracteres permitido. |
Na ausência desse atributo, o argumento correspondente do parâmetro pode ser de qualquer comprimento.
Considere um teste de chamada de função que tem o seguinte bloco de parâmetros e que é chamado 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 parâmetro de script ou variável para especificar que o argumento do parâmetro não pode ser $null ou ser uma coleção que contém um elemento com valor nulo.
Considere uma chamada de Test função que tem o seguinte bloco de param e que é chamado como "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 parâmetro de script ou variável para especificar que o argumento se o parâmetro não puder ser $null, uma cadeia de caracteres vazia ou uma matriz vazia ou ser uma coleção que contém um elemento de cadeia de caracteres com valor $null ou vazio.
Considere uma chamada de Test função que tenha o seguinte bloco de parâmetros e que seja chamado 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 parâmetro de script ou variável 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 | Propósito |
|---|---|
| RegexString (posição 0) | Tipo: string Uma expressão regular usada para validar o argumento do parâmetro |
| Opções (nomeado) | Tipo: Regular-Expression-Option Consulte [§4.2.6.4][§4.2.6.4] para obter os valores permitidos. |
Se o argumento for uma coleção, cada elemento na coleção deverá corresponder ao padrão.
Considere uma chamada de Test função que tenha o seguinte bloco de parâmetros e que seja chamado 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 parâmetro de script ou variável para especificar os valores mínimos e máximos do argumento do parâmetro. Os seguintes argumentos são usados para definir as características do parâmetro:
| Nome do parâmetro | Propósito |
|---|---|
| MinRange (posição 0) | Tipo: objeto Esse argumento especifica o valor mínimo permitido. |
| MaxRange (posição 1) | Tipo: objeto Esse argumento especifica o valor máximo permitido. |
Na ausência desse atributo, não há nenhuma restrição de intervalo.
Considere uma chamada de Test1 função que tenha o seguinte bloco de parâmetros e que seja chamado 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 tem o seguinte bloco de parâmetros 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 Test3 função que tenha o seguinte bloco de parâmetros e que seja chamado 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 parâmetro de script ou variável para especificar um script que deve ser usado para validar o argumento do parâmetro.
O argumento na posição 1 é uma expressão de bloco de script.
Considere uma chamada de Test função que tenha o seguinte bloco de parâmetros e que seja chamado 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 parâmetro de script ou variável 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 | Propósito |
|---|---|
| ValidValues (posição 0) | Tipo: cadeia de caracteres[] O conjunto de valores válidos. |
| IgnoreCase (nomeado) | Tipo: bool; Valor padrão: $true Especifica se o caso deve ser ignorado para parâmetros de cadeia de caracteres de tipo. |
Se o parâmetro tiver um tipo de matriz, cada elemento da matriz de argumentos correspondente deverá corresponder a um elemento do conjunto de valores.
Considere uma chamada de Test função que tenha o seguinte bloco de parâmetros e que seja chamado 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