我正在研究腳本以檢測是否有在Windows計算機上運行的Antivirus解決方案。當在上運行Windows 8由於Windows Defender始終處於禁用狀態,因此運行第三方AV解決方案時禁用AntiVirus時出現誤報。我可以看到第三方AV的productState有效並正確報告,但是我的腳本只能拉取Windows Defender條目。我需要保留Windows Defender的條目,但是如果沒有安裝其他AntiVirus,我只對Windows Defender感興趣。我從命令提示符運行以下命令來檢索顯示兩個單獨條目的數據。如何在調用SecurityCenter2時忽略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的問題。