如何确定是否安装了防病毒产品?

Not*_*tMe 4 windows anti-virus

我们拥有超过 15,000 台机器的大型装置。他们应该安装了一个趋势科技版本;但是,我们不确定这一点。

这些都是 Windows 机器,其中包括具有各种 SP 级别的 XP、RTM 和 SP1 的 Vista,以及几个 2000 和 2003 服务器。

我如何确定:

  1. 是否安装了任何AV产品?
  2. 安装的是什么版本的产品?
  3. 盒子上的模式文件是什么版本?

想法?

谢谢,

小智 7

由于您谈论的是 15,000 台主机,因此从网络中查询每台主机的效率将非常低下。

The Right Thing To Do™ 然后是在每台主机上运行一个看门狗,以确保安装并运行适当的软件。如果您使用英特尔博锐之类的东西,这个看门狗可能是一个作为服务运行的软件、一个预定的脚本,甚至是基于硬件的。

要验证是否安装了 AV 软件,您可以使用以下 PowerShell 命令——

$avSoftware = get-wmiobject -class "Win32_Product" -namespace "root\cimv2" `
              -computername "." -filter "Name like '%antivirus%'"
Run Code Online (Sandbox Code Playgroud)

请注意,最后您有一个filter参数,您可以自定义该参数以确保您查看正确的产品。

在与like操作员玩了一会儿之后,您应该能够在这里和那里确定防病毒描述和细微的变化。请注意,我上面的示例(任何包含“防病毒”一词的内容)非常简单。您应该寻找与您批准的防病毒软件匹配的特定模式(例如“Trend Micro Antivirus%”)

无论如何,上面的命令将返回与您的filter语句匹配的已安装产品的集合。从这里您可以测试是否$avSoftware.Count大于零,在这种情况下,您安装了防病毒软件。下面的例子列出了所有安装的杀毒软件——

if ($avSoftware.Count -gt 0) {
    foreach ($av in $avSoftware) {
        write-host $p.Name
    }
} else {
    write-host "No AV software found"
}
Run Code Online (Sandbox Code Playgroud)

而不是仅仅打印一条消息说没有找到 AV,你显然应该做一些更有用的事情,例如

  • 通知管理员
  • 从网络安装 AV

您还说您想获取已安装 AV 的版本。要做到这一点,你可以使用Version的特性Win32_Process。让我们像这样修改上面的代码来打印已安装软件的版本号——

$avSoftware = get-wmiobject -class "Win32_Product" -namespace "root\cimv2" `
              -computername "." -filter "Name like '%antivirus%'"

foreach ($av in $avSoftware) {
    write-host $av.Name, $av.Version
}
Run Code Online (Sandbox Code Playgroud)

至于安装的病毒定义文件的版本,您必须依赖于每个特定的 AV WMI 接口。为此,您必须查阅供应商的文档。

还有一件事要记住。如果 AV 没有运行,仅仅知道主机安装了 AV 可能还不够。检查安装了哪个 AV 后,您应该确保其进程正在运行。要做到这一点,您必须知道每个 AV 软件的适当流程是什么,然后像这样寻找它们——

$processes = get-wmiobject -class "Win32_Process" -namespace "root\cimv2" `
             -computername "." -filter "Name = 'TeaTimer.exe'"

if ($processes.Count -gt 0) {
    foreach ($p in $processes) {
        write-host $p.Name
} else {
    # AV not running. Launch it here or notify someone 
}
Run Code Online (Sandbox Code Playgroud)

上面的示例查找名为“TeaTimer.exe”的 Spybot 进程(不完全是 AV,但您可以看到图片)。修改它以查找您的进程。

现在,综上所述,如果您要与成千上万的主机打交道,您可能应该投资一些管理工具(例如 LANdesk、Microsoft System Center 或 Level Platforms)。这些工具将使您的生活更加轻松。