単一の PowerShell スクリプト パラメータに複数の値を渡す 質問する

単一の PowerShell スクリプト パラメータに複数の値を渡す 質問する

$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

ベストアンサー1

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

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

の代わりに

foreach ($i in $args)

使用できます

foreach ($hostName in $Hosts)

ホストが 1 つしかない場合、 foreach ループは 1 回だけ反復されます。スクリプトに複数のホストを渡すには、配列として渡します。

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

...または似たようなもの。

おすすめ記事