PowerShell 技能连载 - 检测防病毒引擎状态
在上一个技能中,我们学习了如何查询 WMI 来查找 Windows 计算机上存在的防病毒产品:
1 | $info = Get-CimInstance -Namespace root/SecurityCenter2 -ClassName AntiVirusProduct |
ProductState
属性对其他信息进行编码,告诉您防病毒引擎是否可运行并使用最新的签名。不过该信息是一个数字,并且是一个位标记:
1 | PS> $info = Get-CimInstance -Namespace root/SecurityCenter2 -ClassName AntiVirusProduct |
要解密数字中各个位的含义,可以使用 PowerShell 对枚举类型新支持。定义好位及其含义,并用 [Flags()]
属性修饰枚举(表明可以设置多个位):
1 | # define bit flags |
要检查位组的状态,请屏蔽与您要执行的操作相关的位,然后将这些位转换为枚举。结果是当前设置的位的明文名称。结果看起来像这样:
ProductState SignatureStatus Owner
------------ --------------- -----
On UpToDate Windows
如果您使用的是 Windows 10 上内置的防病毒引擎 “Defender”,则无需使用上面的通用防病毒界面。而是使用内置的 Get-MpPreference
cmdlet,它提供了更多详细信息。
PowerShell 技能连载 - 检测防病毒引擎状态
http://blog.vichamp.com/2020/09/07/identifying-antivirus-engine-state/