Pour les serveurs utilisant McAfee comme antivirus il y a une possibilité de check à effectuer via un script Powershell.
Pour permettre un emploi simple, on peut effectuer une nouvelle commande que l'on nomme "get-epocheck".
Ainsi on pourra effectuer via powersell des commandes de ce type :
get-epocheck -computer "nom du serveur ou IP"
ou
"nom du serveur ou IP", "nom du serveur ou IP", etc... | % {get-epocheck –computer $_}
via l'invite de commande MS\DOS :
Powershell –command (get-epocheck -computer "nom du serveur ou IP") ou
Powershell –command ("nom du serveur ou IP", "nom du serveur ou IP" | % {get-epocheck –computer $_})
Pour utiliser cette commande, il faut que le script enregistré sous le nom "mcafee.ps1" et y implémenter une fonction qui permet l'appelle de la commande.
Description de chaque commande
Function
Il faut utiliser "Function" comme suit :
Function "Nom de la commande à implémenter"
{
Remarques : Paramètres d'appel des serveurs pour effectuer le fameux "commande -computer nom du serveur"
param ([String]$Computer= '.')
Remarques : % est la contraction de la commande Foreach-object -inputobject. Celà permet de lancer un loop pour appliquer les variables et retirer les strings, valeurs, etc...
%
{
Les variables
}
}
$ProductVer
Il faut utiliser "$ProductVer" comme suit :
La requête qui suit correspond à une recherche dans le registre et l'édition de la valeur de cette variable.
La variable sert à retrouver la version de l'antivirus McAfee.
([Microsoft.Win32.RegistryKey]::OpenRemoteBaseKey('LocalMachine', $Computer).OpenSubKey('SOFTWARE\McAfee\DesktopProtection').GetValue('szProductVer'))
NB : Si vous avez besoins de reprendre juste cette clef ou vous en inspirer pour d'autres scripts, il faudra juste remplacer $computer par le nom du serveur.
$EngineVer
Il faut utiliser "$EngineVer" comme suit :
La variable est utilisée pour retrouver la version du moteur Mcafee.
$EngineVer=([Microsoft.Win32.RegistryKey]::OpenRemoteBaseKey('LocalMachine', $Computer).OpenSubKey('SOFTWARE\McAfee\AVEngine').GetValue('EngineVersionMajor'))
$DatVer
La variable permet l'identification du DAT (Update de la Signature Antivirus).
$DatVer=([Microsoft.Win32.RegistryKey]::OpenRemoteBaseKey('LocalMachine', $Computer).OpenSubKey('SOFTWARE\McAfee\AVEngine').GetValue('AVDatVersion'))
$ServerName
Il faut utiliser "$ServerName" comme suit pour obtenir le nom du serveur se trouvant dans la requête "$Computer" :
$ServerName=(get-wmiobject CIM_OperatingSystem -computername $Computer | % {($_.CSName)})
Comme vous avez remarqué, cette variable s'appuie plus sur le registre mais sur les WMI.
$OperatingSystem
La variable $OperatingSystem sert à afficher l'OS Windows du serveur. en s'appuyant les requêtes WMI.
$OperatingSystem=(get-wmiobject CIM_OperatingSystem -computername $Computer | % {($_.caption)})
$DomainName
La variable $DomainName permet de retrouver le domaine d'appartenance du serveur toujours avec les requêtes WMI.
$DomainName=(get-wmiobject Win32_NTDomain -computername $Computer |where {$_.DomainName -like "DébutDomainName*"} | % {write $_.DomainName})
La requête WMI recherche le début du domaine avec "DébutDomainName*".
Exemple : Pour trouver le domaine Tartenpion il faudra donc indiquer ceci "Tart*"
Ne pas oublier la petite étoile.
$ServicePack
La variable $ServicePack permet de retrouver le Service Pack du serveur via WMI.
$ServicePack=(get-wmiobject CIM_OperatingSystem -computername $Computer | % {($_.CSDVersion)})
$IPaddress
La variable $IPaddress retrouve l'ip utilisé (commençant par exemple par 192.168.X.X).
$IPaddress=(get-wmiobject Win32_TSNetworkAdapterListSetting -computername $Computer | where {$_.NetworkAdapterIP -like "192.168*"} | % {write $_.NetworkAdapterIP})
S'il existe plusieurs IP, et que vous n'utilisez pas la requête where alors vous aurez l'ensemble des IP.
write
Cette commande permet tout simplement d'afficher les infos qu'on peut récupérer dans un fichier.
Le choix dans ce script a été de rappeler les variables mises en place et de les séparer par des point-virgules. Ainsi on peut recoller les infos dans un Excel par exemple.
Vous pouvez appeler le script ci-dessous comme ceci :
cmd /c "powershell -command . "C:\SCRIPT\mcafee.ps1" ; ("ServerName", "IP") | % {Get-EPOCHECK -computer $_} >> "c:\Audit\epo.log"
NB : Dans ma commande il y a une chose à ne pas oublier c'est le point.
dans powershell, pour implémenter juste pour une fois la fonction get-epocheck, il faut effectuer cette saisie :
.\mcafee.ps1 ou (. lecteur\path\mcafee.ps1)
Ainsi on implémente la fonction contenu dans le script.
Pour savoir si la fonction est bien présente :
get-childitem -path function:
Pour connaître la commande employé dans la fonction :
get-content function:NomDeLaFonction
soit dans notre exemple :
get-content function:get-epocheck
Pour finir vous avez plus qu'à lancer un batch pour lancer le script powershell et trapper les infos dans un fichier.
Script Final Batch : "mcafee.bat"
--------------------mcafee.bat--------------------
cmd /c "powershell -command . "C:\SCRIPT\mcafee.ps1" ; ("ServerName", "IP") | % {Get-EPOCHECK -computer $_} >> "c:\Audit\epo.log"
---------------------Fin du Script------------------
Script Final "mcafee.ps1"
--------------------mcafee.ps1--------------------
1: Function get-epocheck
2: {
3: param ([String]$Computer= '.')
4: % {
5:
6: $ProductVer=([Microsoft.Win32.RegistryKey]::OpenRemoteBaseKey('LocalMachine', $Computer).OpenSubKey('SOFTWARE\McAfee\DesktopProtection').GetValue('szProductVer'))
7: $EngineVer=([Microsoft.Win32.RegistryKey]::OpenRemoteBaseKey('LocalMachine', $Computer).OpenSubKey('SOFTWARE\McAfee\AVEngine').GetValue('EngineVersionMajor'))
8: $DatVer=([Microsoft.Win32.RegistryKey]::OpenRemoteBaseKey('LocalMachine', $Computer).OpenSubKey('SOFTWARE\McAfee\AVEngine').GetValue('AVDatVersion'))
9: $ServerName=(get-wmiobject CIM_OperatingSystem -computername $Computer | % {($_.CSName)})
10: $OperatingSystem=(get-wmiobject CIM_OperatingSystem -computername $Computer | % {($_.caption)})
11: $DomainName=(get-wmiobject Win32_NTDomain -computername $Computer |where {$_.DomainName -like "SCICS*"} | % {write $_.DomainName})
12: $ServicePack=(get-wmiobject CIM_OperatingSystem -computername $Computer | % {($_.CSDVersion)})
13: $IPaddress=(get-wmiobject Win32_TSNetworkAdapterListSetting -computername $Computer | where {$_.NetworkAdapterIP -like "192.168*"} | % {write $_.NetworkAdapterIP})
14:
15: (write $ServerName) + (write ";") + ($DomainName) + (write ";") + (write $IPaddress) + (write ";") + (write $OperatingSystem) + (write ";") + (write $ServicePack) + (write ";") + (Write "$ProductVer") + (write ";") + (Write "$EngineVer") + (write ";") + (Write "$DatVer")
16:
17: }
18: }
---------------------Fin du Script------------------