要为Local ManagementScope指定什么

时间:2015-05-12 09:04:34

标签: c# wmi hyper-v

我正在尝试连接(本地)以获取虚拟机及其属性的列表。我已经破解了一些我找到的代码,但是我的代码无法连接,所以我只能假设连接字符串是错误的。

使用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

1 个答案:

答案 0 :(得分:0)

在Server 2012中,Msvm_ComputerSystem位于WMI名称空间root\virtualization\v2中,因此代码应为:

ManagementScope manScope = new ManagementScope(@"\\.\root\virtualization\v2");
manScope.Connect();