J'ai un script auquel je passe le (s) nom (s) de serveur en $ args.
De cette façon, je peux faire des choses sur ce (ces) serveur (s) en utilisant foreach
:
.\script.ps1 host1 host2 host3
foreach ($i in $args)
{
Do-Stuff $i
}
Je voudrais ajouter un paramètre facultatif nommé appelé vlan. J'ai essayé:
Param(
[string]$vlan
)
foreach ($i in $args)
{
Write-Host $i
}
Write-Host $vlan
Cela fonctionne si vous passez un -vlan
paramètre mais si vous ne le faites pas, le script attribue automatiquement le dernier nom de serveur à $vlan
.
Alors, comment pouvez-vous transmettre un ou plusieurs paramètres plus un paramètre nommé facultatif à un script PowerShell?
Idéalement, voici des exemples valables:
.\script.ps1 host1
.\script.ps1 host1 host2 host3
.\script.ps1 host1 host2 -vlan office
la source
Les paramètres prennent l'entrée avant les arguments. Ce que vous devez faire à la place, c'est ajouter un paramètre qui accepte un tableau et en faire le premier paramètre de position. ex:
Alors appelez-le comme:
Notez la virgule entre les valeurs. Cela les rassemble dans un tableau
la source
Une façon de le faire serait comme ceci:
Cela permettrait d'entrer plusieurs hôtes avec des espaces.
la source
J'appelle un script planifié qui doit se connecter à une liste de serveurs de cette façon:
Puis à l'intérieur du script:
L'opérateur split renvoie un tableau de chaîne
la source