PowerShell远程多PC本地管理员查询脚本:多主机输入报错问题
问题原因
你当前的脚本里,Read-Host获取到的是单个字符串(比如"computername1, computername2"),而Invoke-Command的-ComputerName参数需要的是字符串数组(每个元素对应一台主机)。直接把这个字符串传进去,PowerShell会把整个字符串当成一台主机的名字,自然找不到对应的机器,触发错误。
解决方案
修改脚本,把输入的逗号分隔字符串拆分成干净的主机名数组,再传给-ComputerName:
# 获取用户输入的逗号分隔主机名字符串 $hostnameInput = Read-Host -Prompt "Enter PC names (separated by comma)" # 按逗号分割,同时去掉每个主机名前后的空格,过滤掉空值(避免误输入多逗号的情况) $hostnames = $hostnameInput -split ',' | ForEach-Object { $_.Trim() } | Where-Object { $_ -ne '' } # 执行远程命令并导出结果 Invoke-Command -ComputerName $hostnames -ScriptBlock { Get-LocalGroupMember -Group "Administrators" } | Export-Csv C:\temp\localadmins.csv -NoTypeInformation
关键说明
-split ',':把输入的单个字符串按逗号拆分成多个元素的数组ForEach-Object { $_.Trim() }:去掉每个主机名前后的空格(比如输入"comp1, comp2"里的空格)Where-Object { $_ -ne '' }:过滤掉拆分后可能出现的空字符串(比如用户输入"comp1,,comp2"的情况)- 加上
-NoTypeInformation参数可以让导出的CSV文件更干净,不会包含PowerShell的类型信息
内容的提问来源于stack exchange,提问作者dptc19
相关产品推荐
相关产品推荐

