将多个值传递给单个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
最简单的方法可能是使用两个参数:一个用于主机(可以是一个数组),一个用于vlan。

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

代替

foreach ($i in $args)

您可以使用

foreach ($hostName in $Hosts)

如果只有一个主机,foreach循环将仅迭代一次。要将多个主机传递给脚本,请将其作为数组传递:

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

…或类似的东西

法案

http://stackoverflow.com/questions/15120597/passing-multiple-values-to-a-single-powershell-script-parameter

本站文章除注明转载外,均为本站原创或编译
转载请明显位置注明出处:将多个值传递给单个PowerShell脚本参数