【问题标题】:In VBScript, how can I retrieve the first element of an InstancesOf collection?在 VBScript 中,如何检索 InstancesOf 集合的第一个元素?
【发布时间】:2020-06-16 12:39:09
【问题描述】:

我正在编写应识别操作系统详细信息的 VBScript。我在这里找到了一个使用 InstancesOf Win32_Operating 系统的示例,但不是示例中的 foreach 循环,我只想解决第一次出现的问题,所以我这样做了:

Set SystemSet = GetObject("winmgmts:").InstancesOf ("Win32_OperatingSystem")
Set System = SystemSet.Item(0)

也尝试过Set System = SystemSet(0),但每次我都会收到一般性的失败错误消息(法语中的 Echec générique)。

我怎样才能做到这一点,以便我可以比较 System.Caption 字符串?

【问题讨论】:

  • 你试过这样吗:Set SystemSet = GetObject("winmgmts:").InstancesOf ("Win32_OperatingSystem") : For Each System In SystemSet : sys = System.Caption : Next : WScript.Echo sys
  • 我会尝试使用GetObject("winmgmts:").InstancesOf("Win32_OperatingSystem").ItemIndex(0).Caption(我认为它仅适用于Windows Vista)或将集合的For Each循环处理封装在一个辅助函数中

标签: vbscript wmi


【解决方案1】:

GetObject("winmgmts:") 返回一个 SWbemServices 对象。根据SWbemServices 对象的文档,InstanceOf() 方法:

来自SWbemServices.InstancesOf method
创建一个枚举器,根据用户指定的选择条件返回指定类的实例。

枚举器的想法是枚举对象集合,这适用于 VBScript For Each statement 迭代枚举器。

一个简单的例子是;

Dim swbemInstances, swbemInstance
Set swbemInstances = GetObject("winmgmts:").InstancesOf("Win32_OperatingSystem")
For Each swbemInstance In swbemInstances
  WScript.Echo swbemInstance.Caption
Next

您可以使用文档所述的ItemIndex 方法直接从枚举器访问实例;

来自SWbemObjectSet.ItemIndex method
将与指定索引关联的SWbemObject 返回到集合中。索引指示元素在集合中的位置。集合编号从零开始。


注意:有趣的是,文档实际上引用了 Win32_OperatingSystem 类作为示例,您可能只想检索一个实例,并解释了如何使用 ItemIndex 来促进它。

来自SWbemObjectSet.ItemIndex method - Examples
每个操作系统安装只存在一个Win32_OperatingSystem 实例。创建 GetObject 路径以获取单个实例很麻烦,因此脚本通常会枚举 Win32_OperatingSystem,即使只有一个实例可用。下面的 VBScript 代码示例展示了如何使用 ItemIndex 方法在不使用 For Each 循环的情况下访问一个 Win32_OperatingSystem

类似的东西;

Dim swbemInstance
Set swbemInstance = GetObject("winmgmts:").InstancesOf("Win32_OperatingSystem").ItemIndex(0)
WScript.Echo swbemInstance.Caption

the comments中也提到过

【讨论】:

    猜你喜欢
    • 2021-12-08
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-05-02
    • 2012-02-15
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多