$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
...または似たようなもの。