cmd - 为什么我在 CMD 和 VBS 之间得到不同的结果?

标签 cmd vbscript wmic

当我在 CMD 提示符下发出以下命令时,将为 AdapterRAM 对象返回正确的值:

WMIC Path Win32_VideoController Get AdapterRAM

返回正确值 8589934592。但是,当我使用带有相同查询的 VBScript 时,同一 AdapterRam 对象返回不正确的值:

sPC = "."
Set objWMIService = GetObject("winmgmts:{impersonationLevel=impersonate}!\\" & sPC & "\root\cimv2")
Set cSettings = objWMIService.ExecQuery("Select AdapterRAM From Win32_VideoController Where DeviceID='VideoController1'")
For Each oPC in cSettings
    GPURAMSize = oPC.AdapterRAM
    WScript.Echo GPURAMSize
Next

同一 AdapterRAM 对象返回错误值 -1048576。

我在这里遗漏了什么吗?为什么从 CMD 提示符和 VBScript 中使用相同的查询返回的值存在差异?

提前致谢。

最佳答案

感谢所有提供评论的人的帮助,尤其是用户 692942 提供的链接帮助我解决了问题。这是我想出的...

strComputer = "."
Dim VideoController, PosValueBegin, PosValueEnd, Length, StringToFind
Set objWMIService = GetObject("winmgmts:{impersonationLevel=impersonate}!\\" & strComputer & "\root\cimv2")
Set cSetting = objWMIService.ExecQuery("Select Name, Manufacturer, Model, SystemSKUNumber, TotalPhysicalMemory From Win32_ComputerSystem")
mathConversion = 1024 * 1024 * 1024
Set cSetting = objWMIService.ExecQuery("Select DeviceID, Caption, AdapterRAM From Win32_VideoController Where DeviceID='VideoController1'")
For Each objComputer in cSetting
    GPUID = objComputer.Caption
Next
For Each objComputer in cSetting
    StringToFind = "AdapterRAM = "
    VideoController = objComputer.GetObjectText_(0)
    PosValueBegin = InStr(VideoController, StringToFind) + Len(StringToFind)
    PosValueEnd = InStr(PosValueBegin, VideoController, ";")
    Length = PosValueEnd - PosValueBegin
    ActualNumber = Mid(VideoController, PosValueBegin, Length)
    GPURAMSize = RoundUp(ActualNumber / mathConversion)
Next
wScript.Echo "GPU:  " & GPUID & " (" & GPURAMSize & "GB)"
wScript.Quit

关于cmd - 为什么我在 CMD 和 VBS 之间得到不同的结果?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/72736346/

相关文章:

vbscript:如何将日期转换为天和时间

excel - 使用 Excel,尝试从外部 HTA 中查找真正使用过的范围

javascript - NodeJS、Windows、wmic 标准输入

go - 通过 GUID 卸载应用程序

windows - WMIC命令批量输出非UTF-8文本文件

windows 命令行 多个命令

batch-file - CMD:文件任务,打开目录并选择文件

java - Intellij 标准输入重定向

windows - 将函数的值返回给批处理脚本中的函数

vbscript - 数组上的拆分函数