HOWTO · PowerShell
Múltiplos Valores em um Parâmetro no PowerShell
Este artigo discutirá a função parâmetro, diferentes tipos de variáveis que podemos definir em um parâmetro, como lidar com múltiplos valores em um único parâmetro e seus usos de amostra.
Manipulamos argumentos usando a função de parâmetro do PowerShell param. É um componente fundamental de qualquer script, permitindo que os desenvolvedores forneçam entrada em tempo de execução.
Além disso, se o comportamento de um script precisar mudar, um parâmetro pode oferecer uma oportunidade para fazê-lo sem alterar o código subjacente.
Este artigo discutirá a função parameter, diferentes variáveis que podemos definir, como lidar com múltiplos valores em um único parâmetro e usos de exemplo.
Compreendendo a Função Parameter no PowerShell
Os administradores podem criar parâmetros para scripts usando a função de parâmetro param().
Dentro, a função de parâmetro contém um ou mais parâmetros definidos por variáveis.
param ($myVariable)
No entanto, para garantir que o parâmetro aceite apenas o tipo de entrada que você precisa, é melhor atribuir um tipo de dados ao parâmetro envolvendo o tipo de dados com colchetes [] antes da variável.
param ([String]$myVariable)
–>
Vale a pena notar que você também pode usar outros tipos de dados como inteiros, float e DateTime. Também podemos atribuí-lo com um tipo de dado Boolean que discutiremos mais adiante.
Use os Parâmetros Named no PowerShell
Usar uma função de parâmetro em um script é através de parâmetros named.
Ao passar valores para um script ou função via parâmetros named, podemos usar o nome da variável como o nome completo do parâmetro.
sample.ps1:
param ([String]$name)
Write-Output $name
Podemos então usar os parâmetros nomeados ao executar um arquivo .ps1.
powershell.exe .\sample.ps1 -name "John"
Usando Padrões em um Parâmetro no PowerShell
Podemos pré-atribuir um valor padrão a um parâmetro dando ao parâmetro um valor dentro do script.
Além disso, executar o script sem passar valores da linha de comando adotará a variável padrão definida dentro do script.
param ([String]$name = "John")
Usando Parâmetros Switch no PowerShell
Podemos usar outro tipo de parâmetro para nossos scripts: o parâmetro switch definido pelo tipo de dado [switch].
Este parâmetro é principalmente usado para valores binários ou Booleanos que discutimos anteriormente, indicando o valor de true ou false.
param ([switch]$isEnabled)
–>
Use os Parâmetros Mandatory no PowerShell
É comum em alguns de nossos casos de uso ter um ou mais parâmetros que devem ser usados quando um script é executado.
Podemos definir um parâmetro obrigatório adicionando um atributo Mandatory dentro do bloco de parâmetro [Parameter()].
param (
[Parameter(Mandatory)]
[String] $servername
)
O ambiente de scripting não permitirá que o script seja executado a menos que um valor tenha sido fornecido na linha de comando.
Usando um Número Desconhecido de Argumentos no PowerShell
Geralmente, considero o uso de parâmetros nomeados muito superior a simplesmente ler os argumentos da linha de comando. Ler os argumentos é mais fácil quando você precisa lidar com um número desconhecido de argumentos.
Vamos usar letras de unidades como exemplo. Talvez precisemos de um script para verificar uma ou mais unidades na máquina.
Então, podemos usar um parâmetro nomeado e declará-lo como um tipo de dado String.
checkdrives.ps1:
param([String]$myDrive)
foreach ($drive in $myDrive) {
Write-Output "Processing drive $drive"
}
No entanto, ao passar várias letras de unidades para o argumento, o PowerShell irá tratá-las como um único objeto.
powershell .\checkdrives.ps1 -myDrive C, D, E
Saída:
Processing drive C D E
O PowerShell substituirá as vírgulas por espaços e as tratará como uma única variável. Infelizmente, isso não funcionaria, pois precisamos processar as unidades individualmente em nosso caso de uso.
Para que nosso intérprete capture múltiplos parâmetros sob um argumento, precisamos mudar o tipo de dado para um array com colchetes []. Então, quando executado, o PowerShell processará os argumentos listados individualmente.
checkdrives.ps1:
param([String[]]$myDrive)
foreach ($drive in $myDrive) {
Write-Output "Processing drive $drive"
}
Código de Exemplo:
powershell .\checkdrives.ps1 -myDrive C, D, E
Lembre-se de separar os argumentos com uma vírgula.
Saída:
Processing drive C
Processing drive D
Processing drive E
Usando os Parâmetros de Pipeline no PowerShell
A maioria dos cmdlets do PowerShell permite que você use o símbolo pipe | para passar dados. Podemos aproveitar isso quando se trata de parâmetros.
Por exemplo, podemos obter o último valor armazenado no pipeline e passá-lo para outro arquivo do PowerShell usando o atributo ValueFromPipeline do bloco de parâmetros.
pipeline.ps1:
param([parameter(ValueFromPipeline)]$pipedVar)
Write-Output $pipedVar
Código de Exemplo:
"This string is from the pipeline." | .\pipeline.ps1
Saída:
This string is from the pipeline.
Fazer essa técnica abre muitas oportunidades para a execução de arquivos PowerShell encadeados.