使用Powershell调用命令,从外部文件加载-Computername变量不起作用

问题描述 投票:0回答:1

我有一个脚本,该脚本使用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列表中有一个无效的名称

任何建议或想法将不胜感激。

谢谢

powershell invoke-command
1个回答
0
投票

您正在使用Get-Content读取文件,因此一个好的做法是使用“相反”命令Set-Content这样创建文件>

$serverlist = "localhost","BRKAXHF10", "BRKAXHF12"
$serverlist | Set-Content .\serverlist.txt

如果现在使用$serverlist = Get-Content .\serverlist.txt读取此文件,则应该可以使用

您现在可以进一步检查文件,以了解PowerShell如何希望将列表(数组)存储在文件中,并查看每个服务器都在其自己的行中,而不是用逗号分隔的列表中。

© www.soinside.com 2019 - 2024. All rights reserved.