【发布时间】:2014-06-27 22:49:47
【问题描述】:
我正在编写一个脚本来检测 Windows 机器上是否运行了防病毒解决方案。在 Windows 8 上运行时,我收到误报,即在运行第三方防病毒解决方案时防病毒被禁用,因为 Windows Defender 始终存在,尽管已禁用。
我可以看到第三方防病毒软件的 productState 有效且报告正确,但我的脚本仅提取 Windows Defender 条目。
我需要保留 Windows Defender 的条目,但是我只对没有安装任何其他防病毒软件的 Windows Defender 感兴趣。我从命令提示符运行以下命令来检索数据,其中显示了两个单独的条目。
WMIC /Node:localhost /Namespace:\\root\SecurityCenter2 Path AntiVirusProduct Get /Format:List
如果安装了第三方杀毒软件,我只想抓取它,否则保留 Windows Defender 信息。
我试图通过调用 instanceGUID 并将其与 Windows Defender GUID 进行比较,但是我得到了一些误报。有没有办法让我正确解析这些数据,最好只查看第三方信息?
我包含完整的脚本以准确显示我正在查看的内容,如果需要,我可以将其删减:
Set objWMIServiceSC = GetObject("winmgmts:\\.\root\SecurityCenter2")
Set colAVItems = objWMIServiceSC.ExecQuery("Select * from AntiVirusProduct")
For Each objAntiVirusProduct In colAVItems
strinstanceGuid = (objAntiVirusProduct.instanceGuid)
strWinDefGUID = "{D68DDC3A-831F-4fae-9E44-DA132C1ACF46}"
If strinstanceGuid <> strWinDefGUID Then
AvStatus = Hex(objAntiVirusProduct.ProductState)
If (objAntiVirusProduct.ProductState = "393472" _
OR Mid(AvStatus, 2, 2) = "10" Or Mid(AvStatus, 2, 2) = "11" _
OR Mid(AvStatus, 5, 2) = "10" Or Mid(AvStatus, 5, 2) = "11") Then
strproductState = "ENABLED"
Else
strproductState = "DISABLED"
End If
Else
If Mid(AvStatus, 2, 2) = "10" Or Mid(AvStatus, 2, 2) = "11" _
OR Mid(AvStatus, 5, 2) = "10" Or Mid(AvStatus, 5, 2) = "11" Then
strproductState = "ENABLED"
Else
strproductState = "DISABLED"
End If
End If
If Mid(AvStatus, 4, 2) = "00" Then
strdefinitionState = "CURRENT"
ElseIf Mid(AvStatus, 4, 2) = "10" Then
strdefinitionState = "OUTDATED"
End If
Next
重申一下,这是一个 Windows 8 问题。
【问题讨论】:
标签: windows-8 vbscript wmi wmi-query securitycenter