如何检测何时防毒与Powershell过时

是否有可能使用PowerShell来确定是否/何时在Win7或Win2008服务器机器上最后更新防病毒软件?

这取决于防病毒软件:

  • 它提供了可以parsing的日志吗?
  • 它是否提供了“过期”的程序化通知?
  • 它是否提供pipe理API?

如果软件将定义/引擎更新logging到Windows事件日志中,则可以查找最新的更新,并查看发生的情况。 例如Windows 7中的Microsoft Security Essentials,这会告诉我最近定义更新的date/时间(Get-EventLog从事件日志中按顺序返回事件,所以第一个匹配是最新的):

(get-eventlog -LogName system -Source "Microsoft-Windows-WindowsUpdateClient" -InstanceId 19 | ?{$_.Message -match "Microsoft Security Essentials"} | select -first 1).TimeGenerated 

显然细节会因操作系统和AV包而有所不同。

为了扩展上面的jdiaz后续,以下命令将获得迈克菲当前的DATdate和版本:

 Get-ItemProperty HKLM:\SOFTWARE\McAfee\AVEngine | Select-Object AVDatDate,AVDatVersion | Format-List 

赛门铁克logging到Windows事件日志。 您可以使用Get-EventLog cmdlet。