使用 vbscript 从远程计算机获取多个值

Getting multiple values from remote computers using vbscript

通过使用 vbScript(我已经多年未接触过)在环境中解决没有 PowerShell 的问题。

正在尝试使用以下方法获取信息:

    strComputer = "."
Set objWMIService = GetObject("winmgmts:\" & strComputer & "\root\cimv2")
Set colFiles = objWMIService.ExecQuery ("Select * from CIM_Datafile Where Name = 'c:\windows\system32\drivers\srv.sys'")
Set oss = objWMIService.ExecQuery ("Select caption from Win32_OperatingSystem")
Set wshShell = CreateObject( "WScript.Shell" )
strUserDomain = wshShell.ExpandEnvironmentStrings( "%USERDOMAIN%" )
For Each objFile in colFiles
    Wscript.Echo strComputer & "," & strUserDomain & "," & oss & "," & objFile.Version
Next

除了OS(来自oss),我可以得到所有的东西:

script.vbs(8, 5) Microsoft VBScript runtime error: Wrong number of arguments or invalid property assignment

如有任何帮助,我们将不胜感激。

将查询更改为:

Set oss = objWMIService.ExecQuery ("Select * from Win32_OperatingSystem")

现在您已经安装了所有 OS 中的 collection,您可以使用标题 属性 然后存储在数组中(以防万一,有多个 OS)

Dim arrCap()
Dim intCtr: intCtr=-1
For each os in oss
    intCtr=intCtr+1
    Redim preserve arrCap(intCtr)
    arrCap(intCtr) = os.Caption
Next

现在数组中包含了所有操作系统的操作系统版本。如果你只有一个 OS,你可以使用这个数组的第 0 个元素,如下所示:

Wscript.Echo arrCap(0)

您的最终代码应如下所示:

strComputer = "."
Set objWMIService = GetObject("winmgmts:\" & strComputer & "\root\cimv2")
Set colFiles = objWMIService.ExecQuery ("Select * from CIM_Datafile Where Name = 'c:\windows\system32\drivers\srv.sys'")
Set oss = objWMIService.ExecQuery ("Select * from Win32_OperatingSystem")
Set wshShell = CreateObject( "WScript.Shell" )

Dim arrCap()
Dim intCtr: intCtr=-1
For each os in oss
    intCtr=intCtr+1
    Redim preserve arrCap(intCtr)
    arrCap(intCtr) = os.Caption
Next

strUserDomain = wshShell.ExpandEnvironmentStrings( "%USERDOMAIN%" )
For Each objFile in colFiles
    Wscript.Echo strComputer & "," & strUserDomain & "," & arrCap(0) & "," & objFile.Version
Next

这是输出: