У меня есть сценарий, которому я передаю имя (а) сервера в $ args.
Таким образом, я могу делать что-то с этим (этими) серверами, используя foreach
:
.\script.ps1 host1 host2 host3
foreach ($i in $args)
{
Do-Stuff $i
}
Я хочу добавить именованный необязательный параметр vlan. Я пробовал:
Param(
[string]$vlan
)
foreach ($i in $args)
{
Write-Host $i
}
Write-Host $vlan
Он работает, если вы передаете -vlan
параметр, но если вы этого не сделаете, скрипт автоматически присваивает последнее имя сервера $vlan
.
Итак, как можно передать один или несколько параметров, а также необязательный именованный параметр в сценарий PowerShell?
В идеале вот допустимые примеры:
.\script.ps1 host1
.\script.ps1 host1 host2 host3
.\script.ps1 host1 host2 -vlan office
источник
Параметры вводятся перед аргументами. Вместо этого вам следует добавить параметр, который принимает массив, и сделать его первым параметром позиции. пример:
Тогда назовите это так:
Обратите внимание на запятую между значениями. Это собирает их в массив
источник
Один из способов сделать это:
Это позволит вводить несколько хостов с пробелами.
источник
Я вызываю запланированный сценарий, который должен подключиться к списку серверов следующим образом:
Затем внутри скрипта:
Оператор разделения возвращает массив строк
источник