从变量传递时调用命令计算机名称无效错误

Invoke Command Computer Name not valid error when passing from variable

我 运行 对 Invoke Command 进行了一些测试,发现了一些有趣的结果。

这是成功的代码片段。

Invoke-Command  -ComputerName serverA,serverB,serverC,serverD,serverE -ScriptBlock{Get-WindowsUpdate | Format-Table -AutoSize}

这是 return 错误的代码片段。

$servers="serverA,serverB,serverC,serverD,serverE"
Invoke-Command  -ComputerName $servers -ScriptBlock{Get-WindowsUpdate | Format-Table -AutoSize}

错误信息:

Invoke-Command : One or more computer names are not valid. If you are trying to pass a URI, use the -ConnectionUri parameter, or pass URI objects instead of strings.

为什么读取变量会出错?如何解决?

参数Computers 接受字符串集合。逗号被视为分隔符,以构建集合。用作: $servers="serverA,serverB,serverC,serverD,serverE" 是一个大字符串,包含逗号,而不是字符串集合。

应该是:$servers="serverA","serverB","serverC","serverD","serverE"