我跑的时候
Get-WmiObject win32_SystemEnclosure -Computer hostname | select serialnumber
Run Code Online (Sandbox Code Playgroud)
它适用于本地和远程主机.
当我为使用的主机列表执行此操作时
ForEach ($_ in gc u:\pub\list.txt) {
Get-WmiObject win32_SystemEnclosure -Computer $_ | select serialnumber | format-table -auto @{Label="Hostname"; Expression={$_}}, @{Label="Service Tag"; Expression={$_.serialnumber}}
}
Run Code Online (Sandbox Code Playgroud)
它返回
Get-WmiObject:RPC服务器不可用.(HRESULT异常:0x800706BA)
Dav*_*ant 34
检查防火墙中是否为每台远程计算机启用了"Windows Management Instrumentation(WMI-In)"规则.
或者在Administrative Command/Powershell提示符下运行:
netsh advfirewall firewall set rule group="Windows Management Instrumentation (WMI)" new enable=yes
Run Code Online (Sandbox Code Playgroud)
jim*_*ark 14
您的代码可能没有使用正确的机器名称,您应该仔细检查.
你的错误是:
Get-WmiObject:RPC服务器不可用.(HRESULT异常:0x800706BA)
这是机器无法访问时获得的结果.所以防火墙的建议是合理的,但在这种情况下可能不正确,因为你说这是有效的:
Get-WmiObject win32_SystemEnclosure -Computer hostname
Run Code Online (Sandbox Code Playgroud)
所以在你的情况下似乎执行这一行:
Get-WmiObject win32_SystemEnclosure -Computer $_
Run Code Online (Sandbox Code Playgroud)
$ _不包含正确的计算机名称.您可以检查$ _的类型和内容.可能是文件内容有问题.如果文件看起来正确,那么可能没有正确终止这些行.也许使用Write-Host仔细看看:
ForEach ($_ in gc u:\pub\list.txt) {
Write-Host "Get-WmiObject win32_SystemEnclosure -Computer '$_'"
Get-WmiObject win32_SystemEnclosure -Computer $_ | select serialnumber | format-table -auto @{Label="Hostname"; Expression={$_}}, @{Label="Service Tag"; Expression={$_.serialnumber}}
}
Run Code Online (Sandbox Code Playgroud)
Abh*_*hra 13
这可能是由于各种问题.我不能说你的案件中有哪一个.
以下给出的原因可能是:
一些与WMI相关的服务如下:
对于DCOM设置,请参阅:
HKLM\Software\Microsoft\OLE,价值:EnableDCOM该值应设置为"Y".
sxm*_*972 10
我遇到了同样的问题,但只有几台机器。我发现使用 Invoke-Command 在远程服务器上运行相同的命令是有效的。
所以而不是:
Get-WmiObject win32_SystemEnclosure -ComputerName $hostname -Authentication Negotiate
Run Code Online (Sandbox Code Playgroud)
用这个:
Invoke-Command -ComputerName $hostname -Authentication Negotiate -ScriptBlock {Get-WmiObject win32_SystemEnclosure}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
232471 次 |
| 最近记录: |