VBScript问题-找不到检测子句的正确语法

时间:2018-11-09 09:33:09

标签: vbscript sccm

对不起,此代码有问题-来自

https://www.alexandreviot.net/2014/10/03/configmgr-2012-application-detection-method-for-software-update/#comment-40712

我通常不使用VB,而是使用PS,并尝试过各种编辑该代码第7行的事情:

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

没有成功。有人可以帮忙吗?对于某人来说这可能很容易-这将帮助我将vb用作不运行Windows Management Framework / PowerShell的旧硬件的检测子句。

'Returns if Windows KB2506143 installed
    Option Explicit
    Dim objWMI, strComputer
    strComputer = "."

    'Run the query
    Set objWMI = GetObject("winmgmts:{impersonationLevel=impersonate}!\\" &strComputer & "\root\cimv2")

    Dim listPatches
    Dim patch
    Set listPatches = objWMI.ExecQuery ("Select * from win32_QuickFixEngineering where HotFixID like 'KB960568'")
    For Each patch in listPatches
    Wscript.echo "Update installed"
    Next
    WScript.Quit


    C:\Users\royston\AppData\Local\Adersoft\VbsEdit\Temp\BCAWFOZT.vbs(7, 76) Microsoft VBScript compilation error: Expected ')'


    ***** script completed - exit code: 1 *****

先谢谢了。

1 个答案:

答案 0 :(得分:3)

这可能只是将代码粘贴到该站点用于解释它的内容中的问题。应该说

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

但是由于这确实有点像我的烦恼,我想补充一点,当不将strComputer用作变量时,使用strComputer的整个概念实际上是没有用的。 我知道在网络上的每个示例中都可以完成此操作,但是如果您想在本地而不是远程运行wmi,只需使用

Set objWMI = GetObject("winmgmts:{impersonationLevel=impersonate}!\\.\root\cimv2")

并放下strComputer = "."行。当像变量一样使用变量时,确实不需要使脚本更难阅读。