我在我管理的所有工作站上都使用 Microsoft System Center Endpoint Protection。对于所有三个主要平台,让它报告上次更新和上次扫描的时间非常麻烦。通过解析系统日志,我能够检索 Mac 和 Linux 的日期,但 Windows 一直很难找到。
我可以在 GUI 中看到日期和时间,但这对于在数十台计算机上运行自动报告是不切实际的。有谁知道使用某种脚本输出这些数据的方法(最好使用 PowerShell,但我可以使用任何方法)吗?
答案1
好的,我编写了以下 powershell 脚本来从日志中提取最新更新的日期。SCEP 的日志记录功能“成功”中有一个拼写错误,因此当您注意到我的以下代码中也有一个拼写错误时,它是为了与我正在搜索的日志中的拼写错误相匹配。
$a=Select-String -Pattern "Update completed succesfully" -Path C:\Windows\Temp\MpCmdRun.log | Foreach {($_ -split ':')[2]}
$lineNumber = $($a | measure -Maximum).Maximum + 1
$lastUpdate = Get-Content -Path C:\Windows\Temp\MpCmdRun.log | Select-Object -Index $lineNumber | Foreach {($_ -split ':\s')[2]}
$lastUpdate = $lastUpdate.Replace("$([char]8206)","")
Write-Host "scep_last_update=$lastUpdate"
答案2
嗯,根据这个Forefront Enterprise Protection 的 Technet 页面(与 SCEP 是相同的产品,与 Security Essentials 是相同的产品,等等),该产品存在以下日志位置,您可以使用某些 PowerShell 解析这些日志位置以获取所需的信息:
%allusersprofile%\Microsoft\Microsoft Antimalware\Support
- 反恶意软件服务专用的日志文件
%allusersprofile%\Microsoft\Microsoft Security Client\Support
- SCEP 客户端软件特有的日志文件
%windir%\WindowsUpdate.log
- Windows 更新日志文件,其中包含有关定义更新的信息
%windir%\CCM\Logs\EndpointProtectionagent.log
- 显示端点版本和应用的策略
%windir%\temp\MpCmdRun.log
- 执行扫描和签名更新时的活动
%windir%\temp\MpSigStub.log
- 签名和引擎更新的更新进度
我还偶然发现了 SCEP 的原生 cmdlet,您可以使用以下命令列出它们:Get-Command -Module MpProvider
,但它们对我来说不起作用,我无法Update-Help
在 Microsoft 网站上找到有关它们的信息...所以我放弃了。也许你会更幸运 - 它们似乎与 Windows Defender 的 cmdlet 基本相同。