在前面两篇文章中,简要介绍了静态数组和动态数组的基本语法,在本文中将会就数组中在日常运维过程中的使用举一例说明。


一、需求

    客户组织内曾经更换过杀毒软件供应商,需要扫描服务器或者客户端是否安装了杀毒软件,或者是否安装了过多的杀毒软件。


二、解决思路

   我们将所有可能安装的杀毒软件的名称放入一个数组,然后通过wmi接口可以获取计算机上已安装的所有软件,逐个对软件进行判断是否存在于数组中。


三、脚本


#******************定义病毒库数组,将可能安装的所有软件名称全部添加到数组中****************


$AntivirusList = New-Object System.Collections.ArrayList


#----Note:实际使用时应添加杀软的完整名称,演示时未添加完整


$AntivirusList.Add("Symentec") | Out-null


$AntivirusList.Add("Nod32") | Out-null


$AntivirusList.Add("360") | Out-null


#*****************************获取计算机当前已经安装的软件清单*****************************


$SoftwareInstalled = Get-WmiObject -Class Win32_Product | Select-Object -Property Name


#---$Count用于计量已安装杀毒软件的数量


$Count = 0


#----对已经安装的软件进行循环判断,检查是否有杀毒软件数组中的软件已被安装-----


Foreach ($Software in $SoftwareInstalled)


{

if ($AntivirusList -contains ($Software.name)


{ $Count++ }


}


#***************根据安装杀毒软件的情况弹窗提示结果********************


$ws = New-Object -ComObject WScript.Shell  


If ($Count -eq 0) {


$wsr = $ws.popup("您的电脑未安装杀毒软件!",5,"杀毒软件安装检查",0 + 16)


} elseif ($Count -gt 1)


{


$wsr = $ws.popup("您的电脑安装了过多的杀毒软件,不建议这么做。",5,"杀毒软件安装检查",0 + 48)


} else 


{


$wsr = $ws.popup("您的电脑已安装杀毒软件。",5,"杀毒软件安装检查",0 + 48)


}


#*************************脚本结束*******************************