antivirusstate

Différences

Ci-dessous, les différences entre deux révisions de la page.

Lien vers cette vue comparative

Les deux révisions précédentes Révision précédente
Prochaine révision
Révision précédente
antivirusstate [2019/02/25 22:27] nekanantivirusstate [2021/03/05 16:13] (Version actuelle) nekan
Ligne 1: Ligne 1:
 ====== Get-AntiVirusState - Connaître l'état des antivirus d'un parc ====== ====== Get-AntiVirusState - Connaître l'état des antivirus d'un parc ======
 +<label type="info">Création</label> --- //[[nekan@shyrkasystem.com|Nicolas THOREZ]] 2019/02/19 19:58//
  
-Connaître l'état de protection de l'ensemble des PC dans un domaine est très important pour un administrateur afin de garantir la sécurité d'un parc informatique. Dans le cas où les antivirus sont gérés de manière centralisée par un logiciel tel que Kaspersky Security Center, cela est assez facile. Dans les cos où on n'a pas ce genre d'outil, cela devient légèrement plus compliqué. On pourrait faire régulièrement le tour de chaque poste mais cela coûte énormément en temps et en moyen surtout si la structure est imposante. Partons donc sur le principe que "Un administrateur qui n'a pas recours à des scripts est condamné à refaire sans cesse les mêmes choses".+Connaître l'état de protection de l'ensemble des PC dans un domaine est très important pour un administrateur afin de garantir la sécurité d'un parc informatique. Dans le cas où les antivirus sont gérés de manière centralisée par un logiciel tel que Kaspersky Security Center, cela est assez facile. Dans les cas où on n'a pas ce genre d'outil, cela devient légèrement plus compliqué. On pourrait faire régulièrement le tour de chaque poste mais cela coûte énormément en temps et en moyen surtout si la structure est imposante. Partons donc sur le principe que "Un administrateur qui n'a pas recours à des scripts est condamné à refaire sans cesse les mêmes choses".
  
 Le script suivant s'inscrit dans cette optique. Il interroge les PC du domaine afin de connaître l'antivirus qui y est installé, l'état de ses mises à jour ainsi que le statut de sa protection en temps réel. Le script suivant s'inscrit dans cette optique. Il interroge les PC du domaine afin de connaître l'antivirus qui y est installé, l'état de ses mises à jour ainsi que le statut de sa protection en temps réel.
Ligne 9: Ligne 10:
 ===== Script principal ===== ===== Script principal =====
  
-<code:ps1># Ligne rajouter pour permettre la coloration syntaxique. A supprimer.+<sxh powershell>
 <# <#
 .SYNOPSIS .SYNOPSIS
 +
 +
 +    ███████╗██╗  ██╗██╗   ██╗██████╗ ██╗  ██╗ █████╗                 
 +    ██╔════╝██║  ██║╚██╗ ██╔╝██╔══██╗██║ ██╔╝██╔══██╗                
 +    ███████╗███████║ ╚████╔╝ ██████╔╝█████╔╝ ███████║                
 +    ╚════██║██╔══██║  ╚██╔╝  ██╔══██╗██╔═██╗ ██╔══██║                
 +    ███████║██║  ██║   ██║   ██║  ██║██║  ██╗██║  ██║                
 +    ╚══════╝╚═╝  ╚═╝   ╚═╝   ╚═╝  ╚═╝╚═╝  ╚═╝╚═╝  ╚═╝                
 +                                                                 
 +                ███████╗██╗   ██╗███████╗████████╗███████╗███╗   ███╗
 +                ██╔════╝╚██╗ ██╔╝██╔════╝╚══██╔══╝██╔════╝████╗ ████║
 +                ███████╗ ╚████╔╝ ███████╗   ██║   █████╗  ██╔████╔██║
 +                ╚════██║  ╚██╔╝  ╚════██║   ██║   ██╔══╝  ██║╚██╔╝██║
 +                ███████║   ██║   ███████║   ██║   ███████╗██║ ╚═╝ ██║
 +                ╚══════╝   ╚═╝   ╚══════╝   ╚═╝   ╚══════╝╚═╝     ╚═╝
 +                                                                 
 +
  
 ############################################################################################################# #############################################################################################################
Ligne 29: Ligne 47:
 Indique le ou les noms (séparé par des virgules (,)) des PC à interroger. Si le paramètre n'est pas renseigner, la requête sera lancée sur tous les PC contenus dans les OU PC Fixes, PC Portables et Direction. Indique le ou les noms (séparé par des virgules (,)) des PC à interroger. Si le paramètre n'est pas renseigner, la requête sera lancée sur tous les PC contenus dans les OU PC Fixes, PC Portables et Direction.
  
-.PARAMETER n+.PARAMETER Nagios 
 + 
 +Si le paramètre -Nagios est indiqué, un fichier de réponse pour un traitement par Nagios sera créé (C:\Scripts\AntivirusState\Report.dat) 
 + 
 +.PARAMETER Verbose
  
-Si le paramètre -n est indiqué, un fichier de réponse pour un traitement par Nagios sera créé (C:\Scripts\AntivirusState\Report.dat)+Si ce paramètre est indiqué, la console affichera les informations sur le déroulement du script.
  
 .EXAMPLE .EXAMPLE
  
-Get-AntiVirusState.ps1 -PC PC-7,PC-49 -n+Get-AVState.ps1 -PC PC-7,PC-49 -Nagios -Verbose
  
 Lance la requête d'interrogation de l'état des antivirus des PC PC-7 et PC-49. A la fin, un rapport pour Nagios sera créer. Lance la requête d'interrogation de l'état des antivirus des PC PC-7 et PC-49. A la fin, un rapport pour Nagios sera créer.
Ligne 67: Ligne 89:
 NOM :      Get-AntiVirusState.ps1 NOM :      Get-AntiVirusState.ps1
 AUTEUR :   Nicolas THOREZ AUTEUR :   Nicolas THOREZ
-VERSION :  1.1.1+VERSION :  1.3
  
 HISTORIQUE : HISTORIQUE :
Ligne 82: Ligne 104:
 1.1.1   2019-02-14      Correction d'erreurs dans le rapport Nagios 1.1.1   2019-02-14      Correction d'erreurs dans le rapport Nagios
  
 +1.2     2019-03-26      Modification du mode verbeux
 +
 +1.3     2019-04-08      Optimisation du code
  
 #> #>
Ligne 88: Ligne 113:
  
 Param( Param(
-    [String[]]$PC='All'+    [String[]]$PC="All"
-    [Switch]$n+    [Switch]$Nagios, 
 +    [Switch]$Verbose
 ) )
  
 # Déclaration des variables # Déclaration des variables
  
-If ($PC -eq 'All')+If ($PC -eq "All")
     {     {
-        # Création de la liste des PC à traiter par interrogation des OU correspondantes dans l'AD 
         $ListPC = (Get-ADComputer -SearchBase "OU=PC Fixe,OU=Ordinateurs,DC=TEST,DC=LOCAL" -Filter *).Name         $ListPC = (Get-ADComputer -SearchBase "OU=PC Fixe,OU=Ordinateurs,DC=TEST,DC=LOCAL" -Filter *).Name
         $ListPC += (Get-ADComputer -SearchBase "OU=PC Portable,OU=Ordinateurs,DC=TEST,DC=LOCAL" -Filter *).Name         $ListPC += (Get-ADComputer -SearchBase "OU=PC Portable,OU=Ordinateurs,DC=TEST,DC=LOCAL" -Filter *).Name
Ligne 106: Ligne 131:
     }     }
 $CheckDate = Get-Date -UFormat %Y-%m-%d $CheckDate = Get-Date -UFormat %Y-%m-%d
-$LogFile = "C:\Scripts\AntivirusState\AntivirusState-$CheckDate.log"+$Path = "C:\Scripts\AntivirusState
 +$LogFile = "$Path\AntivirusState-$CheckDate.log
 +$ScriptName = "Get-AntiVirusState.ps1"
 $Old = 7 $Old = 7
 $TotalPC = 0 $TotalPC = 0
Ligne 118: Ligne 145:
 $PCWithFaultyRT = "n/a" $PCWithFaultyRT = "n/a"
 $PCWithObsoleteBase = "n/a" $PCWithObsoleteBase = "n/a"
-$FQDN = 'test.local                          # Indiquer ici le nom du domaine au format DNS+$Domaine = "TEST" 
 +$FQDN = "test.local
 +$Report = "$Path\Report.dat"
  
  
 # Déclacation des fonctions # Déclacation des fonctions
 +Function Add-Log()
 +    {
 +        Param
 +            (
 +                [string]$Type,
 +                [string]$Message,
 +                [switch]$Line
 +            )
 +
 +        If ($Line)
 +            {
 +                Write-Host "----------------------------------------------------------------------"
 +                Add-Content -Path $LogFile -Value "----------------------------------------------------------------------"
 +            }
 +        Else
 +            {
 +                $CheckTime = Get-Date -Format G
 +                If ($Verbose)
 +                    {
 +                        Switch($Type)
 +                            {
 +                                "INFO"
 +                                    {
 +                                        $Color = "green"
 +                                    }
 +                                "WARN"
 +                                    {
 +                                        $Color = "yellow"
 +                                    }
 +                                "CRIT"
 +                                    {
 +                                        $Color = "red"
 +                                    }
 +                                "UNKN"
 +                                    {
 +                                        $Color = "magenta"
 +                                    }
 +                                default
 +                                    {
 +                                        $Color = "cyan"
 +                                    }
 +                            }
 +                        Write-Host "$CheckTime     " -NoNewline
 +                        Write-Host "$type     " -NoNewline -ForegroundColor $Color
 +                        Write-Host $Message
 +                    }
 +                Add-Content -Path $LogFile -Value "$CheckTime     $Type     $Message"
 +            }
 +    }
 +
 Function Get-PCOnlineStatus($PC) Function Get-PCOnlineStatus($PC)
     {     {
         # On interroge le PC via Get-WmiObject plutôt que par ping pour éviter les erreurs de pare-feu         # On interroge le PC via Get-WmiObject plutôt que par ping pour éviter les erreurs de pare-feu
-        $OnlineTest = (Get-WmiObject -Comp $PC -CL Win32_ComputerSystem -ErrorAction SilentlyContinue -WarningAction SilentlyContinue -InformationAction SilentlyContinue).Domain+        $OnlineTest = (Get-WmiObject -ComputerName $PC -Class Win32_ComputerSystem -ErrorAction SilentlyContinue -WarningAction SilentlyContinue -InformationAction SilentlyContinue).Domain
         If ($OnlineTest -eq $FQDN)         If ($OnlineTest -eq $FQDN)
             {             {
-                $CheckTime = Get-Date -UFormat "%Y-%m-%d %H:%M:%S" +                Add-Log -Type "INFO" -Message "PC Online."
-                Write-Host "$CheckTime     " -NoNewline +
-                Write-Host "INFO     " -NoNewline -ForegroundColor Green +
-                Write-Host "PC Online." +
-                Add-Content -Path $LogFile -Value "$CheckTime     INFO     PC Online."+
                 Return $true                 Return $true
             }             }
         Else         Else
             {             {
-                $CheckTime = Get-Date -UFormat "%Y-%m-%d %H:%M:%S" +                Add-Log -Type "WARN" -Message "PC Offline."
-                Write-Host "$CheckTime     " -NoNewline +
-                Write-Host "WARN     " -NoNewline -ForegroundColor Yellow +
-                Write-Host "PC Offline." +
-                Add-Content -Path $LogFile -Value "$CheckTime     WARN     PC Offline."+
                 Return $false                 Return $false
             }             }
Ligne 150: Ligne 221:
 If (Test-Path $LogFile) If (Test-Path $LogFile)
     {     {
-        $CheckTime = Get-Date -UFormat "%Y-%m-%d %H:%M:%S" +        Add-Log -Line 
-        Write-Host "$CheckTime     " -NoNewline +        Add-Log -Type "INFO" -Message "Fichier log existant, inscription des nouvelles informations à la suite." 
-        Write-Host "INFO     " -NoNewline -ForegroundColor Green +        Add-Log -Type "INFO" -Message "Début de la vérification des antivirus." 
-        Write-Host "Fichier log existant, inscription des nouvelles informations à la suite." +        Add-Log -Line
-        $CheckTime = Get-Date -UFormat "%Y-%m-%d %H:%M:%S" +
-        Write-Host "$CheckTime     " -NoNewline +
-        Write-Host "INFO     " -NoNewline -ForegroundColor Green +
-        Write-Host "Début de la vérification des antivirus." +
-        Add-Content -Path $LogFile -Value "----------------------------------------------------------" +
-        Add-Content -Path $LogFile -Value "$CheckTime     INFO     Début de la vérification des antivirus."+
     }     }
 Else Else
     {     {
-        $CheckTime = Get-Date -UFormat "%Y-%m-%d %H:%M:%S" 
-        Write-Host "$CheckTime     " -NoNewline 
-        Write-Host "INFO     " -NoNewline -ForegroundColor Green 
-        Write-Host "Création du fichier log." 
-        $CheckTime = Get-Date -UFormat "%Y-%m-%d %H:%M:%S" 
-        Write-Host "$CheckTime     " -NoNewline 
-        Write-Host "INFO     " -NoNewline -ForegroundColor Green 
-        Write-Host "Suppression des logs vieux de $Old jours." 
-        $CheckTime = Get-Date -UFormat "%Y-%m-%d %H:%M:%S" 
-        Write-Host "$CheckTime     " -NoNewline 
-        Write-Host "INFO     " -NoNewline -ForegroundColor Green 
-        Write-Host "Début de la vérification des antivirus." 
         New-Item -Path $LogFile > $null         New-Item -Path $LogFile > $null
-        Get-ChildItem –Path "C:\Scripts\AntivirusState" –Recurse | Where-Object CreationTime –lt (Get-Date).AddDays(-$Old) | Where-Object Name -ne Get-AVState.ps1 | Remove-Item -Force > $null +        Add-Log -Type "INFO" -Message "Création du fichier log." 
-        Add-Content -Path $LogFile -Value "Log de la vérification de l'état des antivirus du domaine." +        Get-ChildItem –Path $Path –Recurse | Where-Object CreationTime –lt (Get-Date).AddDays(-$Old) | Where-Object Name -ne $ScriptName | Remove-Item -Force > $null 
-        Add-Content -Path $LogFile -Value "----------------------------------------------------------" +        Add-Log -Type "INFO" -Message "Suppression des logs vieux de $Old jours." 
-        Add-Content -Path $LogFile -Value "$CheckTime     INFO     Suppression des logs vieux de $Old jours." +        Add-Log -Type "INFO" -Message "Début de la vérification des antivirus." 
-        Add-Content -Path $LogFile -Value "----------------------------------------------------------" +        Add-Log -Line
-        Add-Content -Path $LogFile -Value "$CheckTime     INFO     Début de la vérification des antivirus."+
     }     }
  
Ligne 188: Ligne 240:
     {     {
         $TotalPC += 1         $TotalPC += 1
-        $CheckTime = Get-Date -UFormat "%Y-%m-%d %H:%M:%S" +        Add-Log -Type "INFO" -Message "Début de traitement de $PC." 
-        Write-Host "$CheckTime     " -NoNewline +
-        Write-Host "INFO     " -NoNewline -ForegroundColor Green +
-        Write-Host "Début de traitement de $PC." +
-        Add-Content -Path $LogFile -Value "$CheckTime     INFO     Début de traitement de $PC."+
                  
         # On teste si la machine est en ligne         # On teste si la machine est en ligne
Ligne 202: Ligne 251:
                 $PCOnline += 1                 $PCOnline += 1
                 #On vérifie le nombre d'antivirus                 #On vérifie le nombre d'antivirus
-                $AntiVirusCount = (Get-WmiObject -Namespace "root\SecurityCenter2" -Class AntiVirusProduct  -ComputerName $PC).Count 
                 $AntiVirusProduct = Get-WmiObject -Namespace "root\SecurityCenter2" -Class AntiVirusProduct  -ComputerName $PC                 $AntiVirusProduct = Get-WmiObject -Namespace "root\SecurityCenter2" -Class AntiVirusProduct  -ComputerName $PC
 +                $AntiVirusCount = $AntiVirusProduct.Count
  
                 If ($AntiVirusCount.Count -gt 2)                 If ($AntiVirusCount.Count -gt 2)
                     {                     {
                         # Erreur plus de 2 antivirus présents                         # Erreur plus de 2 antivirus présents
-                        $CheckTime = Get-Date -UFormat "%Y-%m-%d %H:%M:%S" +                        Add-Log -Type "CRIT" -Message "$PC possède plusieurs antivirus. Veuillez vérifier."
-                        Write-Host "$CheckTime     " -NoNewline +
-                        Write-Host "CRIT     " -NoNewline -ForegroundColor Red +
-                        Write-Host "$PC possède plusieurs antivirus. Veuillez vérifier." +
-                        Add-Content -Path $LogFile -Value "$CheckTime     CRIT     $PC possède plusieurs antivirus. Veuillez vérifier."+
                         $CritCount += 1                         $CritCount += 1
                         If ($PCWithManyAV -eq "n/a")                         If ($PCWithManyAV -eq "n/a")
Ligne 227: Ligne 272:
                     {                     {
                         # Filtre pour supprimer Windows Defender qui doit être désactivé et création de la liste d'état de l'antivirus présent                         # Filtre pour supprimer Windows Defender qui doit être désactivé et création de la liste d'état de l'antivirus présent
-                        $AntiVirusProduct = Get-WmiObject -Namespace "root\SecurityCenter2" -Class AntiVirusProduct  -ComputerName $PC | Where-Object {$_.displayname -ne "Windows Defender"}+                        $AntiVirusProduct = Get-WmiObject -Namespace "root\SecurityCenter2" -Class AntiVirusProduct -ComputerName $PC | Where-Object {$_.displayname -ne "Windows Defender"}
                     }                     }
                 If ($AntiVirusProduct -eq '')                 If ($AntiVirusProduct -eq '')
                     {                     {
-                        # Erreur pas d'antivirus +                        #TODO Erreur pas d'antivirus 
-                        $CheckTime = Get-Date -UFormat "%Y-%m-%d %H:%M:%S" +                        Add-Log -Type "CRIT" -Message "$PC ne possède aucun antivirus. Veuillez vérifier."
-                        Write-Host "$CheckTime     " -NoNewline +
-                        Write-Host "CRIT     " -NoNewline -ForegroundColor Red +
-                        Write-Host "$PC ne possède aucun antivirus. Veuillez vérifier." +
-                        Add-Content -Path $LogFile -Value "$CheckTime     CRIT     $PC ne possède aucun antivirus. Veuillez vérifier."+
                         $CritCount += 1                         $CritCount += 1
                         If ($PCWithoutAV -eq "n/a")                         If ($PCWithoutAV -eq "n/a")
Ligne 251: Ligne 292:
                 # Affichage de l'antivirus détecté                 # Affichage de l'antivirus détecté
                 $AVName = $AntiVirusProduct.displayName                 $AVName = $AntiVirusProduct.displayName
-                $CheckTime = Get-Date -UFormat "%Y-%m-%d %H:%M:%S" +                Add-Log -Type "INFO" -Message "Antivirus détecté : $AVName."
-                Write-Host "$CheckTime     " -NoNewline +
-                Write-Host "INFO     " -NoNewline -ForegroundColor Green +
-                Write-Host "Antivirus détecté : $AVName." +
-                Add-Content -Path $LogFile -Value "$CheckTime     INFO     Antivirus détecté : $AVName."+
  
                 # Extraction des données de l'antivirus                  # Extraction des données de l'antivirus 
Ligne 261: Ligne 298:
    
                 # Conversion en hexadecimal (avec ajout de 0 si nécessaire pour avoir une chaîne de 6 caractères)                  # Conversion en hexadecimal (avec ajout de 0 si nécessaire pour avoir une chaîne de 6 caractères) 
-                $Hexa = [Convert]::ToString($productState, 16).PadLeft(6,'0'+                $Hexa = [Convert]::ToString($productState, 16).PadLeft(6,"0"
  
                 # Séparation des indicateurs (les 2 premiers caractères puis les 2 suivants et enfin les 2 derniers)                 # Séparation des indicateurs (les 2 premiers caractères puis les 2 suivants et enfin les 2 derniers)
Ligne 269: Ligne 306:
  
                 # Création de la valeur correspondant au type de protection                 # Création de la valeur correspondant au type de protection
-                $Provider = ""+                $Provider = ''
                 While ($WSC_SECURITY_PROVIDER)                 While ($WSC_SECURITY_PROVIDER)
                     {                     {
Ligne 276: Ligne 313:
                                 [Int]$WSC_SECURITY_PROVIDER = [Int]$WSC_SECURITY_PROVIDER - 64                                 [Int]$WSC_SECURITY_PROVIDER = [Int]$WSC_SECURITY_PROVIDER - 64
                                 $Provider += "Service"                                 $Provider += "Service"
-                                $CheckTime = Get-Date -UFormat "%Y-%m-%d %H:%M:%S" +                                Add-Log -Type "INFO" -Message "Fournisseur d'informations : Service."
-                                Write-Host "$CheckTime     " -NoNewline +
-                                Write-Host "INFO     " -NoNewline -ForegroundColor Green +
-                                Write-Host "Fournisseur d'informations : Service." +
-                                Add-Content -Path $LogFile -Value "$CheckTime     INFO     Fournisseur d'informations : Service."+
                             }                             }
                         ElseIf ([Int]$WSC_SECURITY_PROVIDER -ge 32)                         ElseIf ([Int]$WSC_SECURITY_PROVIDER -ge 32)
                             {                             {
                                 [Int]$WSC_SECURITY_PROVIDER = [Int]$WSC_SECURITY_PROVIDER - 32                                 [Int]$WSC_SECURITY_PROVIDER = [Int]$WSC_SECURITY_PROVIDER - 32
-                                If ($Provider -eq "")+                                If ($Provider -eq '')
                                     {                                     {
                                         $Provider += "User Controlled"                                         $Provider += "User Controlled"
Ligne 293: Ligne 326:
                                         $Provider += ", User Controlled"                                         $Provider += ", User Controlled"
                                     }                                     }
-                                $CheckTime = Get-Date -UFormat "%Y-%m-%d %H:%M:%S" +                                Add-Log -Type "INFO" -Message "Fournisseur d'informations : User Controlled."
-                                Write-Host "$CheckTime     " -NoNewline +
-                                Write-Host "INFO     " -NoNewline -ForegroundColor Green +
-                                Write-Host "Fournisseur d'informations : User Controlled." +
-                                Add-Content -Path $LogFile -Value "$CheckTime     INFO     Fournisseur d'informations : User Controlled."+
                             }                             }
                         ElseIf ([Int]$WSC_SECURITY_PROVIDER -ge 16)                         ElseIf ([Int]$WSC_SECURITY_PROVIDER -ge 16)
                             {                             {
                                 [Int]$WSC_SECURITY_PROVIDER = [Int]$WSC_SECURITY_PROVIDER - 16                                 [Int]$WSC_SECURITY_PROVIDER = [Int]$WSC_SECURITY_PROVIDER - 16
-                                If ($Provider -eq "")+                                If ($Provider -eq '')
                                     {                                     {
                                         $Provider += "Internet Settings"                                         $Provider += "Internet Settings"
Ligne 310: Ligne 339:
                                         $Provider += ", Internet Settings"                                         $Provider += ", Internet Settings"
                                     }                                     }
-                                $CheckTime = Get-Date -UFormat "%Y-%m-%d %H:%M:%S" +                                Add-Log -Type "INFO" -Message "Fournisseur d'informations : Internet Settings."
-                                Write-Host "$CheckTime     " -NoNewline +
-                                Write-Host "INFO     " -NoNewline -ForegroundColor Green +
-                                Write-Host "Fournisseur d'informations : Internet Settings." +
-                                Add-Content -Path $LogFile -Value "$CheckTime     INFO     Fournisseur d'informations : Internet Settings."+
                             }                             }
                         ElseIf ([Int]$WSC_SECURITY_PROVIDER -ge 8)                         ElseIf ([Int]$WSC_SECURITY_PROVIDER -ge 8)
                             {                             {
                                 [Int]$WSC_SECURITY_PROVIDER = [Int]$WSC_SECURITY_PROVIDER - 8                                 [Int]$WSC_SECURITY_PROVIDER = [Int]$WSC_SECURITY_PROVIDER - 8
-                                If ($Provider -eq "")+                                If ($Provider -eq '')
                                     {                                     {
                                         $Provider += "AntiSpyware"                                         $Provider += "AntiSpyware"
Ligne 327: Ligne 352:
                                         $Provider += ", AntiSpyware"                                         $Provider += ", AntiSpyware"
                                     }                                     }
-                                $CheckTime = Get-Date -UFormat "%Y-%m-%d %H:%M:%S" +                                Add-Log -Type "INFO" -Message "Fournisseur d'informations : AntiSpyware."
-                                Write-Host "$CheckTime     " -NoNewline +
-                                Write-Host "INFO     " -NoNewline -ForegroundColor Green +
-                                Write-Host "Fournisseur d'informations : AntiSpyware." +
-                                Add-Content -Path $LogFile -Value "$CheckTime     INFO     Fournisseur d'informations : AntiSpyware."+
                             }                             }
                         ElseIf ([Int]$WSC_SECURITY_PROVIDER -ge 4)                         ElseIf ([Int]$WSC_SECURITY_PROVIDER -ge 4)
                             {                             {
                                 [Int]$WSC_SECURITY_PROVIDER = [Int]$WSC_SECURITY_PROVIDER - 4                                 [Int]$WSC_SECURITY_PROVIDER = [Int]$WSC_SECURITY_PROVIDER - 4
-                                If ($Provider -eq "")+                                If ($Provider -eq '')
                                     {                                     {
                                         $Provider += "Antivirus"                                         $Provider += "Antivirus"
Ligne 344: Ligne 365:
                                         $Provider += ", Antivirus"                                         $Provider += ", Antivirus"
                                     }                                     }
-                                $CheckTime = Get-Date -UFormat "%Y-%m-%d %H:%M:%S" +                                Add-Log -Type "INFO" -Message "Fournisseur d'informations : Antivirus."
-                                Write-Host "$CheckTime     " -NoNewline +
-                                Write-Host "INFO     " -NoNewline -ForegroundColor Green +
-                                Write-Host "Fournisseur d'informations : Antivirus." +
-                                Add-Content -Path $LogFile -Value "$CheckTime     INFO     Fournisseur d'informations : Antivirus."+
                             }                             }
                         ElseIf ([Int]$WSC_SECURITY_PROVIDER -ge 2)                         ElseIf ([Int]$WSC_SECURITY_PROVIDER -ge 2)
                             {                             {
                                 [Int]$WSC_SECURITY_PROVIDER = [Int]$WSC_SECURITY_PROVIDER - 2                                 [Int]$WSC_SECURITY_PROVIDER = [Int]$WSC_SECURITY_PROVIDER - 2
-                                If ($Provider -eq "")+                                If ($Provider -eq '')
                                     {                                     {
                                         $Provider += "AutoUpdate"                                         $Provider += "AutoUpdate"
Ligne 361: Ligne 378:
                                         $Provider += ", AutoUpdate"                                         $Provider += ", AutoUpdate"
                                     }                                     }
-                                $CheckTime = Get-Date -UFormat "%Y-%m-%d %H:%M:%S" +                                Add-Log -Type "INFO" -Message "Fournisseur d'informations : AutoUpdate."
-                                Write-Host "$CheckTime     " -NoNewline +
-                                Write-Host "INFO     " -NoNewline -ForegroundColor Green +
-                                Write-Host "Fournisseur d'informations : AutoUpdate." +
-                                Add-Content -Path $LogFile -Value "$CheckTime     INFO     Fournisseur d'informations : AutoUpdate."+
                             }                             }
                         ElseIf ([Int]$WSC_SECURITY_PROVIDER -ge 1)                         ElseIf ([Int]$WSC_SECURITY_PROVIDER -ge 1)
                             {                             {
                                 [Int]$WSC_SECURITY_PROVIDER = [Int]$WSC_SECURITY_PROVIDER - 1                                 [Int]$WSC_SECURITY_PROVIDER = [Int]$WSC_SECURITY_PROVIDER - 1
-                                If ($Provider -eq "")+                                If ($Provider -eq '')
                                     {                                     {
                                         $Provider += "FireWall"                                         $Provider += "FireWall"
Ligne 378: Ligne 391:
                                         $Provider += ", FireWall"                                         $Provider += ", FireWall"
                                     }                                     }
-                                $CheckTime = Get-Date -UFormat "%Y-%m-%d %H:%M:%S" +                                Add-Log -Type "INFO" -Message "Fournisseur d'informations : FireWall."
-                                Write-Host "$CheckTime     " -NoNewline +
-                                Write-Host "INFO     " -NoNewline -ForegroundColor Green +
-                                Write-Host "Fournisseur d'informations : FireWall." +
-                                Add-Content -Path $LogFile -Value "$CheckTime     INFO     Fournisseur d'informations : FireWall."+
                             }                             }
                     }                     }
-                If ($Provider -eq "")+                If ($Provider -eq '')
                     {                     {
                         $Provider = "None"                         $Provider = "None"
-                        $CheckTime = Get-Date -UFormat "%Y-%m-%d %H:%M:%S" +                        Add-Log -Type "WARN" -Message "Aucun fournisseurs d'informations, veuillez vérifier l'état de l'antivirus."
-                        Write-Host "$CheckTime     " -NoNewline +
-                        Write-Host "WARN     " -NoNewline -ForegroundColor Yellow +
-                        Write-Host "Aucun fournisseurs d'informations, veuillez vérifier l'état de l'antivirus." +
-                        Add-Content -Path $LogFile -Value "$CheckTime     INFO     Aucun fournisseurs d'informations, veuillez vérifier l'état de l'antivirus."+
                     }                     }
  
Ligne 401: Ligne 406:
                             {                             {
                                 $RTStatus = "Inactif"                                 $RTStatus = "Inactif"
-                                $CheckTime = Get-Date -UFormat "%Y-%m-%d %H:%M:%S" +                                Add-Log -Type "CRIT" -Message "Protection en temps réel inactive, veuillez vérifier l'état de l'antivirus."
-                                Write-Host "$CheckTime     " -NoNewline +
-                                Write-Host "CRIT     " -NoNewline -ForegroundColor Red +
-                                Write-Host "Protection en temps réel inactive, veuillez vérifier l'état de l'antivirus." +
-                                Add-Content -Path $LogFile -Value "$CheckTime     CRIT     Protection en temps réel inactive, veuillez vérifier l'état de l'antivirus."+
                                 $CritCount += 1                                 $CritCount += 1
                                 If ($PCWithFaultyRT -eq "n/a")                                 If ($PCWithFaultyRT -eq "n/a")
Ligne 419: Ligne 420:
                             {                             {
                                 $RTStatus = "En arrêt"                                 $RTStatus = "En arrêt"
-                                $CheckTime = Get-Date -UFormat "%Y-%m-%d %H:%M:%S" +                                Add-Log -Type "WARN" -Message "Protection en temps réel en cours d'arrêt, veuillez vérifier l'état de l'antivirus."
-                                Write-Host "$CheckTime     " -NoNewline +
-                                Write-Host "WARN     " -NoNewline -ForegroundColor Yellow +
-                                Write-Host "Protection en temps réel en cours d'arrêt, veuillez vérifier l'état de l'antivirus." +
-                                Add-Content -Path $LogFile -Value "$CheckTime     WARN     Protection en temps réel en cours d'arrêt, veuillez vérifier l'état de l'antivirus."+
                                 $WarnCount += 1                                 $WarnCount += 1
                                 If ($PCWithFaultyRT -eq "n/a")                                 If ($PCWithFaultyRT -eq "n/a")
Ligne 438: Ligne 435:
                             {                             {
                                 $RTStatus = "Actif"                                 $RTStatus = "Actif"
-                                $CheckTime = Get-Date -UFormat "%Y-%m-%d %H:%M:%S" +                                Add-Log -Type "INFO" -Message "Protection en temps réel active."
-                                Write-Host "$CheckTime     " -NoNewline +
-                                Write-Host "INFO     " -NoNewline -ForegroundColor Green +
-                                Write-Host "Protection en temps réel active." +
-                                Add-Content -Path $LogFile -Value "$CheckTime     INFO     Protection en temps réel active."+
                             }                             }
                         "11"                         "11"
                             {                             {
                                 $RTStatus = "En veille"                                 $RTStatus = "En veille"
-                                $CheckTime = Get-Date -UFormat "%Y-%m-%d %H:%M:%S" +                                Add-Log -Type "INFO" -Message "Protection en temps réel en état de veille."
-                                Write-Host "$CheckTime     " -NoNewline +
-                                Write-Host "INFO     " -NoNewline -ForegroundColor Green +
-                                Write-Host "Protection en temps réel en état de veille." +
-                                Add-Content -Path $LogFile -Value "$CheckTime     INFO     Protection en temps réel en état de veille."+
                             }                             }
                         default                         default
                             {                             {
                                 $RTStatus = "Inconnu"                                 $RTStatus = "Inconnu"
-                                $CheckTime = Get-Date -UFormat "%Y-%m-%d %H:%M:%S" +                                Add-Log -Type "UNKN" -Message "Etat de la protection en temps réel inconnu, veuillez vérifier l'état de l'antivirus."
-                                Write-Host "$CheckTime     " -NoNewline +
-                                Write-Host "????     " -NoNewline -ForegroundColor Magenta +
-                                Write-Host "Etat de la protection en temps réel inconnu, veuillez vérifier l'état de l'antivirus." +
-                                Add-Content -Path $LogFile -Value "$CheckTime     ????     Etat de la protection en temps réel inconnu, veuillez vérifier l'état de l'antivirus."+
                                 $WarnCount += 1                                 $WarnCount += 1
                                 If ($PCWithFaultyRT -eq "n/a")                                 If ($PCWithFaultyRT -eq "n/a")
Ligne 479: Ligne 464:
                         "00"                         "00"
                             {                             {
-                                $BaseStatus = "A jour" +                                Add-Log -Type "INFO" -Message "Bases de définitions de virus à jour."
-                                $CheckTime = Get-Date -UFormat "%Y-%m-%d %H:%M:%S" +
-                                Write-Host "$CheckTime     " -NoNewline +
-                                Write-Host "INFO     " -NoNewline -ForegroundColor Green +
-                                Write-Host "Bases de définitions de virus à jour." +
-                                Add-Content -Path $LogFile -Value "$CheckTime     INFO     Bases de définitions de virus à jour."+
                             }                             }
                         "10"                         "10"
                             {                             {
-                                $BaseStatus = "Obsolète" +                                Add-Log -Type "WARN" -Message "Bases de définitions de virus obsolètes."
-                                $CheckTime = Get-Date -UFormat "%Y-%m-%d %H:%M:%S" +
-                                Write-Host "$CheckTime     " -NoNewline +
-                                Write-Host "WARN     " -NoNewline -ForegroundColor Yellow +
-                                Write-Host "Bases de définitions de virus obsolètes." +
-                                Add-Content -Path $LogFile -Value "$CheckTime     WARN     Bases de définitions de virus obsolètes."+
                                 $WarmCount += 1                                 $WarmCount += 1
                                 If ($PCWithObsoleteBase -eq "n/a")                                 If ($PCWithObsoleteBase -eq "n/a")
Ligne 506: Ligne 481:
                         default                         default
                             {                             {
-                                $BaseStatus = "Inconnu" +                                Add-Log -Type "UNKN" -Message "Impossible de déterminer l'état des bases, veuillez vérifier l'état de l'antivirus."
-                                $CheckTime = Get-Date -UFormat "%Y-%m-%d %H:%M:%S" +
-                                Write-Host "$CheckTime     " -NoNewline +
-                                Write-Host "????     " -NoNewline -ForegroundColor Magenta +
-                                Write-Host "Impossible de déterminer l'état des bases, veuillez vérifier l'état de l'antivirus." +
-                                Add-Content -Path $LogFile -Value "$CheckTime     ????     Impossible de déterminer l'état des bases, veuillez vérifier l'état de l'antivirus."+
                                 $WarnCount += 1                                 $WarnCount += 1
                                 If ($PCWithObsoleteBase -eq "n/a")                                 If ($PCWithObsoleteBase -eq "n/a")
Ligne 531: Ligne 501:
  
 # Affichage du résumé # Affichage du résumé
-Write-Host "----------------------------------------------------------" +Add-Log -Line 
-Add-Content -Path $LogFile -Value "----------------------------------------------------------" +Add-Log -Type "INFO" -Message "Total des PC : $TotalPC." 
-$CheckTime = Get-Date -UFormat "%Y-%m-%d %H:%M:%S" +Add-Log -Type "INFO" -Message "PC interrogés : $PCOnline."
-Write-Host "$CheckTime     " -NoNewline +
-Write-Host "INFO     " -NoNewline -ForegroundColor Green +
-Write-Host "Total des PC : $TotalPC." +
-Add-Content -Path $LogFile -Value "$CheckTime     INFO     Total des PC : $TotalPC." +
-$CheckTime = Get-Date -UFormat "%Y-%m-%d %H:%M:%S" +
-Write-Host "$CheckTime     " -NoNewline +
-Write-Host "INFO     " -NoNewline -ForegroundColor Green +
-Write-Host "PC interrogés : $PCOnline." +
-Add-Content -Path $LogFile -Value "$CheckTime     INFO     PC interrogés : $PCOnline."+
 If ($PCOffline) If ($PCOffline)
     {     {
-        $CheckTime = Get-Date -UFormat "%Y-%m-%d %H:%M:%S" +        Add-Log -Type "WARN" -Message "PC hors-ligne : $PCOffline."
-        Write-Host "$CheckTime     " -NoNewline +
-        Write-Host "WARN     " -NoNewline -ForegroundColor Yellow +
-        Write-Host "PC hors-ligne : $PCOffline." +
-        Add-Content -Path $LogFile -Value "$CheckTime     WARN     PC hors-ligne : $PCOffline."+
     }     }
 Else Else
     {     {
-        $CheckTime = Get-Date -UFormat "%Y-%m-%d %H:%M:%S" +        Add-Log -Type "INFO" -Message "PC hors-ligne : $PCOffline."
-        Write-Host "$CheckTime     " -NoNewline +
-        Write-Host "INFO     " -NoNewline -ForegroundColor Green +
-        Write-Host "PC hors-ligne : $PCOffline." +
-        Add-Content -Path $LogFile -Value "$CheckTime     INFO     PC hors-ligne : $PCOffline."+
     }     }
 If ($WarnCount) If ($WarnCount)
     {     {
-        $CheckTime = Get-Date -UFormat "%Y-%m-%d %H:%M:%S" +        Add-Log -Type "WARN" -Message "Avertissement : $WarnCount."
-        Write-Host "$CheckTime     " -NoNewline +
-        Write-Host "WARN     " -NoNewline -ForegroundColor Yellow +
-        Write-Host "Avertissement : $WarnCount." +
-        Add-Content -Path $LogFile -Value "$CheckTime     WARN     Avertissement : $WarnCount."+
     }     }
 Else Else
     {     {
-        $CheckTime = Get-Date -UFormat "%Y-%m-%d %H:%M:%S" +        Add-Log -Type "INFO" -Message "Avertissement : $WarnCount."
-        Write-Host "$CheckTime     " -NoNewline +
-        Write-Host "INFO     " -NoNewline -ForegroundColor Green +
-        Write-Host "Aucun avertissement détecté." +
-        Add-Content -Path $LogFile -Value "$CheckTime     INFO     Aucun avertissement détecté."+
     }     }
 If ($CritCount) If ($CritCount)
     {     {
-        $CheckTime = Get-Date -UFormat "%Y-%m-%d %H:%M:%S" +        Add-Log -Type "CRIT" -Message "Critique : $CritCount."
-        Write-Host "$CheckTime     " -NoNewline +
-        Write-Host "CRIT     " -NoNewline -ForegroundColor Red +
-        Write-Host "Critique : $CritCount." +
-        Add-Content -Path $LogFile -Value "$CheckTime     CRIT     Critique : $CritCount."+
     }     }
 Else Else
     {     {
-        $CheckTime = Get-Date -UFormat "%Y-%m-%d %H:%M:%S" +        Add-Log -Type "INFO" -Message "Critique : $CritCount."
-        Write-Host "$CheckTime     " -NoNewline +
-        Write-Host "INFO     " -NoNewline -ForegroundColor Green +
-        Write-Host "Aucun critique détecté." +
-        Add-Content -Path $LogFile -Value "$CheckTime     INFO     Aucun critique détecté."+
     }     }
-If ($PCWithObsoleteBase -ne "")+If ($PCWithObsoleteBase -ne "n/a")
     {     {
-        $CheckTime = Get-Date -UFormat "%Y-%m-%d %H:%M:%S" +        Add-Log -Type "WARN" -Message "PC nécessitant une mise à jour des bases de définitions de virus : $PCWithObsoleteBase."
-        Write-Host "$CheckTime     " -NoNewline +
-        Write-Host "WARN     " -NoNewline -ForegroundColor Yellow +
-        Write-Host "PC nécessitant une mise à jour des bases de définitions de virus : $PCWithObsoleteBase." +
-        Add-Content -Path $LogFile -Value "$CheckTime     WARN     PC nécessitant une mise à jour des bases de définitions de virus : $PCWithObsoleteBase."+
     }     }
-If ($PCWithFaultyRT -ne "")+Else
     {     {
-        $CheckTime = Get-Date -UFormat "%Y-%m-%d %H:%M:%S" +        Add-Log -Type "INFO" -Message "PC nécessitant une mise à jour des bases de définitions de virus : $PCWithObsoleteBase."
-        Write-Host "$CheckTime     " -NoNewline +
-        Write-Host "CRIT     " -NoNewline -ForegroundColor Red +
-        Write-Host "PC n'ayant pas la protection en temps réel activée : $PCWithFaultyRT." +
-        Add-Content -Path $LogFile -Value "$CheckTime     CRIT     PC n'ayant pas la protection en temps réel activée : $PCWithFaultyRT."+
     }     }
-If ($PCWithManyAV -ne "")+ 
 +If ($PCWithFaultyRT -ne "n/a")
     {     {
-        $CheckTime = Get-Date -UFormat "%Y-%m-%d %H:%M:%S" +        Add-Log -Type "CRIT" -Message "PC n'ayant pas la protection en temps réel activée : $PCWithFaultyRT."
-        Write-Host "$CheckTime     " -NoNewline +
-        Write-Host "CRIT     " -NoNewline -ForegroundColor Red +
-        Write-Host "PC ayant plusieurs antivirus actifs : $PCWithManyAV." +
-        Add-Content -Path $LogFile -Value "$CheckTime     CRIT     PC ayant plusieurs antivirus actifs : $PCWithManyAV."+
     }     }
-If ($PCWithoutAV -ne "")+Else 
 +    { 
 +        Add-Log -Type "INFO" -Message "PC n'ayant pas la protection en temps réel activée : $PCWithFaultyRT." 
 +    } 
 +If ($PCWithManyAV -ne "n/a"
 +    { 
 +        Add-Log -Type "CRIT" -Message "PC ayant plusieurs antivirus actifs : $PCWithManyAV." 
 +    } 
 +Else 
 +    { 
 +        Add-Log -Type "INFO" -Message "PC ayant plusieurs antivirus actifs : $PCWithManyAV." 
 +    } 
 +If ($PCWithoutAV -ne "n/a") 
 +    { 
 +        Add-Log -Type "CRIT" -Message "PC n'ayant aucun antivirus actif : $PCWithoutAV." 
 +    } 
 +Else
     {     {
-        $CheckTime = Get-Date -UFormat "%Y-%m-%d %H:%M:%S" +        Add-Log -Type "INFO" -Message "PC n'ayant aucun antivirus actif : $PCWithoutAV."
-        Write-Host "$CheckTime     " -NoNewline +
-        Write-Host "CRIT     " -NoNewline -ForegroundColor Red +
-        Write-Host "PC n'ayant aucun antivirus actif : $PCWithoutAV." +
-        Add-Content -Path $LogFile -Value "$CheckTime     CRIT     PC ayant plusieurs antivirus actif : $PCWithoutAV."+
     }     }
  
  
 # Création du rapport pour Nagios # Création du rapport pour Nagios
-If ($n)+If ($Nagios)
     {     {
         # On supprime l'ancien rapport         # On supprime l'ancien rapport
-        If (Test-Path 'C:\Scripts\AntivirusState\Report.dat')+        If (Test-Path $Report)
             {             {
-                Remove-Item -Path 'C:\Scripts\AntivirusState\Report.dat' -Force > $null+                Remove-Item -Path $Report -Force > $null
             }             }
  
         # Affichage dans la console         # Affichage dans la console
-        $CheckTime = Get-Date -UFormat "%Y-%m-%d %H:%M:%S" +        Add-Log -Line 
-        Write-Host "$CheckTime     " -NoNewline +        Add-Log -Type "INFO" -Message "Création du rapport pour Nagios."
-        Write-Host "INFO     " -NoNewline -ForegroundColor Green +
-        Write-Host "Création du rapport pour Nagios." +
-        Add-Content -Path $LogFile -Value "$CheckTime     INFO     Création du rapport pour Nagios."+
  
         # On crée un rapport vide         # On crée un rapport vide
         $TempVar = @{}         $TempVar = @{}
-        $TempVar | Export-Csv -Path 'C:\Scripts\AntivirusState\Report.dat' -Delimiter ';'+        $TempVar | Export-Csv -Path $Report -Delimiter ';'
  
         # On ajoute les valeurs pour Nagios         # On ajoute les valeurs pour Nagios
Ligne 656: Ligne 591:
         $ReportData | Export-Csv -Path 'C:\Scripts\AntivirusState\Report.dat' -Delimiter ';'         $ReportData | Export-Csv -Path 'C:\Scripts\AntivirusState\Report.dat' -Delimiter ';'
     }     }
-</code>+</sxh>
  
 ===== Script d'interprétation Nagios ===== ===== Script d'interprétation Nagios =====
  
-<code:ps1>+<sxh powershell>
 ############################################################################################################# #############################################################################################################
 #                                                                                                           # #                                                                                                           #
-# Traitement par Nagios du rapport de Get-AVState.ps1                                                       #+# Traitement par Nagios du rapport de Get-AntiVirusState.ps1                                                #
 #                                                                                                           # #                                                                                                           #
 # Par Nicolas THOREZ                                                                                        # # Par Nicolas THOREZ                                                                                        #
Ligne 679: Ligne 614:
 [String]$NoAV = $Report.NoAV [String]$NoAV = $Report.NoAV
  
-$Output = "" +$Output = '' 
-$OutputMessage = ""+$OutputMessage = ''
 $ExitCode = 3 $ExitCode = 3
  
Ligne 692: Ligne 627:
     {     {
         $Output = "Critical"         $Output = "Critical"
-        If ($OutputMessage -eq "")+        If ($OutputMessage -eq '')
             {             {
                 $OutputMessage = "PC with too many AV : $TooMany"                 $OutputMessage = "PC with too many AV : $TooMany"
Ligne 705: Ligne 640:
     {     {
         $Output = "Critical"         $Output = "Critical"
-        If ($OutputMessage -eq "")+        If ($OutputMessage -eq '')
             {             {
                 $OutputMessage = "PC without activated RealTime Protection : $RTFail"                 $OutputMessage = "PC without activated RealTime Protection : $RTFail"
Ligne 717: Ligne 652:
 If ($Obsolete -ne "n/a") If ($Obsolete -ne "n/a")
     {     {
-        If ($Output -eq "")+        If ($Output -eq '')
             {             {
                 $Output = "Warning"                 $Output = "Warning"
                 $ExitCode = 1                 $ExitCode = 1
             }             }
-        If ($OutputMessage -eq "")+        If ($OutputMessage -eq '')
             {             {
                 $OutputMessage = "PC with obsolete virus definitions bases : $Obsolete"                 $OutputMessage = "PC with obsolete virus definitions bases : $Obsolete"
Ligne 747: Ligne 682:
         exit $ExitCode         exit $ExitCode
     }     }
-</code> +</sxh>
- +
- --- //[[nekan@shyrkasystem.com|Nicolas THOREZ]] 2019/02/19 19:58//+
  
 ~~DISCUSSION~~ ~~DISCUSSION~~
  
  
  • antivirusstate.1551130067.txt.gz
  • Dernière modification : 2019/02/25 20:27
  • (modification externe)