Как получить состояние виртуальной машины на Hyper-v с помощью Delphi или C # - PullRequest
1 голос
/ 26 октября 2011

Есть ли какой-либо компонент или класс, который позволяет мне получить статус всех виртуальных машин, работающих на Hyper-v?Я хочу иметь возможность перечислить все vms и их состояние (остановлено, работает, приостановлено и т. Д.).

Я знаю, что у Microsoft есть методы WMI, но все примеры, которые я получил, предназначены для .Net и ни для Delphi.,Я должен быть в состоянии преобразовать эти классы в Delphi, но было бы проще, если бы я мог использовать что-то уже для Delphi.

EDIT

У меня есть пример на C #:

/

/ define the information we want to query - in this case, just grab all properties of the object
ObjectQuery queryObj = new ObjectQuery("SELECT * FROM Msvm_ComputerSystem");

// object for storing WMI connection options
// pass the "user", "password" and "domain" from command-line
// don't hard-code these into the application!
ConnectionOptions connOpts = new ConnectionOptions();
connOpts.Username  = user;
connOpts.Authority = "ntlmdomain:" + domain;
connOpts.Password  = password;

// management scope object
ManagementScope manScope = new ManagementScope(@"\\RemoteSystem\root\virtualization", connOpts);

// connect and set up our search
ManagementObjectSearcher vmSearcher = new ManagementObjectSearcher(manScope, queryObj);
ManagementObjectCollection vmCollection = vmSearcher.Get();

// loop through the VMs
foreach (ManagementObject vm in vmCollection)
{
    // display VM details
    Console.WriteLine("\nName: {0}\nStatus: {1}\nDescription: {2}\n",
                      vm["ElementName"].ToString(),
                      vm["EnabledState"].ToString(),
                      vm["Description"].ToString());
}

Я попытался запустить это в Visual Studio, чтобы посмотреть, работает ли он, поэтому я могу попытаться перевести его на Delphi.Но даже если я изменил имя пользователя, домен и пароль, я все еще получил эту ошибку:

{"The RPC server is not available. (HRESULT: 0x800706BA)"}

Ответы [ 2 ]

3 голосов
/ 26 октября 2011

Самая последняя версия Delphi для WMI - это компоненты Rodrigos:

wmi-delphi-code-creator

и

объектно-паскаль-Wmi-класс-генератор

1 голос
/ 26 октября 2011

Существует бесплатный код Delphi для доступа к WMI на Magenta Systems , в MagWMI . Он поставляется с полным исходным кодом, включая демонстрационное приложение, которое позволяет запускать запросы WMI. На текущей веб-странице (ссылка выше) написано, что она совместима с текущими версиями Windows (и Delphi).

Я не знаю, работает ли он специально с виртуализацией, но он по крайней мере даст вам возможность начать использовать WMI из кода Delphi. (РЕДАКТИРОВАТЬ: Кажется, что демо задокументировано как работающее только на локальном компьютере, так что нужно передать меньше параметров, чтобы сделать демо более понятным. Тем не менее, он все еще показывает основы использования WMI с Delphi, поэтому ты в пути.)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...