Powershell - 调用远程 WMI 对象 - RPC 错误 HRESULT:0x800706BA(RPC 服务器不可用)
-
05-07-2019 - |
题
我在 Get-WmiObject 和该对象的使用方面遇到了一些麻烦。
以防万一,我正在连接到远程计算机 - 该计算机不在 AD 中,而是在互联网中。
我正在使用凭据,并且可以通过命令检索 WMI 类或对象的列表(具体来说,我想使用 Win32_Process):
$credential = Get-Credential
$class = Get-WmiObject -list -computer "xyz" -credential $credential | Where-Object {$_.Name -eq "Win32_Process" }
$object = Get-WmiObject -class Win32_Process -computer "xyz" -credential $credential
当我更改主机名或凭据时,我收到“RPC 不可用”或未经授权的访问错误。因此我假设 RPC 服务器和 WMI 对象和类的检索是有效的。
但是当我检索它们时,我无法使用它们。在任何尝试它的情况下(调用方法或 Get-Member),它都会抛出此错误:
"Server RPC není k dispozici. (Výjimka na základě hodnoty HRESULT: 0x800706BA)"
(It's a czech localization of: Server RPC is not available. (Exception based on the value of HRESULT: 0x800706BA)
我还没有找到任何其他类似错误的例子。我在 Vista Ent 上使用 PowerShell 1.0。机器。目标机器是Win2003 R2(产品服务器将为Win.服务。2008 年 - 尚未测试)。
我将不胜感激任何建议。谢谢。
解决方案
我收到错误“RPC 不可用”或未经授权的访问。因此我假设 RPC 服务器和 WMI 对象和类的检索是有效的。
不幸的是,这不是一个安全的假设。如果您尝试通过 WMI 连接到不存在的计算机上的命名空间,例如foo("\foo oot\cimv2"),你会得到这个错误:
0x800706BA ("The RPC server is unavailable.")
此外:
我正在连接到远程计算机 - 不在 AD 中,而是在互联网中。
请注意,互联网上的 WMI 将很难发挥作用。即使您可以 ping 通目标计算机,也不意味着您能够通过 WMI 连接到它。DCOM 使用一堆端口来连接防火墙、NAT 路由器等。会很高兴地阻止。如果您的完全相同的呼叫适用于本地主机但不适用于互联网,那么您就会遇到问题。
如果您控制防火墙,则可以考虑限制 DCOM 使用的端口,然后打开这些端口。如果您只是使用野生互联网,也许您可能想考虑设置 VPN,我认为这应该可以消除“互联网”问题?