我需要在主脚本的不同部分调用此函数几次。它只是查看软件是否已安装(软件名称作为参数)。
这只是代码片段,就是这个函数。它的远程方面工作正常。
'*************************************************************************
' This Subroutine checks if software is installed on system
'*************************************************************************
Sub CheckInstalledSoftware(item)
' This sub is VERY slow
blnCondition = False 'Simple check to see if software was found
WScript.Echo("Check if " & item & " is installed.")
WScript.Echo("------------------------------------")
Set colSoftware = objWMISrvc.ExecQuery("SELECT * FROM Win32_Product WHERE Name = '" & item & "'")
For Each objSoftware in colSoftware
If (objSoftware.InstallState = 5) Then
WScript.Echo(item & " is installed" & vbCrLf)
blnCondition = True
End If
Next
If blnCondition <> True Then
WScript.Echo(item & " is not installed" & vbCrLf)
End If
End Sub
答案 0 :(得分:2)
不幸的是,没有办法让这更快。 Win32_Product类有很大的开销。您唯一的选择是找到不需要使用此特定WMI类的方法。如果您有其他代码,则可以在执行其他操作时异步执行此部分。如果打开“添加和删除程序”对话框,您会注意到性能相同。