我正在 PowerShell 中编写一个超级简单的脚本。该脚本的目标是从一个 txt 文件中读取服务器名称列表,并从另一个 txt 文件中读取一个命令块。操作的结果应该是包含信息的第三个 txt 文件。
这里有一些代码:
cls
$usr = Read-Host "Please insert username, you'll be asked for password later"
$path = Read-Host "Insert a valid path for ServerList.txt file"
$serverList = Get-Content -Path $path | Out-String
$path = Read-Host "Insert a valid path fom Command.txt file"
$commandBlock = Get-Content -Path $path | Out-String
echo "Command: " $commandBlock "will be executed on " $serverList
echo "Press CTRL+Z to abort or"
pause
Invoke-Command -ComputerName $serverList -ScriptBlock { $commandBlock } -credential $usr
Serverlist.txt 是包含类似“server1,server2,server3”的纯文本,而 command.txt 仅包含此“Get-WmiObject Win32_BIOS | Select-Object SerialNumber”
为什么错误是 Invoke-Command :一个或多个计算机名称无效。如果您尝试传递 URI,请使用 -ConnectionUri 参数,或传递 URI 对象而不是字符串。?
我什至尝试用 $serverlist.toString() 替换 $serverlist,但它不起作用。我在某处读到,在这种情况下 $serverlist 是一个数组,我该怎么做才能使一切正常?
如果您通过控制台输入字符串,请考虑https://technet.microsoft.com/en-us/library/hh849719.aspx Invoke-Commands 使用“server1,server2,server3”格式。