Registro de data e hora da última atualização de definição para o Microsoft Security Essentials via Script

2

Existe alguma maneira de verificar isso via VBScript ou Powershell? Eu observei rapidamente as classes SecurityCenter e SecurityCenter2 WMI, mas nenhuma delas parece especialmente útil. Parece que a maneira mais fácil é determinar qual o valor de productState através do último no WMI para obter alguma mensagem que signifique AV acha que está tudo bem. Alguma outra opinião?

    
por songei2f 02.02.2011 / 21:58

2 respostas

3

Pode ser necessário alterar o FCS_REGKEY_ROOT dependendo da versão que você instalou. Isso funciona para uma versão recente. Extraído de aqui .

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

Versão do Microsoft Forefront Client Security: 3.0.8107.0
Versão do motor: 1.1.6502.0
Antivirus Definição: Version 1.97.905.0 created on 2/2/2011 6:10:51 AM
Definição de Antispyware: Versão 1.97.905.0 criado em 02/02/2011 06:10:51 AM
Última verificação: 2/2/2011 2:26:34 AM (Análise Rápida)

    
por 02.02.2011 / 23:16
0
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"
'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"



'************ 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) )
'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))

'============  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 & ")"
'11-11-13
wscript.echo "NIS engine: Version " & NIS_Engine_Version
wscript.echo "Nis Signature: Version " & NIS_Signature_Version & " created on " & NIS_BuildDate
wscript.echo "Last Update: " &LAST_UPDATE

'************ 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
    
por 13.11.2013 / 18:09