我该如何过滤服务器模型?

时间:2015-05-12 12:08:29

标签: vbscript wmi

我正在尝试查询服务器模型并基于特定类型的模型然后运行其他一些代码。

我已完成以下操作但我运行的服务器不是Gen9而是VMware因此,结果将返回到下面的Else语句 - 这是我期望的结果不正确。

如果我运行调试,那么colItems是空的(即这是真的,因为我运行的服务器是VMWare) - 是我对此问题的陈述 - 即,我认为它不应该是什么,但无法找到还有什么我可以改变它? If colItems Is Nothing Then

    strComputer = "."
    Set objWMIService = GetObject("winmgmts:" _
    & "{impersonationLevel=impersonate}!\\" & strComputer & "\root\cimv2")

    Set colItems = objWMIService.ExecQuery("Select * from Win32_ComputerSystem Where Model Like 'Gen9%'")

    If colItems Is Nothing Then
         WScript.Echo "This is not a Gen9 Server"
    Else
        WScript.Echo "This IS a Gen9 Server"
    End If

结果:(这是我期待的结果不正确)

D:\>cscript Intel_Teaming_Install.vbs
Microsoft (R) Windows Script Host Version 5.8
Copyright (C) Microsoft Corporation. All rights reserved.

This IS a Gen9 Server

1 个答案:

答案 0 :(得分:1)

如果服务器匹配查询,则无关紧要。 objWMIService.ExecQuery调用将始终(如果没有错误)返回集合。此集合将保存匹配的实例或将为空(集合中没有项目)。

在你的情况下

If colItems.Count < 1 Then 
     WScript.Echo "This is not a Gen9 Server"
Else
    WScript.Echo "This IS a Gen9 Server"
End If