Tengo un script al que paso el nombre del servidor en $ args.
De esta manera puedo hacer cosas en este (estos) servidor (es) usando foreach
:
.\script.ps1 host1 host2 host3
foreach ($i in $args)
{
Do-Stuff $i
}
Me gustaría agregar un parámetro opcional con nombre llamado vlan. He intentado:
Param(
[string]$vlan
)
foreach ($i in $args)
{
Write-Host $i
}
Write-Host $vlan
Funciona si pasa un -vlan
parámetro, pero si no lo hace, el script asigna automáticamente el último nombre del servidor $vlan
.
Entonces, ¿cómo puede pasar uno o varios parámetros más un parámetro con nombre opcional a un script de PowerShell?
Idealmente, aquí hay ejemplos válidos:
.\script.ps1 host1
.\script.ps1 host1 host2 host3
.\script.ps1 host1 host2 -vlan office
fuente
Los parámetros toman la entrada antes que los argumentos. Lo que debe hacer en su lugar es agregar un parámetro que acepte una matriz y convertirlo en el primer parámetro de posición. ex:
Entonces llámalo como:
Observe la coma entre los valores. Esto los recopila en una matriz.
fuente
Una forma de hacerlo sería así:
Esto permitiría ingresar varios hosts con espacios.
fuente
Llamo a un script programado que debe conectarse a una lista de servidores de esta manera:
Luego, dentro del script:
El operador de división devuelve una matriz de cadena
fuente