我正在尝试使用 WMI 从域中的所有计算机获取主机名、IP 和 MAC 地址,并将它们存储在文本文件中。当我运行我的代码时,我收到以下错误:
gwmi : The RPC server is unavailable. (Exception from HRESULT: 0x800706BA)>
At line:10 char:13
+ $base = gwmi win32_networkadapterconfiguration -computername $comp | where { ...
+ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+ CategoryInfo : InvalidOperation: (:) [Get-WmiObject], COMException
+ FullyQualifiedErrorId : GetWMICOMException,Microsoft.PowerShell.Commands.GetWmiObjectCommand
如果我对单个机器运行 gwmi,它工作正常。我可以得到我需要的信息
此脚本因上述错误而失败:
$computers = Get-Content -path F:\scripts\domain_computers.txt
foreach ($comp in $computers) {
$base = gwmi win32_networkadapterconfiguration -computername $comp | where {$_.dnsdomain -eq "mydomain.com"}
$machine = $base.DNSHostName
$mac = $base.MACAddress
$ip = $base.IPAddress
Write-Output "<$comp>`n`tname = $machine'n</$comp>" | Out-File F:\scripts\comp_list_test.txt -Append
}
write-ouput
仅用于测试。一旦工作,我想打印所有变量。我错过了什么?
编辑:
文本文件 domain_computers.txt 将每个计算机名放在单独的行上。没有空格或尾随字符。我还发现脚本工作正常。它在没有启用 WinRM 的机器上失败。当我在单个计算机上进行测试时,我只是碰巧在那些启用了 WinRM 的计算机上进行了测试。
我现在对此脚本有另一个问题,但会将其发布在一个新问题中,因为它与此无关。