Сводка: возможно ли указать порт, который будет использоваться при запросе 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 выглядит одинаково, конечно, это можно сделать: - /