如何在PowerShell脚本中使用逗号分隔的多个参数?

时间:2015-12-23 06:32:18

标签: powershell automation powershell-v3.0

我正在尝试mstsc到多个服务器,但我仍然坚持如何继续。我不想使用凭据,只需打开窗口。

我有

param([parameter(Mandatory=$True)] $Servername
mstsc /v: $Servername

所以我可以打电话给PS> script servername

但我想弄清楚如何在PS窗口中输入多个服务器,例如:

PS> script1 server1, server2, server3,......以及我需要的任何东西

所有这些都应该通过mstsc /v: server1 - server3

这在PowerShell中是否可行,如果可以,怎么做?

2 个答案:

答案 0 :(得分:0)

你不需要一个功能来做到这一点。而是使用foreach-object循环或'Server1','server2' | foreach-object {mstsc.exe /v: $_ } 构造。

Get-content path_to_servers.txt | 
    foreach-object {mstsc.exe /v: $_ }

ViewController

答案 1 :(得分:0)

在参数块中将ServerName参数转换为[string[]]类型,然后为每个字符串启动mstsc

script1.ps1

param(
  [Parameter(Mandatory=$true,Position=0)]
  [string[]]$ServerName
)

foreach($Name in $ServerName){
    mstsc.exe /v $Name
}

现在你可以这样做:

PS> .\script1.ps1 server1,server2,server3

PS。我倾向于使用参数名称ComputerName而不是ServerName