Microsoft Server 2012 R2 WMI(虚拟化/v2)未检测到虚拟机-VBScript

Microsoft Server 2012 R2 WMI(虚拟化/v2)未检测到虚拟机-VBScript,vbscript,wmi,hyper-v,wmi-query,hypervisor,Vbscript,Wmi,Hyper V,Wmi Query,Hypervisor,正如标题所示,我当前无法在VBScript中检索具有WMI查询的虚拟机列表。Hyper-V manager正确识别了相关主机上的3个虚拟机,但当我查询WMI时,只看到主机本身 下面是一个示例VBScript(由WMI代码创建者提供): 输出: Microsoft (R) Windows Script Host Version 5.8 Copyright (C) Microsoft Corporation. All rights reserved. ------------------------

正如标题所示,我当前无法在VBScript中检索具有WMI查询的虚拟机列表。Hyper-V manager正确识别了相关主机上的3个虚拟机,但当我查询WMI时,只看到主机本身

下面是一个示例VBScript(由WMI代码创建者提供):

输出:

Microsoft (R) Windows Script Host Version 5.8
Copyright (C) Microsoft Corporation. All rights reserved.
-----------------------------------
Msvm_ComputerSystem instance
-----------------------------------
Description: Microsoft Hosting Computer System
ElementName: TEST-VH

如果您有任何想法、建议或岩石可供查看,我们将不胜感激,谢谢

您可以将其提高一级,直接获取计算机名称,然后比较模型并相应提取。我没有安装任何VM来尝试此操作。但是试一试,让我知道它是否有效

strComputer = "."
Set objWMIService = GetObject("winmgmts:\\" & strComputer & "\root\cimv2")
Set colItems = objWMIService.ExecQuery("Select * from Win32_ComputerSystem",,48)

For Each objItem in colItems
strModel = objItem.Model
If instr(strModel, "Virtual Machine") Then
    Wscript.Echo "-----------------------------------"
    Wscript.Echo "Msvm_ComputerSystem instance"
    Wscript.Echo "-----------------------------------"
    Wscript.Echo "Description: " & objItem.Description
    Wscript.Echo "HostName: " & objItem.Name
End if
Next

里奇,谢谢你的建议。我尝试了它,最初在脚本点击'objItem.ElementName'时出错,因为很明显,Win32_ComputerSystem中不存在ElementName属性。尽管如此,我还是没有运气。我只得到物理硬件型号“PowerEdge R720”和描述“AT/AT兼容”作为结果。(注意:我在另一台功能正常的Hyper-V主机上得到了相同的结果。)Name确实返回了主机名。我已经更新了代码以反映我们的讨论。如果这已经解决了你的问题,请将此标记为答案。我仍然没有运气。如果我只是在代码中的“If”之外回显.Model、.Name和.Description,那么我得到的唯一结果就是主机本身的信息。我已经确认这与不同Hyper-V主机生成的行为相同。(注意:该主机使用我的原始代码正确显示其来宾。)编辑:我不确定发生了什么,但我的代码(上面)现在工作正常。这个问题已经解决了。
strComputer = "."
Set objWMIService = GetObject("winmgmts:\\" & strComputer & "\root\cimv2")
Set colItems = objWMIService.ExecQuery("Select * from Win32_ComputerSystem",,48)

For Each objItem in colItems
strModel = objItem.Model
If instr(strModel, "Virtual Machine") Then
    Wscript.Echo "-----------------------------------"
    Wscript.Echo "Msvm_ComputerSystem instance"
    Wscript.Echo "-----------------------------------"
    Wscript.Echo "Description: " & objItem.Description
    Wscript.Echo "HostName: " & objItem.Name
End if
Next