1. ホーム
  2. powershell

[解決済み] 1つのPowerShellスクリプトのパラメータに複数の値を渡す

2022-09-27 05:08:16

質問

サーバー名を$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

どのように解決するのですか?

最も簡単な方法は、おそらく 2 つのパラメータを使用することです。1 つはホスト (配列でも可) で、もう 1 つは vlan です。

param([String[]] $Hosts, [String] $VLAN)

の代わりに

foreach ($i in $args)

を使用することができます。

foreach ($hostName in $Hosts)

ホストが一つしかない場合、foreachループは一度だけ繰り返し実行されます。複数のホストをスクリプトに渡すには、配列として渡してください。

myScript.ps1 -Hosts host1,host2,host3 -VLAN 2

...といった具合です。