使用System.Management查询VMware服务器

问题描述

| 摘要:是否可以使用
System.Management;
指定在查询WMI时使用的端口 我在Linux下有一个python脚本,该脚本使用WBEM查询许多ESXi服务器上的类,以检查各种子系统上的警告或错误。以前,我分别编写了WPF应用程序,该应用程序使用WMI查询许多WinTel盒的磁盘使用情况等。 我想编写一个新的WPF应用程序,该应用程序将执行与脚本相同的功能,并且我认为我可以使用WMI来完成此任务。下面是我的测试代码,为简洁起见删除错误处理,
Setoptions
是提供用户名和密码的私有函数
 foreach (string hostname in Properties.Settings.Default.Hosts)
     foreach (string WMIclass in Properties.Settings.Default.Classes)
     {
     ObjectQuery Query = new ObjectQuery(\"SELECT * FROM \" + WMIclass);
     ManagementObjectSearcher mos = GetMos(Query,hostname);
     foreach (ManagementObject mo in mos.Get())
         foreach (PropertyData pdc in mo.Properties)
             Debug.WriteLine(pdc.Name + \" \\t\\t: \" + pdc.Value);
     }

private ManagementObjectSearcher GetMos(ObjectQuery Query,string Hostname)
{
     Connectionoptions Options = Setoptions();
     ManagementScope Scope = new ManagementScope(\"\\\\\\\\\" + Hostname + \"\\\\root\\\\cimv2\",Options);
     return new ManagementObjectSearcher(Scope,Query);
}
问题是我在远程服务器上无法使用RPC。我认为这是因为我首先尝试在不是由ESX服务器托管的135上建立RPC调用。我的问题是如何指定端口5989,或者我可以在.net中使用一些简单的方法来执行我需要做的事情。天真的,我认为WMI / WBEM之间的类结构肯定相同:-/     

解决方法

System.Management仅可用于连接到其他运行WMI的Windows计算机,并且不支持WBEM。我看到的唯一的C#WBEM客户端库是http://code.google.com/p/wbemtools/,但是看起来还不很成熟。     ,如前所述,.net中的WMI类不支持WBEM。最后,我最终围绕VMware.Vim.dll编写了一些代码,其中包含有关需要执行的操作的良好文档。     

相关问答

Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其...
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。...
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbc...