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
O Windows PowerShell Language Specification 3.0 foi publicado em dezembro de 2012 e é baseado no Windows PowerShell 3.0. Esta especificação não reflete o estado atual do PowerShell. Não há nenhum plano para atualizar esta 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 no 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 da plataforma do Documentos. Alguns erros de digitação e pequenos erros foram corrigidos.
Um objeto de atributo associa informações predefinidas do sistema a um elemento de destino , que pode ser um bloco de parâmetros 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 próprio comando é processado ou mantido.
Vários atributos podem ser aplicados ao mesmo elemento de destino.
12.1 Especificação do atributo
Tip
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 de um nome do atributo e uma lista opcional de argumentos posicionais e com nome.
Os argumentos posicionais (se houver) precedem os argumentos nomeados. Um argumento nomeado consiste em um de 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 atributos
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 colocando sua instância dentro []
, como em [A()]
. Alguns tipos de atributos 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 Um sendo criado 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
Este atributo é usado num script-parâmetro 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 dentro de uma lista de parâmetros . Um uso possível é ter nomes diferentes para um parâmetro em diferentes conjuntos de parâmetros (consulte ParameterSetName).
O argumento do atributo é do tipo string[].
Considere a chamada de função Test1
que tem o seguinte bloco de parâmetros 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 de parâmetros e que seja 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 um novo NoteProperty do tipo string
, chamado PSPath.
12.3.2 O atributo AllowEmptyCollection
Esse atributo é usado em um de parâmetro de script 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 de parâmetros e que seja 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 num parâmetro de script para permitir uma string vazia como o argumento de um parâmetro obrigatório.
Considere uma chamada de função Test
que tem o seguinte bloco de parâmetros 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
Este atributo é usado em um script-parameter para permitir $null como o argumento de um parâmetro obrigatório para o qual nenhuma conversão implícita está disponível.
Considere uma chamada de função Test que tenha o seguinte bloco de parâmetros e que seja chamada como demonstrado:
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
Note que o segundo caso acima não precisa deste atributo; Já existe uma conversão implícita de $null
para int.
12.3.5 O atributo CmdletBinding
Esse atributo é usado no lista de atributos de de bloco de parâmetro 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 uma série de métodos e propriedades através da variável $PSCmdlet usando blocos nomeados begin, process e end (§8.10.7).
Quando esse atributo está presente, argumentos posicionais que não têm parâmetros posicionais correspondentes fazem com que a vinculação de parâmetros falhe e $args não seja definida. (Sem este atributo, $args assumiria os valores de quaisquer argumentos posicionais não correspondidos.)
Os seguintes argumentos são usados para definir as características do parâmetro:
Nome do parâmetro | Objetivo |
---|---|
SupportsShouldProcess (nomeado) | Tipo: bool; Valor padrão: $false Especifica se a função suporta 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: string; 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 deste argumento são: Nenhum: Suprima todos os pedidos de confirmação. Baixo: A ação executada tem um baixo risco de perda de dados. Médio: A ação realizada tem um risco médio de perda de dados. Alto: A ação executada tem um alto risco de perda de dados. O valor de $ConfirmPreference pode ser definido para que apenas cmdlets com um nível de impacto igual ou superior possam solicitar confirmação antes de executarem sua operação. Por exemplo, se $ConfirmPreference estiver definido como Médio, os cmdlets com um nível de impacto Médio ou Alto podem solicitar uma confirmação. Solicitações de cmdlets com nível de impacto baixo são suprimidas. |
DefaultParameterSetName (nomeado) | Tipo: string; Valor padrão: "__AllParameterSets" Especifica o conjunto de parâmetros a ser usado se isso não puder ser determinado a partir dos argumentos. Veja o argumento nomeado ParameterSetName no atributo Parameter ([§12.3.7][§12.3.7]). |
PositionalBinding (nomeado) | Tipo: bool; Valor padrão: $true Especifica se a vinculação posicional é suportada 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 ([§12.3.7][§12.3.7]). Caso contrário, se o argumento for $false então nenhum parâmetro é posicional, caso contrário, os parâmetros são atribuídos a uma posição com base na ordem em que os parâmetros são especificados. |
Aqui está um exemplo da estrutura para usar esse atributo:
[CmdletBinding(SupportsShouldProcess = $true, ConfirmImpact = "Low")]
param ( ... )
begin { ... }
Get-process { ... }
end { ... }
12.3.6 O atributo OutputType
Esse atributo é usado no de lista de atributos de de bloco de parâmetros para especificar os tipos retornados. Os seguintes argumentos são usados para definir as características do parâmetro:
Nome do parâmetro | Objetivo |
---|---|
Tipo (posição 0) | Tipo: string[] ou matriz de literais de tipo Uma lista dos tipos dos valores que são retornados. |
ParameterSetName (nomeação) | 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 do 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 | Objetivo |
---|---|
HelpMessage (nomeado) | Tipo: string Este argumento especifica uma mensagem que se destina a conter uma breve descrição do parâmetro. Esta mensagem é usada de uma forma definida pela implementação quando a função ou cmdlet é executado, mas um parâmetro obrigatório com uma HelpMessage não possui um argumento correspondente. O exemplo a seguir mostra uma declaração de parâmetro que fornece uma descrição do parâmetro. param ( [Parameter(Obrigatório = $true, Windows PowerShell: Se um parâmetro necessário não for fornecido, o tempo de execução 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 fornecido (consulte o argumento ParameterSetName abaixo). Um valor de $true indica que sim. Um valor de $false indica que não é. param ( [Parâmetro(Obrigatório = $true)] Windows PowerShell: Se um parâmetro necessário não for fornecido, o tempo de execução solicitará ao usuário um valor de parâmetro. A caixa de diálogo prompt inclui o texto HelpMessage, se houver. |
ParameterSetName (nomeado) | Tipo: string; Valor padrão: "__AllParameterSets" É possível escrever uma única função ou cmdlet que pode executar diferentes ações para diferentes cenários. Ele faz isso expondo diferentes grupos de parâmetros dependendo da ação que deseja tomar. Esses agrupamentos de parâmetros são chamados 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. Não há dois parâmetros posicionais que possam 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 ([§12.3.5][§12.3.5]) é usado para especificar o conjunto de parâmetros padrão. O tempo de execução usa 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 gera 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 ( [Parametro (Obrigatório = $true, [Parâmetro(Obrigatório = $true, [Parâmetro(Obrigatório = $true, if ($PSCmdlet.ParameterSetName -eq "Computador") elseif ($PSCmdlet.ParameterSetName -eq "Utilizador") Teste -ComputerName "Marte","Vênus" -SharedParam 10 |
Cargo (nomeado) | Tipo: int Este 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 sã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 ( [Parâmetro(Posição = 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 sim. Um valor de $false indica que não. Especifique $true se a função ou cmdlet acessa 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 a partir do pipeline. param ( [Parametro(Obrigatório = $verdadeiro, Para obter um exemplo de uso desse 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 obtém 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 acessa uma propriedade do objeto canalizado, 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 canalizado tiver uma propriedade ComputerName, o valor da propriedade ComputerName será atribuído ao parâmetro $ComputerName da Function: paramètres ( [Parâmetro(Obrigatório = verdadeiro, 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 vinculado a vários parâmetros, propriedades diferentes nesse objeto de entrada podem ser vinculadas a parâmetros diferentes. Ao vincular um parâmetro com uma propriedade de um objeto de entrada, o ambiente de tempo de execução primeiro procura uma propriedade com o mesmo nome do parâmetro. Se tal propriedade não existir, o ambiente de tempo de execução procurará aliases para esse parâmetro, em sua ordem de declaração, escolhendo o primeiro alias para o qual existe uma propriedade. função Process-Date [Parâmetro(ValueFromPipelineByPropertyName=$true)] [Parâmetro(ValueFromPipelineByPropertyName=$true)] processo { ... } |
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 vinculados 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 a função Test: param ( [Parâmetro(Obrigatório = $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 os identificadores de recursos residem. Por exemplo, este parâmetro pode especificar um assembly de recursos que contenha mensagens de ajuda que devem ser traduzidas.
- HelpMessageResourceId: Especifica o identificador de recurso para uma mensagem de Ajuda.
12.3.8 O atributo PSDefaultValue
Esse atributo é usado num parâmetro-script para fornecer informações adicionais sobre o parâmetro. O atributo é usado de uma maneira definida pela implementação. Os seguintes argumentos são usados para definir as características do parâmetro:
Nome do parâmetro | Objetivo |
---|---|
Ajuda (nomeado) | Tipo: string Este argumento especifica uma mensagem que se destina a conter uma breve descrição do valor padrão de um parâmetro. Esta mensagem é usada de uma 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 Este argumento especifica um valor que se destina a ser o valor padrão de um parâmetro. O valor é usado de uma 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 é especificada. |
12.3.9 O atributo SupportsWildcards
Este atributo é usado num parâmetro de script para fornecer informações adicionais sobre o parâmetro. O atributo é usado de uma maneira definida pela implementação.
Esse atributo é usado como parte da descrição do parâmetro para o tópico da Ajuda exibido pelo cmdlet Get-Help.
12.3.10 O atributo ValidateCount
Esse atributo é usado em um de 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 | Objetivo |
---|---|
MinLength (posição 0) | Tipo: int Este argumento especifica o número mínimo de valores de argumento permitidos. |
MaxLength (posição 1) | Tipo: int Este 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 ser de qualquer comprimento.
Considere uma chamada de função Test que tenha o seguinte bloco de parâmetros e que seja chamada conforme apresentado:
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 de 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 | Objetivo |
---|---|
MinLength (posição 0) | Tipo: int Este argumento especifica o número mínimo de caracteres permitidos. |
MaxLength (posição 1) | Tipo: int Este argumento especifica o número máximo de caracteres permitidos. |
Na ausência desse atributo, o argumento correspondente do parâmetro pode ser de qualquer comprimento.
Considere uma função de chamada Test que tenha o seguinte bloco de parâmetros e que seja 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 de 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 contendo um elemento de valor nulo.
Considere uma chamada de função Test
que tenha o seguinte bloco de parâmetros e que seja 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 parâmetro de script ou em uma variável para especificar que o argumento não pode ser $null, uma cadeia de caracteres vazia, ou uma matriz vazia, nem uma coleção contendo um elemento com valor $null ou uma cadeia de caracteres vazia.
Considere uma chamada de função Test
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
Este atributo é usado num(a) de parâmetro de script ou numa variável para especificar uma expressão regular que corresponda 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 | Objetivo |
---|---|
RegexString (posição 0) | Tipo: String Uma expressão regular que é usada para validar o argumento do parâmetro |
Opções (nomeadas) | Tipo: Regular-Expression-Option Ver [§4.2.6.4][§4.2.6.4] para os valores permitidos. |
Se o argumento for uma coleção, cada elemento da coleção deverá corresponder ao padrão.
Considere uma função de chamada Test
que tenha o seguinte bloco de parâmetros e que seja chamada como 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
Este atributo é usado em um parâmetro de script ou em uma variável 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 | Objetivo |
---|---|
MinRange (posição 0) | Tipo: objeto Este argumento especifica o valor mínimo permitido. |
MaxRange (posição 1) | Tipo: objeto Este argumento especifica o valor máximo permitido. |
Na ausência deste atributo, não há restrição de intervalo.
Considere uma chamada de função Test1
que tenha o seguinte bloco de parâmetros e que seja 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 inclui 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 função Test3
que tenha o seguinte bloco de parâmetros e que é chamada como 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 utilizado para validar o argumento do parâmetro.
O argumento na posição 1 é uma expressão de bloco de script .
Considere uma chamada de função Test
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
Este atributo é utilizado num de parâmetro de script ou numa 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 | Objetivo |
---|---|
ValidValues (posição 0) | Tipo: string[] O conjunto de valores válidos. |
IgnoreCase (nomeado) | Tipo: bool; Valor padrão: $true Especifica se as maiúsculas e minúsculas devem ser ignoradas para parâmetros do tipo cadeia de caracteres. |
Se o parâmetro tiver um tipo de matriz, cada elemento da matriz de argumento correspondente deverá corresponder a um elemento do conjunto de valores.
Considere uma chamada de função Test
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