【问题标题】:Nagios Issue - gwmi : The RPC server is unavailableNagios 问题 - gwmi:RPC 服务器不可用
【发布时间】:2013-05-30 01:40:04
【问题描述】:

我正在努力解决一个问题,即 RPC 服务器对于用 PowerShell 编写的 Nagios 脚本不可用。

当脚本在本地运行时,它会按预期完美运行。当它通过 NRPE 代理调用并由 nscp 服务运行时,它会失败并显示以下错误:

gwmi : The RPC server is unavailable. (Exception from HRESULT: 0x800706BA)
At C:\Program Files\NSClient++\scripts\check_win_uptime.ps1:30 char:8
+ $wmi = gwmi Win32_OperatingSystem -computer $ServerName
+ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+ CategoryInfo : InvalidOperation: (:) [Get-WmiObject], COMException
+ FullyQualifiedErrorId : GetWMICOMException,Microsoft.PowerShell.Commands
.GetWmiObjectCommand

脚本(或相关部分)的内容如下:

$wmi = gwmi Win32_OperatingSystem -computer $ServerName
$LBTime = $wmi.ConvertToDateTime($wmi.Lastbootuptime)
[TimeSpan]$uptime = New-TimeSpan $LBTime $(get-date)

没有防火墙正在运行,出于测试目的,所有端口都对服务器开放。

非常感谢任何建议。

迈克

【问题讨论】:

  • 您是否为 $servername 使用 FQDN? NRPE 代理 rus 具有高权限(以管理员身份运行)?
  • 嗨 C.B.,感谢您的 cmets。在这种情况下,它是不在域中的独立服务器。如果我使用我在 Nagios 主机文件中引用的 IP 地址、主机名或别名调用脚本,它们都适用于其他脚本 - 而不是那些涉及 WMI 的脚本。至于以管理员身份运行 NRPE,您能详细说明一下吗?它作为本地服务运行,其他依赖于管理员权限的脚本已经按预期运行。感谢您的帮助。

标签: powershell windows-server-2008 wmi nagios


【解决方案1】:

RPC 服务器不可用几乎总是没有在 Windows 防火墙中启用正确的设置。请参阅我在 WMI 团队中为 MSDN 编写的这个非常古老的主题,以记录问题。

Connecting thru Windows Firewall

【讨论】:

  • 谢谢,但 Windows 防火墙已禁用。还有其他想法吗?
  • 您的连接类型可能不会禁用它。您还可以检查 dcomconfig See the second topic,但通常显示为 E_ACCESSDENIED (0x80070005)。要检查的另一件事是身份验证设置(使用 -Impersonation Impersonate -Authentication PacketPrivacy),但这通常显示为 WMI_ACCESSDENIED (0x80040005)。
【解决方案2】:

Get-wmiobject -computer 非常挑剔。这对我有用:

$c = get-credential
Get-WmiObject -Class win32_computersystem -ComputerName comp001 -Credential $c 

但其他形式给出“Get-WmiObject : RPC 服务器不可用。(HRESULT 异常:0x800706BA)”错误:

Get-WmiObject win32_computersystem -ComputerName comp001 -Credential $c 
Get-WmiObject -Class win32_computersystem -ComputerName comp001 # running as same domain user as creds

所以看起来 -Class 和 -Credential 是强制性的。

有时只有这样的工作:

Get-WmiObject -ComputerName comp001 -Credential "dom\js" -Query "SELECT * FROM Win32_ComputerSystem"

【讨论】:

    【解决方案3】:

    我也遇到过类似的问题,但通过 CMD 使用任务列表查看远程进程。答案与烟花配置有关。将其转换为 PowerShell 命令,它将解决您的问题。

    netsh advfirework firework set rule group="windows management instrumentation (wmi)" new enable=yes

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2012-10-09
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多