Использование System.Management для запроса к серверу VMware - PullRequest
0 голосов
/ 25 мая 2011

Сводка: возможно ли указать порт, который будет использоваться при запросе WMI с использованием System.Management;

У меня есть сценарий python под Linux, который запрашивает, используя WBEM, классы на ряде серверов ESXi для проверкипредупреждения или ошибки в различных подсистемах.Ранее отдельно я написал приложение WPF, которое запрашивает количество ящиков WinTel на предмет их использования диска и т. Д. С помощью WMI.

Я хочу написать новое приложение 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, недоступный на удаленном сервере.Я думаю, это потому, что я сначала пытаюсь установить вызов RPC на 135, который не размещен на сервере ESX.У меня вопрос, как можно указать порт 5989 или есть что-то прямое, что я могу использовать в .net, чтобы выполнить то, что мне нужно сделать.Наивно, я думаю, что структура классов в WMI / WBEM выглядит одинаково, конечно, это можно сделать: - /

Ответы [ 2 ]

0 голосов
/ 07 ноября 2011

Как сказано, классы WMI в .net не поддерживают WBEM.В конце концов я написал некоторый код для VMware.Vim.dll, в котором есть хорошая документация о том, что мне нужно было сделать.

0 голосов
/ 14 октября 2011

System.Management можно использовать только для подключения к другим машинам Windows с WMI и не поддерживает WBEM.Единственная клиентская библиотека C # WBEM, которую я видел, это http://code.google.com/p/wbemtools/,, но она не выглядит очень зрелой.

...