我正在尝试连接(本地)以获取虚拟机及其属性的列表。我已经破解了一些我找到的代码,但是我的代码无法连接,所以我只能假设连接字符串是错误的。
使用Server 2012,Hyper-V
private void listVirtualMachines() {
ManagementScope manScope = new ManagementScope(@"\\LOCALHOST\root\cimv2");
if (manScope.IsConnected) {
ObjectQuery queryObj = new ObjectQuery("SELECT * FROM Msvm_ComputerSystem");
// connect and set up our search
ManagementObjectSearcher vmSearcher = new ManagementObjectSearcher(manScope, queryObj);
ManagementObjectCollection vmCollection = vmSearcher.Get();
// loop through the machines
foreach (ManagementObject vm in vmCollection) {
// display VM details
LogString(vm["ElementName"].ToString());
LogString(vm["EnabledState"].ToString());
LogString(vm["Description"].ToString());
}
} else {
//WE END UP HERE EVERY TIME!
LogString("Cannot Connect to ManagementScope!");
}
} //funct
答案 0 :(得分:0)
在Server 2012中,Msvm_ComputerSystem位于WMI名称空间root\virtualization\v2
中,因此代码应为:
ManagementScope manScope = new ManagementScope(@"\\.\root\virtualization\v2");
manScope.Connect();