Powershell - 调用远程 WMI 对象 - RPC 错误 HRESULT:0x800706BA(RPC 服务器不可用)

Posted

技术标签:

【中文标题】Powershell - 调用远程 WMI 对象 - RPC 错误 HRESULT:0x800706BA(RPC 服务器不可用)【英文标题】:Powershell - calling remote WMI objects - RPC error HRESULT: 0x800706BA (RPC server not available) 【发布时间】:2009-06-16 07:54:17 【问题描述】:

我在 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. Serv. 2008 - 尚未测试)。

如果有任何建议,我将不胜感激。谢谢。

【问题讨论】:

澄清一下,您可以成功获取 $class 和 $object 变量并将它们写入输出,但是对它们执行调用方法会出现此错误?您能否更具体地了解您尝试调用的方法? 【参考方案1】:

我收到“RPC 不可用”错误或未经授权的访问。因此,我假设 RPC 服务器和 WMI 对象和类的检索工作正常。

很遗憾,这不是一个安全的假设。 如果您尝试通过 WMI 连接到不存在机器上的命名空间,例如foo ("\foo\root\cimv2"),你会得到这个错误:

0x800706BA ("The RPC server is unavailable.")

另外:

我正在连接到远程计算机 - 它不在 AD 中,而是在互联网中。

请注意,通过 Internet 的 WMI 将很难开始工作。 即使您可以 ping 目标计算机,这并不意味着您可以通过 WMI 连接到它。 DCOM 使用了一堆端口,防火墙、NAT 路由器等会很高兴地阻止这些端口。如果您的完全相同的调用适用于本地主机但不能通过 Internet,那么您就有问题了。

如果您控制防火墙,则可以考虑限制 DCOM 使用的端口,然后打开这些端口。 如果您只是在使用狂野的互联网,也许您可​​能想考虑设置一个 ***,我认为这应该可以消除“互联网”问题?

【讨论】:

以上是关于Powershell - 调用远程 WMI 对象 - RPC 错误 HRESULT:0x800706BA(RPC 服务器不可用)的主要内容,如果未能解决你的问题,请参考以下文章

powershell 从本地和远程设备获取WMI数据

在没有远程 powershell 或 WMI 的情况下获取远程 SMB/CIFS 共享的权限

PowerShell远程管理01——Powershell远程管理依赖的服务及配置

如何在 PowerShell 中调用带有输出参数的方法?

WMI如何远程执行命令?

使用Powershell 的获取别的机器WMI类失败解决方法!