Eu tenho um script para o qual passo o (s) nome (s) do servidor em $ args.
Desta forma, posso fazer coisas neste (s) servidor (es) usando foreach
:
.\script.ps1 host1 host2 host3
foreach ($i in $args)
{
Do-Stuff $i
}
Eu gostaria de adicionar um parâmetro opcional nomeado chamado vlan. Eu tentei:
Param(
[string]$vlan
)
foreach ($i in $args)
{
Write-Host $i
}
Write-Host $vlan
Funciona se você passar um -vlan
parâmetro, mas se não passar , o script atribui automaticamente o último nome do servidor $vlan
.
Portanto, como você pode passar parâmetros únicos ou múltiplos, além de um parâmetro nomeado opcional, para um script do PowerShell?
Idealmente, aqui estão alguns exemplos válidos:
.\script.ps1 host1
.\script.ps1 host1 host2 host3
.\script.ps1 host1 host2 -vlan office
fonte
Os parâmetros recebem entrada antes dos argumentos. Em vez disso, o que você deve fazer é adicionar um parâmetro que aceite uma matriz e torná-lo o primeiro parâmetro de posição. ex:
Então chame-o assim:
Observe a vírgula entre os valores. Isso os coleta em uma matriz
fonte
Uma maneira de fazer isso seria assim:
Isso permitiria que vários hosts fossem inseridos com espaços.
fonte
Eu chamo um script programado que deve se conectar a uma lista de servidores desta forma:
Então, dentro do script:
O operador de divisão retorna uma matriz de string
fonte