моя цель: управлять виртуальными машинами Hyper-V удаленно, используя C # и WMI, что означает: перечислять виртуальные машины, запускать и останавливать их. Целевым сервером является Windows Server 2012R2.
Текущее состояние:
ObjectQuery queryObj = new ObjectQuery("SELECT * FROM Msvm_ComputerSystem");
ConnectionOptions connOpts = new ConnectionOptions();
connOpts.Username = @"DOMAIN\ADMINISTRATOR";
connOpts.Password = "PASSWORD";
connOpts.EnablePrivileges = true;
ManagementScope manScope = new ManagementScope(@"\\IP_OF_SERVER\root\virtualization\v2", connOpts);
//ManagementScope manScope = new ManagementScope(@"\\.\root\virtualization\v2");
manScope.Connect();
// 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());
}
Когда я обмениваю IP-адрес сервера с .
при инициализации ManagementScope и запускаю программу локально на сервере, я могу прочитать данные виртуальной машины. Однако, когда код выполняется удаленно с включенным IP-адресом, я получаю UnauthorizedAccessException
о том, что это not supported
. Исключение выдается на ManagementScope.Connect()
.
В чем моя ошибка?
Заранее спасибо!
РЕДАКТИРОВАТЬ: Кажется, что проблема в нашей сети / конфигурации сервера, потому что даже простой запрос для машинных процессов не удается. Я должен ждать, пока удаленный доступ не будет настроен и обновит запрос как можно скорее.
EDIT2: проблема была в нашей сети, WMI должен быть настроен для удаленного доступа. Нить можно закрыть.