【发布时间】:2018-05-08 20:13:22
【问题描述】:
我正在尝试编写一个 VBScript,它从同一个 WMI 类 (Win32_DiskDrive) 中提取 3 个不同的属性。如果您有多个驱动器,该类会提供一个数组。我想将数组中的所有结果都分配给 SCCM 变量,但这样做时遇到了麻烦,因为我以前从未做过这样的事情。
这是我的脚本:
Const wbemFlagReturnImmediately = &h10
Const wbemFlagForwardOnly = &h20
Dim objWMIService, objItem, colItems, strComputer, Index, Model, Size
Dim Index(4)
Index(0) = Index0
Index(1) = Index1
Index(2) = Index2
Index(3) = Index3
Dim Model(4)
Model(0) = Model0
Model(1) = Model1
Model(2) = Model2
Model(3) = Model3
Dim Size(4)
Size(0) = Size0
Size(1) = Size1
Size(2) = Size2
Size(3) = Size3
strComputer = "."
Set objWMIService = GetObject("winmgmts:\\" & strComputer & "\root\cimv2")
Set colItems = objWMIService.ExecQuery("Select * from Win32_DiskDrive", "WQL", wbemFlagReturnImmediately + wbemFlagForwardOnly)
Set env = CreateObject("Microsoft.SMS.TSEnvironment")
For Each objItem in colItems
Index(4) = objItem.Index
Model(4) = objItem.Model
Size(4) = objItem.Size
env("DriveIndex") = Index(4)
env("DriveModel") = Model(4)
env("DriveBytes") = Size(4)
Next
【问题讨论】:
-
您的问题是如何根据 WMI 对象的属性构建不同的数组?还是如何为 SCCM 变量赋值?
-
您需要为每个驱动器使用不同的变量,或者您需要将结果连接成一个字符串。按照您在此处的方式,列表中的最后一个驱动器将被分配给变量,因为循环将导致“对于每个 objItem”的值被覆盖。您如何处理这实际上取决于您以后希望如何处理这些值。
-
Ansgar,我一般都知道如何制作 SCCM 变量,但我需要知道如何从 WMI 中获取正确的值,以便将它们分配为变量。