使用WMI查询“RPC服务器不可用”

我有一个运行Server 2008 R2的Web服务器工作组,我正在尝试管理一个检查所有磁盘空间的脚本。 几个月前我在设置服务器的时候设置了这个,我相信它运行正常。 现在我去检查并且它给出了一个错误,说“RPC服务器不可用”。 该脚本是一个C#ASP.NET页面,虽然我在PowerShell中尝试过类似的调用,它也会出现同样的错误。 该脚本可以正常访问本地计算机的信息,但无法访问远程服务器信息。

我花了最后几个小时挖掘了我能找到的所有东西,但没有任何效果。 我已经为WMI(远程和本地),DCOM(远程和本地)以及我正在访问的计算机的整个驱动器设置了权限。 我使用了计算机名称,IP地址,完整的计算机名称(xxx.echomountain.com),并尝试在ConnectionOptions对象上进行多次模拟和身份validation设置。

我知道我使用的用户名/密码是正确的,因为我可以访问另一个的分片目录

我可以检查哪些可能导致此错误的任何想法?

ConnectionOptions oConn = new ConnectionOptions(); oConn.Impersonation = ImpersonationLevel.Impersonate; oConn.EnablePrivileges = true; oConn.Username = username; oConn.Password = password; //oConn.Authentication = AuthenticationLevel.PacketPrivacy; string strNameSpace = @"\\"; if (srvname != "") strNameSpace += srvname + ".echomountain.com"; else strNameSpace += "."; strNameSpace += @"\root\cimv2"; ManagementScope oMs = new ManagementScope(strNameSpace, oConn); //get Fixed disk state ObjectQuery oQuery = new ObjectQuery("select FreeSpace,Size,Name from Win32_LogicalDisk where DriveType=3"); //Execute the query ManagementObjectSearcher oSearcher = new ManagementObjectSearcher(oMs, oQuery); //Get the results ManagementObjectCollection oReturnCollection = oSearcher.Get(); //loop through found drives and write out info double D_Freespace = 0; double D_Totalspace = 0; foreach (ManagementObject oReturn in oReturnCollection) { // Disk name //MessageBox.Show("Name : " + oReturn["Name"].ToString()); // Free Space in bytes string strFreespace = oReturn["FreeSpace"].ToString(); D_Freespace = D_Freespace + System.Convert.ToDouble(strFreespace); // Size in bytes string strTotalspace = oReturn["Size"].ToString(); D_Totalspace = D_Totalspace + System.Convert.ToDouble(strTotalspace); boxSize = (D_Totalspace / GB).ToString("##.00"); boxFree = (D_Freespace / GB).ToString("##.00"); Response.Write(srvname + ":" + boxSize + ":" + boxFree); } 

‘/’应用程序中的服务器错误。

RPC服务器不可用。 (来自HRESULT的exception:0x800706BA)

描述:执行当前Web请求期间发生未处理的exception。 请查看堆栈跟踪以获取有关错误及其源自代码的位置的更多信息。

exception详细信息:System.Runtime.InteropServices.COMException:RPC服务器不可用。 (来自HRESULT的exception:0x800706BA)

来源错误:

第64行:第65行://获取结果第66行:ManagementObjectCollection oReturnCollection = oSearcher.Get(); 第67行:第68行://遍历找到的驱动器并写出信息

源文件:c:\ Web \ medelaimages.com \ iis \ tool \ boxinfoagent.aspx行:66

堆栈跟踪:

[COMException(0x800706ba):RPC服务器不可用。 (来自HRESULT的exception:0x800706BA)] System.Runtime.InteropServices.Marshal.ThrowExceptionForHRInternal(Int32 errorCode,IntPtr errorInfo)+0 System.Management.ManagementScope.InitializeGuts(Object o)+674 System.Management.ManagementScope.Initialize()+ 347 System.Management.ManagementObjectSearcher.Initialize()+ 189 System.Management.ManagementObjectSearcher.Get()+ 54 ASP.tool_boxinfoagent_aspx.Page_Load(Object sender,EventArgs e)位于c:\ Web \ medelaimages.com \ iis \ tool \ boxinfoagent中。 aspx:66 System.Web.Util.CalliHelper.EventArgFunctionCaller(IntPtr fp,Object o,Object t,EventArgs e)+25 System.Web.UI.Control.LoadRecursive()+71 System.Web.UI.Page.ProcessRequestMain( Boolean includeStagesBeforeAsyncPoint,Boolean includeStagesAfterAsyncPoint)+3048

版本信息:Microsoft .NET Framework版本:4.0.30319; ASP.NET版本:4.0.30319.1

该错误消息告诉您RPC已被阻止,这是Windows 7和2008上的默认策略设置。可以通过策略打开它,也可以使用WMI连接和管理主机。 在内部可信网络上,通常启用RPC。 美国政府计算机安全策略委员会,如创建FDCC和USGCB的那些, 没有推荐的RPC设置,因此可以启用它。 通过WMI管理实时系统非常困难,因为您无法查看远程主机的注册表,计划任务,文件夹和文件。 但是,您可以通过WMI轻松管理服务。

错误The RPC server is unavailable. (Exception from HRESULT: 0x800706BA) The RPC server is unavailable. (Exception from HRESULT: 0x800706BA)如果出现The RPC server is unavailable. (Exception from HRESULT: 0x800706BA)

  • 由于防火墙限制,目标计算机上的入站RPC / WMI连接被阻止

    要么

  • 只是因为您输入了目标机器的错误主机名/ IP地址。

任何身份validation和/或授权操作之前发生错误,因此在此步骤中不需要处理权限。 实际上,如果用户帐户缺少对特定命名空间的必要权限,则会出现另一个错误和错误代码: access denied. (0x80041003) access denied. (0x80041003)

MSDN文章介绍了为远程WMI访问添加防火墙例外: “远程连接到WMI” 。

只需转到IIS管理器。 在应用程序池中启动您的网站服务。 这个对我有用

此外,您需要在远程计算机上的Windows防火墙中启用Windows Management Instrumentation(WMI)规则。

1]打开Windows防火墙。
2]单击允许应用程序或function通过Windows防火墙。
3]为Windows Management Instrumentation(WMI)启用权限。

我遇到了同样的问题。 之前我在使用服务器IP时遇到此错误,但在使用服务器FQDN名称后能够连接。 排除故障后,我发现我的DNS PTR记录不正确。 在修复之后我也能够将WMI与IP地址连接起来。 我使用了wbemtest WMI测试工具。