Отметка времени последнего обновления определения для Microsoft Security Essentials с помощью сценария
Есть ли способ проверить это через VBScript или Powershell? Я кратко посмотрел на SecurityCenter
а также SecurityCenter2
Классы WMI, но ни один из них не выглядит особенно полезным. Похоже, самый простой способ определить, что значение productState
через последнее в WMI, чтобы получить какое-то сообщение, которое означает, что AV считает, что все в порядке. Есть еще мысли?
2 ответа
Возможно, вам придется изменить FCS_REGKEY_ROOT в зависимости от версии, которую вы установили. Это работает для последней версии. Вытащил отсюда.
Option Explicit
const FCS_REGKEY_ROOT = "HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Microsoft Antimalware"
Dim SCAN_KEY, SIGNATUREUPDATES_KEY
Dim AV_VERSION_VALUE, AS_VERSION_VALUE, ENGINE_VERSION_VALUE, AV_DATE, AS_DATE
Dim LAST_SCAN_TIME, LAST_SCAN_TYPE, INSTALL_PATH_VALUE
SCAN_KEY=FCS_REGKEY_ROOT & "\Scan"
SIGNATUREUPDATES_KEY = FCS_REGKEY_ROOT & "\Signature Updates"
INSTALL_PATH_VALUE= FCS_REGKEY_ROOT & "\InstallLocation"
AV_VERSION_VALUE= SIGNATUREUPDATES_KEY &"\AVSignatureVersion"
AS_VERSION_VALUE= SIGNATUREUPDATES_KEY &"\ASSignatureVersion"
ENGINE_VERSION_VALUE= SIGNATUREUPDATES_KEY &"\EngineVersion"
AV_DATE= SIGNATUREUPDATES_KEY &"\AVSignatureApplied"
AS_DATE= SIGNATUREUPDATES_KEY &"\ASSignatureApplied"
LAST_SCAN_TIME= SCAN_KEY & "\LastScanRun"
LAST_SCAN_TYPE= SCAN_KEY & "\LastScanType"
'************ MAIN ************
Dim AV_Version, AS_Version, EngineVersion, ProductVersion
Dim AV_BuildDate, AS_BuildDate, LastScanTime, LastScanType
Dim objShell
set objShell = CreateObject("WScript.Shell")
'============ Get current info ============
AV_Version = objShell.RegRead(AV_VERSION_VALUE)
AS_Version = objShell.RegRead(AS_VERSION_VALUE)
EngineVersion = objShell.RegRead(ENGINE_VERSION_VALUE)
AV_BuildDate = BinaryToDate( objShell.RegRead(AV_DATE) )
AS_BuildDate = BinaryToDate( objShell.RegRead(AS_DATE) )
ProductVersion = GetProductVersion(INSTALL_PATH_VALUE)
LastScanTime = BinaryToDate( objShell.RegRead(LAST_SCAN_TIME) )
LastScanType = GetScanType( objShell.RegRead(LAST_SCAN_TYPE) )
'============ Display summary info ============
WScript.echo "Microsoft Forefront Client Security version: " & ProductVersion
WScript.echo "Engine version: " & EngineVersion
WScript.echo "Antivirus Definition: Version " & AV_Version & " created on " & AV_BuildDate
WScript.echo "Antispyware Definition: Version " & AS_Version & " created on " & AS_BuildDate
WScript.echo "Last scan: " & LastScanTime & " (" & LastScanType & ")"
'************ END MAIN ************
'===============================================================
'Function BinaryToDate will covert a binary DATE_TIME structure into a Variant date set to the local time
' Parameter: bArray - a VARIANT array of bytes
' Return: a VARIANT date
Function BinaryToDate(bArray)
dim Seconds,Days,dateTime
Set dateTime = CreateObject("WbemScripting.SWbemDateTime")
Seconds = bArray(7)*(2^56) + bArray(6)*(2^48) + bArray(5)*(2^40) + bArray(4)*(2^32) _
+ bArray(3)*(2^24) + bArray(2)*(2^16) + bArray(1)*(2^8) + bArray(0)
Days = Seconds/(1E7*86400)
dateTime.SetVarDate CDate(DateSerial(1601, 1, 1) + Days ), false
BinaryToDate = dateTime.GetVarDate ()
End Function
'===============================================================
'Function GetProductVersion will query a registry key for the file location and then return the version from the filesystem
' Parameter: strRegPath - path to the registry pointing to the installation location
' Return: a VARIANT string containing the product version
Function GetProductVersion(regPath)
const FILE_TO_CHECK = "\msmpeng.exe"
dim strFilePath, objFSO
strFilePath = objShell.RegRead(regPath) & FILE_TO_CHECK
Set objFSO = CreateObject("Scripting.FileSystemObject")
GetProductVersion = objFSO.GetFileVersion(strFilePath)
Set objFSO = Nothing
End Function
'===============================================================
'Function GetScanType will return a string with the scan type that corresponds to the enum
' Parameter: iScanType - type of scan
' Return: a VARIANT string containing text type of scan
Function GetScanType(iScanType)
Select case(iScanType)
Case 1 : GetScanType= "Quick Scan"
Case 2 : GetScanType= "Full Scan"
Case Else GetScanType= "Invalid Scan type"
End Select
End Function
C:> cscript forefrontstatus.vbs
Microsoft Forefront Client Security версия: 3.0.8107.0
Версия двигателя: 1.1.6502.0
Определение антивируса: версия 1.97.905.0, созданная 02.02.2011 6:10:51 AM
Определение антишпионского ПО: версия 1.97.905.0, созданная 02.02.2011 6:10:51 AM
Последнее сканирование: 02.02.2011 2:26:34 (Быстрое сканирование)
Вариант Явный const FCS_REGKEY_ROOT = "HKEY_LOCAL_MACHINE\ ПРОГРАММНОЕ ОБЕСПЕЧЕНИЕ \ Microsoft \ Microsoft Antimalware" Dim SCAN_KEY, SIGNATUREUPDATES_KEY Dim AV_VERSION_VALUE, AS_VERSION_VALUE, ENGINE_VERSION_VALUE, AV_DATE, AS_DATE Dim LAST_SCAN_TIME, LAST_SCAN_TYPE, INSTALL_PATH_VALUE SCAN_KEY = FCS_REGKEY_ROOT & "\ Scan" SIGNATUREUPDATES_KEY = FCS_REGKEY_ROOT & "\ Обновления подписи" INSTALL_PATH_VALUE = FCS_REGKEY_ROOT & "\ InstallLocation" AV_VERSION_VALUE = SIGNATUREUPDATES_KEY & "\ AVSignatureVersion" AS_VERSION_VALUE = SIGNATUREUPDATES_KEY & "\ ASSignatureVersion" ENGINE_VERSION_VALUE = SIGNATUREUPDATES_KEY & "\ EngineVersion" AV_DATE = SIGNATUREUPDATES_KEY & "\ AVSignatureApplied" AS_DATE = SIGNATUREUPDATES_KEY & "\ ASSignatureApplied" LAST_SCAN_TIME = SCAN_KEY & "\ LastScanRun" LAST_SCAN_TYPE = SCAN_KEY & "\ LastScanType" '11 -11-13 NIS_ENGINE_VERSION_VALUE = SIGNATUREUPDATES_KEY & "\ NISEngineVersion" NIS_SIGNATURE_VERSION_VALUE = SIGNATUREUPDATES_KEY & "\ NISSignatureVersion" NIS_SIGNATURE_DATE = SIGNATUREUPDATES_KEY & "\ NISSignatureApplied" SIGNATURES_LAST_UPDATE = SIGNATUREUPDATES_KEY & "\ SignaturesLastUpdated" '************ ГЛАВНЫЙ ************ Dim AV_Version, AS_Version, EngineVersion, ProductVersion Dim AV_BuildDate, AS_BuildDate, LastScanTime, LastScanType Dim objShell set objShell = CreateObject ("WScript.Shell") '============ Получить текущую информацию ============ AV_Version = objShell.RegRead (AV_VERSION_VALUE) AS_Version = objShell.RegRead (AS_VERSION_VALUE) EngineVersion = objShell.RegRead (ENGINE_VERSION_VALUE) AV_BuildDate = BinaryToDate (objShell.RegRead (AV_DATE)) AS_BuildDate = BinaryToDate (objShell.RegRead (AS_DATE)) ProductVersion = GetProductVersion (INSTALL_PATH_VALUE) LastScanTime = BinaryToDate (objShell.RegRead (LAST_SCAN_TIME)) LastScanType = GetScanType (objShell.RegRead (LAST_SCAN_TYPE)) '11 -11-13 NIS_Engine_Version = objShell.RegRead (NIS_ENGINE_VERSION_VALUE) NIS_Signature_Version = objShell.RegRead (NIS_SIGNATURE_VERSION_VALUE) NIS_BuildDate = BinaryToDate (objShell.RegRead (NIS_SIGNATURE_DATE)) LAST_UPDATE = BinaryToDate (objShell.RegRead (SIGNATURES_LAST_UPDATE)) '============ Показать сводную информацию ============ WScript.echo "Версия Microsoft Forefront Client Security: " & ProductVersion WScript.echo "Версия двигателя: " & EngineVersion WScript.echo "Определение антивируса: версия" & AV_Version & "создано на" & AV_BuildDate WScript.echo "Определение антишпионского ПО: версия" & AS_Version & "создано на" & AS_BuildDate WScript.echo "Последнее сканирование: " & LastScanTime & " (" & LastScanType & ")" '11-11-13 wscript.echo "NIS engine: Version " и NIS_Engine_Version wscript.echo "Nis Signature: Version " & NIS_Signature_Version & "создан на" & NIS_BuildDate wscript.echo "Последнее обновление: " &LAST_UPDATE ************ END MAIN ************ "================================================= ============== Функция BinaryToDate преобразует двоичную структуру DATE_TIME в дату варианта, установленную по местному времени. Параметр: bArray - массив байтов VARIANT Возвращение: ВАРИАНТНАЯ дата Функция BinaryToDate(bArray) тусклые секунды, дни, дата и время Set dateTime = CreateObject("WbemScripting.SWbemDateTime") Секунды = bArray(7)*(2^56) + bArray(6)*(2^48) + bArray(5)*(2^40) + bArray(4)*(2^32) _ + bArray(3)*(2^24) + bArray(2)*(2^16) + bArray(1)*(2^8) + bArray(0) Дни = Секунды /(1E7*86400) dateTime.SetVarDate CDate(DateSerial(1601, 1, 1) + Days), false BinaryToDate = dateTime.GetVarDate () Конечная функция "================================================= ============== Функция GetProductVersion запросит ключ реестра для определения местоположения файла, а затем вернет версию из файловой системы. Параметр: strRegPath - путь к реестру, указывающий на место установки ' Return: строка VARIANT, содержащая версию продукта Функция GetProductVersion(regPath) const FILE_TO_CHECK = "\msmpeng.exe" dim strFilePath, objFSO strFilePath = objShell.RegRead(regPath) & FILE_TO_CHECK Установите objFSO = CreateObject("Scripting.FileSystemObject") GetProductVersion = objFSO.GetFileVersion(strFilePath) Установить objFSO = ничего Конечная функция "================================================= ============== Функция GetScanType вернет строку с типом сканирования, который соответствует перечислению Параметр: iScanType - тип сканирования ' Return: строка VARIANT, содержащая текстовый тип сканирования Функция GetScanType(iScanType) Выберите регистр (iScanType) Случай 1: GetScanType= "Быстрое сканирование" Случай 2: GetScanType= "Полное сканирование" Case Else GetScanType= "Неверный тип сканирования" Выбор конца Конечная функция