HOWTO · PowerShell

Como Obter Argumentos da Linha de Comando no Windows PowerShell

Este artigo explicará como podemos lidar com argumentos de linha de comando usando a função de parâmetro do PowerShell, como os parâmetros funcionam, como podemos passar valores para os parâmetros usando argumentos do PowerShell e quais são os métodos básicos de definição de um parâmetro.

Nesta página

Nós tratamos argumentos usando a função de parâmetro do Windows PowerShell chamada param(). A função de parâmetro do Windows PowerShell é um componente fundamental de qualquer script. Um parâmetro é como os desenvolvedores permitem que os usuários do script forneçam entrada em tempo de execução.

Neste artigo, você aprenderá como criar scripts com a função de parâmetro, usá-los e algumas boas práticas para construir parâmetros.

Definir Parâmetros em Script PowerShell

Os administradores podem criar parâmetros para scripts e funções usando a função de parâmetro param(). Uma função contém um ou mais parâmetros definidos por variáveis.

Hello_World.ps1:

param(
    $message
)

No entanto, para garantir que o parâmetro aceite apenas o tipo de entrada que você precisa, as boas práticas ditam a atribuição de um tipo de dado ao parâmetro com o uso de um bloco de parâmetro [Parameter()] e enclausurando o tipo de dado com colchetes [] antes da variável.

Hello_World.ps1:

param(
    [Parameter()]
    [String]$message
)

No exemplo Hello_World.ps1 acima, a variável message aceitará um valor passado apenas se o valor fornecido tiver um tipo de dado String.

Parâmetros Nomeados em Script PowerShell

Uma maneira de usar a função de parâmetro em um script é por meio do nome do parâmetro – esse método é chamado de parâmetros nomeados. Ao chamar um script ou função via parâmetros nomeados, usamos o nome da variável como o nome completo do parâmetro.

Criamos um Hello_World.ps1 e definimos variáveis dentro da função de parâmetro neste exemplo. Lembre-se de que podemos colocar uma ou mais variáveis dentro da função de parâmetro.

Hello_World.ps1:

param(
    [Parameter()]
    [String]$message,
    [String]$emotion
)

Write-Output $message
Write-Output "I am $emotion"

Podemos então usar os parâmetros nomeados como um argumento ao executar um arquivo .ps1.

.\Hello_World.ps1 -message 'Hello World!' -emotion 'happy'

Saída:

Hello World!
I am happy

Atribuir Valores Padrão a Parâmetros em Script PowerShell

Podemos pré-atribuir um valor a um parâmetro dando ao parâmetro um valor dentro do script. Então, executar o script sem passar valores da linha de execução aceitará o valor padrão da variável definida dentro do script.

param(
    [Parameter()]
    [String]$message = "Hello World",
    [String]$emotion = "happy"
)

Write-Output $message
Write-Output "I am $emotion"
.\Hello_World.ps1

Saída:

Hello World!
I am happy

Parâmetros de Alternância em Script PowerShell

Outro parâmetro que podemos usar é o parâmetro de alternância definido pelo tipo de dado [switch]. O parâmetro de alternância é usado para valores binários ou booleanos para indicar true ou false.

Hello_World.ps1:

param(
    [Parameter()]
    [String]$message,
    [String]$emotion,
    [Switch]$display
)
if ($display) {
    Write-Output $message
    Write-Output "I am $emotion"
}
else {
    Write-Output "User denied confirmation."
}

Podemos chamar nosso script com o parâmetro do script usando a sintaxe abaixo.

.\Hello_World.ps1 -message 'Hello World!' -emotion 'happy' -display:$false

Saída:

User denied confirmation.

Parâmetros Mandatórios em Script PowerShell

É comum ter um ou mais parâmetros que devem ser usados quando um script é executado. Podemos tornar um parâmetro obrigatório adicionando um atributo Mandatory dentro do bloco de parâmetro [Parameter()].

Hello_World.ps1:

param(
    [Parameter(Mandatory)]
    [String]$message,
    [String]$emotion,
    [Switch]$display
)
if ($display) {
    Write-Output $message
    Write-Output "I am $emotion"
}
else {
    Write-Output "User denied confirmation."
}

Ao executar Hello_World.ps1, o Windows PowerShell não permitirá que o script seja executado e solicitará um valor.

.\Hello_World.ps1

Saída:

cmdlet hello_world.ps1 at command pipeline position 1
Supply values for the following parameters:
message: