我有一个脚本,该脚本使用Invoke-Command在19个不同的服务器上并行运行脚本。我必须提供带有-ComputerName参数的计算机名称列表。
如果我这样设置变量:
$ serverlist =“ localhost”,“ BRKAXHF10”,“ BRKAXHF12”
并发出命令
调用命令-ComputerName $ serverlist-文件路径“ $ filepath \ AOSAutomatedStartup.ps1” -ErrorAction Stop
这完全符合我的要求。问题是,如果我尝试像这样构建变量$ serverlist:
$ serverlist = Get-content -path。\ serverlist.txt,其中serverlist.txt是包含本地主机,BRKAXHF10,BRKAXHF12的文本文件
或
我也尝试加载数组,然后使用:
$ serverlist = [string] :: Join(“,”,$ array)
无论我如何尝试使其更通用,使它起作用的唯一方法是在脚本中显式加载$ serverlist。
我已经完成写主机检查该变量的内容,它总是看起来很好。
我得到的错误是ComputerName列表中有一个无效的名称
任何建议或想法将不胜感激。
谢谢
您正在使用Get-Content
读取文件,因此一个好的做法是使用“相反”命令Set-Content
这样创建文件>
$serverlist = "localhost","BRKAXHF10", "BRKAXHF12" $serverlist | Set-Content .\serverlist.txt
如果现在使用
$serverlist = Get-Content .\serverlist.txt
读取此文件,则应该可以使用
您现在可以进一步检查文件,以了解PowerShell如何希望将列表(数组)存储在文件中,并查看每个服务器都在其自己的行中,而不是用逗号分隔的列表中。