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
dailysave [2019/03/26 15:16] – [Script d'interprétation pour Nagios] nekandailysave [2021/03/05 16:50] (Version actuelle) nekan
Ligne 1: Ligne 1:
 +<alert type="danger">Archivage suite à la modification du script :
 +  * Abandon de l'utilisation de ROBOCOPY
 +  * Utilisation de ShadowCopy
 +</alert>
 +
 ====== Invoke-DailySave - Sauvegarde journalière des dossiers utilisateurs ====== ====== Invoke-DailySave - Sauvegarde journalière des dossiers utilisateurs ======
  
Ligne 13: Ligne 18:
  
 Les informations sont affichés en temps réel dans la console avec une coloration syntaxique, information en <color green>vert</color>, avertissement en <color #EF9300>jaune</color> et critique en <color red>rouge</color>. Les informations sont affichés en temps réel dans la console avec une coloration syntaxique, information en <color green>vert</color>, avertissement en <color #EF9300>jaune</color> et critique en <color red>rouge</color>.
-Il inclue aussi la possibilité de création d'un rapport succin qui pourra être traité par un autre script renvoyant les informations dans Nagios.+Il inclut aussi la possibilité de création d'un rapport succin qui pourra être traité par un autre script renvoyant les informations dans Nagios.
  
 ===== Script principal ===== ===== Script principal =====
  
-<code:ps1+<sxh powershell
-#+Ligne ajoutée pour activer la coloration syntaxique. A supprimer.
 <# <#
 .SYNOPSIS .SYNOPSIS
 +  
 +  
 +    ███████╗██╗  ██╗██╗   ██╗██████╗ ██╗  ██╗ █████╗                  
 +    ██╔════╝██║  ██║╚██╗ ██╔╝██╔══██╗██║ ██╔╝██╔══██╗                 
 +    ███████╗███████║ ╚████╔╝ ██████╔╝█████╔╝ ███████║                 
 +    ╚════██║██╔══██║  ╚██╔╝  ██╔══██╗██╔═██╗ ██╔══██║                 
 +    ███████║██║  ██║   ██║   ██║  ██║██║  ██╗██║  ██║                 
 +    ╚══════╝╚═╝  ╚═╝   ╚═╝   ╚═╝  ╚═╝╚═╝  ╚═╝╚═╝  ╚═╝                 
 +                                                                  
 +                ███████╗██╗   ██╗███████╗████████╗███████╗███╗   ███╗ 
 +                ██╔════╝╚██╗ ██╔╝██╔════╝╚══██╔══╝██╔════╝████╗ ████║ 
 +                ███████╗ ╚████╔╝ ███████╗   ██║   █████╗  ██╔████╔██║ 
 +                ╚════██║  ╚██╔╝  ╚════██║   ██║   ██╔══╝  ██║╚██╔╝██║ 
 +                ███████║   ██║   ███████║   ██║   ███████╗██║ ╚═╝ ██║ 
 +                ╚══════╝   ╚═╝   ╚══════╝   ╚═╝   ╚══════╝╚═╝     ╚═╝ 
 +                                                                  
 + 
 ############################################################################################################# #############################################################################################################
 #                                                                                                           # #                                                                                                           #
Ligne 32: Ligne 53:
 .DESCRIPTION .DESCRIPTION
  
-Lance la sauvegarde d'un dossier local de l'utilisateur vers un dossier partagé d'un serveur de fichiers. +Lance la sauvegarde du dossier "Documents" de chaque utilisateur.
-Cette sauvegarde est une copie miroir de ce dossier vers le même dossier dans un partage lié pour chaque utilisateur à son dossier personnel.+
 Un fichier de log journalier est créé et contient toutes les traces de la sauvegarde. (C:\Scripts\DailySave\DailySave-AAAA-MM-JJ.log) Un fichier de log journalier est créé et contient toutes les traces de la sauvegarde. (C:\Scripts\DailySave\DailySave-AAAA-MM-JJ.log)
  
Ligne 40: Ligne 60:
 Indique le ou les noms (séparé par des virgules (,)) des PC à sauvegarder. Si le paramètre n'est pas renseigner, la sauvegarde 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 à sauvegarder. Si le paramètre n'est pas renseigner, la sauvegarde sera lancée sur tous les PC contenus dans les OU PC Fixes, PC Portables et Direction.
  
-.PARAMETER v+.PARAMETER Verbose 
 + 
 +Si le paramètre -Verbose est indiqué, les détails de la sauvegarde seront affichés dans la console. 
 + 
 +.PARAMETER Nagios
  
-Si le paramètre -est indiqué, les détails de la sauvegarde seront affichés dans la console.+Si le paramètre -Nagios est indiqué, un fichier de réponse pour un traitement par Nagios sera créé (C:\Scripts\DailySave\SaveReport.dat).
  
-.PARAMETER n+.PARAMETER ExtraInfo
  
-Si le paramètre -est indiqué, un fichier de réponse pour un traitement par Nagios sera créé (C:\Scripts\DailySave\SaveReport.dat)+Si le paramètre -ExtraInfo est indiqué, un rapport de copie détaillé sera affiché pour chaque PC traité
  
 .EXAMPLE .EXAMPLE
  
-.\Invoke-DailySave.ps1+.\DailySave.ps1
 Lance la sauvegarde sur tous les postes. Lance la sauvegarde sur tous les postes.
  
 .EXAMPLE .EXAMPLE
  
-.\Invoke-DailySave.ps1 -v+.\DailySave.ps1 -Verbose
 Lance la sauvegarde sur tous les postes en affichant les détails. Lance la sauvegarde sur tous les postes en affichant les détails.
  
 .EXAMPLE .EXAMPLE
  
-.\Invoke-DailySave.ps1 -PC PC-49,PC-7+.\DailySave.ps1 -PC PC-49,PC-7
 Lance la sauvegarde sur les postes PC-49 et PC-7 Lance la sauvegarde sur les postes PC-49 et PC-7
  
Ligne 67: Ligne 91:
 NOM :      Invoke-DailySave.ps1 NOM :      Invoke-DailySave.ps1
 AUTEUR :   Nicolas THOREZ AUTEUR :   Nicolas THOREZ
-VERSION :  1.3.1+VERSION :  1.5
  
 HISTORIQUE : HISTORIQUE :
Ligne 94: Ligne 118:
  
 1.3.1   2019-02-06      Modification de la gestion des erreurs en cas d'erreur inconnue 1.3.1   2019-02-06      Modification de la gestion des erreurs en cas d'erreur inconnue
 +
 +1.4     2019-03-26      Réécriture du mode verbeux
 +
 +1.5     2019-04-08      Optimisation du code
 #> #>
  
Ligne 100: Ligne 128:
 Param( Param(
     [String[]]$PC='All',     [String[]]$PC='All',
-    [Switch]$v+    [Switch]$Verbose
-    [Switch]$n+    [Switch]$Nagios, 
 +    [Switch]$ExtraInfo
 ) )
  
Ligne 108: Ligne 137:
 If ($PC -eq 'All') If ($PC -eq 'All')
     {     {
-        # Ici on indique les OU dans lesquelles on va chercher les postes à sauvegarder 
         $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 118: Ligne 146:
     }     }
 $CheckDate = Get-Date -UFormat %Y-%m-%d $CheckDate = Get-Date -UFormat %Y-%m-%d
-$LogFile = "C:\Scripts\DailySave\DailySave-$CheckDate.log"      # Chemin vers la sauvegarde des logs +$Path = "C:\Scripts\DailySave
-$UserProfilePath = ""+$LogFile = "$Path\DailySave-$CheckDate.log" 
 +$ScriptName = "Invoke-DailySave.ps1" 
 +$UserProfilePath = ''
 $PCSaved = 0 $PCSaved = 0
 $PCOffline = 0 $PCOffline = 0
Ligne 125: Ligne 155:
 $PCWithWarn = 0 $PCWithWarn = 0
 $TotalPC = 0 $TotalPC = 0
-$Old = 7                                # Indiquer ici la durée de rétention des anciens logs en jours. +$Old = 7 
-$Domaine = 'TEST                      # Indiquer ici le nom de domaine au format NetBIOS. +$Domaine = "TEST" 
-$FQDN = 'TEST.LOCAL'                    # Indiquer ici le nom DNS du domaine+$FQDN = "test.local" 
-$Partage = "\\SAMBA\Partage           # Indiquer ici le chemin de la racine du partage réseaux. +$Partage = "\\SERVEUR\Partage_utilisateur
-$SavedPath = "Documents"                # Indiquer ici le dossier du profil utilisateur à sauvegarder.+$SavedPath = "Documents" 
 +$Report = "$Path\SaveReport.dat" 
  
 # Déclaration des fonctions # Déclaration 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-ConnectedUser($PC) Function Get-ConnectedUser($PC)
Ligne 140: Ligne 222:
                                  
                 $Name = "n/a"                 $Name = "n/a"
-                $CheckTime = Get-Date -UFormat "%Y-%m-%d %H:%M:%S" +                Add-Log -Type "WARN" -Message "Aucun utilisateur connecté."
-                Write-Host "$CheckTime     " -NoNewline +
-                Write-Host "WARN     " -NoNewline -ForegroundColor Yellow +
-                Write-Host "Aucun utilisateur connecté." +
-                Add-Content -Path $LogFile -Value "$CheckTime     WARN     Aucun utilisateur connecté."+
             }             }
         Else         Else
             {             {
-                $Name = $Name.Replace('$Domaine\',''+                $Name = $Name.Replace("$Domaine",''
-                $CheckTime = Get-Date -UFormat "%Y-%m-%d %H:%M:%S" +                Add-Log -Type "INFO" -Message "Utilisateur $Name."
-                Write-Host "$CheckTime     " -NoNewline +
-                Write-Host "INFO     " -NoNewline -ForegroundColor Green +
-                Write-Host "Utilisateur $Name." +
-                Add-Content -Path $LogFile -Value "$CheckTime     INFO     Utilisateur $Name."+
             }             }
         Return $Name         Return $Name
Ligne 161: Ligne 235:
     {     {
         Param(         Param(
-            [parameter(position=0)] +            [String]$PC,
-            $PC, +
-            [parameter(position=1)]+
             [String]$User             [String]$User
         )         )
  
         # On récupère le SID de l'utilisateur         # On récupère le SID de l'utilisateur
-        $SID = ([wmi]"win32_userAccount.Domain=$Domaine,Name='$User'").SID+        $SID = ([wmi]"win32_userAccount.Domain='$Domaine',Name='$User'").SID
  
         # ON interroge le PC distant pour connaître le chemin du profil utilisateur         # ON interroge le PC distant pour connaître le chemin du profil utilisateur
Ligne 180: Ligne 252:
     {     {
         # 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 203: Ligne 267:
 Function Run-Save Function Run-Save
     {     {
-        Param( +        Param 
-            [parameter(position=0)] +            
-            $PC, +                [string]$PC, 
-            [parameter(position=1)] +                [String]$User 
-            [String]$User +            )
-        )+
  
-        # Récupération du chemin du profil utilisateur et formattage du chemin pour accès réseau +        # Récupération du chemin du profil utilisateur et formatage du chemin pour accès réseau 
-        $UserProfilePath = Get-UserLocalPath $PC $User+        $UserProfilePath = Get-UserLocalPath -PC $PC -User $User
         $UserProfilePath = $UserProfilePath.Replace(":","$")         $UserProfilePath = $UserProfilePath.Replace(":","$")
                  
         # Définitions des dossiers pour la copie         # Définitions des dossiers pour la copie
         $Source = "\\$PC\$UserProfilePath\$SavedPath"         $Source = "\\$PC\$UserProfilePath\$SavedPath"
-        $Destination = "$Partage\$User\$SavedPath"+        $Destination = "$Partage\$User\Sauvegardes_Journalieres"
  
         # Copie des fichiers         # Copie des fichiers
-        If ($v)+        If ($ExtraInfo)
             {             {
                 ROBOCOPY $Source $Destination /COPYALL /MIR /ZB /R:0 /W:0                 ROBOCOPY $Source $Destination /COPYALL /MIR /ZB /R:0 /W:0
Ligne 232: Ligne 295:
 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 sauvegarde." 
-        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 sauvegarde." +
-        Add-Content -Path $LogFile -Value "----------------------------------------------------------" +
-        Add-Content -Path $LogFile -Value "$CheckTime     INFO     Début de la sauvegarde."+
     }     }
 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 sauvegarde." 
         New-Item -Path $LogFile > $null         New-Item -Path $LogFile > $null
-        Get-ChildItem –Path "C:\Scripts\DailySave" –Recurse | Where-Object CreationTime –lt (Get-Date).AddDays(-$Old) | Where-Object Name -ne DailySave.ps1 | Remove-Item -Force > $null +        Add-Log -Type "INFO" -Message "Création du fichier log." 
-        Add-Content -Path $LogFile -Value "Log de la sauvegarde journalière des dossiers utilisateurs." +        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 sauvegarde." 
-        Add-Content -Path $LogFile -Value "----------------------------------------------------------" +        Add-Log -Line
-        Add-Content -Path $LogFile -Value "$CheckTime     INFO     Début de la sauvegarde."+
     }     }
  
Ligne 270: Ligne 314:
     {     {
         $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 289: Ligne 329:
                     {                     {
                         $CheckTime = Get-Date -UFormat "%Y-%m-%d %H:%M:%S"                         $CheckTime = Get-Date -UFormat "%Y-%m-%d %H:%M:%S"
-                        Write-Host "$CheckTime     " -NoNewline +                        If ($Verbose) 
-                        Write-Host "INFO     " -NoNewline -ForegroundColor Green +                            { 
-                        Write-Host "Début de la sauvegarde de $PC."+                                Write-Host "$CheckTime     " -NoNewline 
 +                                Write-Host "INFO     " -NoNewline -ForegroundColor Green 
 +                                Write-Host "Début de la sauvegarde de $PC." 
 +                            }
                         Add-Content -Path $LogFile -Value "$CheckTime     INFO     Début de la sauvegarde de $PC."                         Add-Content -Path $LogFile -Value "$CheckTime     INFO     Début de la sauvegarde de $PC."
-                        Run-Save $PC $User+                        Add-log -Type "INFO" -Message "Début de la sauvegarde de $PC." 
 +                        Run-Save -PC $PC -User $User
                         Switch ($LASTEXITCODE)                         Switch ($LASTEXITCODE)
                             {                             {
                                 0                                 0
                                     {                                     {
-                                        $CheckTime = Get-Date -UFormat "%Y-%m-%d %H:%M:%S" +                                        Add-Log -Type "INFO" -Message "Source et destination identique, sauvegarde non nécessaire."
-                                        Write-Host "$CheckTime     " -NoNewline +
-                                        Write-Host "INFO     " -NoNewline -ForegroundColor Green +
-                                        Write-Host "Source et destination identique, sauvegarde non nécessaire." +
-                                        Add-Content -Path $LogFile -Value "$CheckTime     INFO     Source et destination identique, sauvegarde non nécessaire."+
                                         $PCSaved += 1                                         $PCSaved += 1
                                     }                                     }
                                 1                                 1
                                     {                                     {
-                                        $CheckTime = Get-Date -UFormat "%Y-%m-%d %H:%M:%S" +                                        Add-Log -Type "INFO" -Message "Tous les fichiers ont été copiés avec succès."
-                                        Write-Host "$CheckTime     " -NoNewline +
-                                        Write-Host "INFO     " -NoNewline -ForegroundColor Green +
-                                        Write-Host "Tous les fichiers ont été copiés avec succès." +
-                                        Add-Content -Path $LogFile -Value "$CheckTime     INFO     Tous les fichiers ont été copiés avec succès."+
                                         $PCSaved += 1                                         $PCSaved += 1
                                     }                                     }
                                 2                                 2
                                     {                                     {
-                                        $CheckTime = Get-Date -UFormat "%Y-%m-%d %H:%M:%S" +                                        Add-Log -Type "WARN" -Message "Des fichiers étrangers ont été trouvés sur la destination. Sauvegarde abandonnée."
-                                        Write-Host "$CheckTime     " -NoNewline +
-                                        Write-Host "WARN     " -NoNewline -ForegroundColor Yellow +
-                                        Write-Host "Des fichiers étrangers ont été trouvés sur la destination. Sauvegarde abandonnée." +
-                                        Add-Content -Path $LogFile -Value "$CheckTime     WARN     Des fichiers étrangers ont été trouvés sur la destination. Sauvegarde abandonnée."+
                                         $PCWithWarn += 1                                         $PCWithWarn += 1
                                     }                                     }
                                 3                                 3
                                     {                                     {
-                                        $CheckTime = Get-Date -UFormat "%Y-%m-%d %H:%M:%S" +                                        Add-Log -Type "INFO" -Message "Certains fichiers ont été copiés. Des fichiers supplémentaires étaient présents. Aucun échec n'a été rencontré."
-                                        Write-Host "$CheckTime     " -NoNewline +
-                                        Write-Host "INFO     " -NoNewline -ForegroundColor Green +
-                                        Write-Host "Certains fichiers ont été copiés. Des fichiers supplémentaires étaient présents. Aucun échec n'a été rencontré." +
-                                        Add-Content -Path $LogFile -Value "$CheckTime     INFO     Certains fichiers ont été copiés. Des fichiers supplémentaires étaient présents. Aucun échec n'a été rencontré."+
                                         $PCSaved += 1                                         $PCSaved += 1
                                     }                                     }
                                 4                                 4
                                     {                                     {
-                                        $CheckTime = Get-Date -UFormat "%Y-%m-%d %H:%M:%S" +                                        Add-Log -Type "WARN" -Message "Certains fichiers ou répertoires incompatibles ont été détectés. Le ménage peut être nécessaire."
-                                        Write-Host "$CheckTime     " -NoNewline +
-                                        Write-Host "WARN     " -NoNewline -ForegroundColor Yellow +
-                                        Write-Host "Certains fichiers ou répertoires incompatibles ont été détectés. Le ménage peut être nécessaire." +
-                                        Add-Content -Path $LogFile -Value "$CheckTime     WARN     Certains fichiers ou répertoires incompatibles ont été détectés. Le ménage peut être nécessaire."+
                                         $PCWithWarn += 1                                         $PCWithWarn += 1
                                     }                                     }
                                 5                                 5
                                     {                                     {
-                                        $CheckTime = Get-Date -UFormat "%Y-%m-%d %H:%M:%S" +                                        Add-Log -Type "WARN" -Message "Certains fichiers ont été copiés. Certains fichiers étaient incompatibles. Aucun échec n'a été rencontré."
-                                        Write-Host "$CheckTime     " -NoNewline +
-                                        Write-Host "WARN     " -NoNewline -ForegroundColor Yellow +
-                                        Write-Host "Certains fichiers ont été copiés. Certains fichiers étaient incompatibles. Aucun échec n'a été rencontré." +
-                                        Add-Content -Path $LogFile -Value "$CheckTime     WARN     Certains fichiers ont été copiés. Certains fichiers étaient incompatibles. Aucun échec n'a été rencontré."+
                                         $PCWithWarn += 1                                         $PCWithWarn += 1
                                    }                                    }
                                 6                                 6
                                     {                                     {
-                                        $CheckTime = Get-Date -UFormat "%Y-%m-%d %H:%M:%S" +                                        Add-Log -Type "WARN" -Message "Il existe des fichiers supplémentaires et des fichiers incompatibles. Aucun fichier n'a été copié et aucun échec n'a été rencontré. Cela signifie que les fichiers existent déjà dans le répertoire de destination."
-                                        Write-Host "$CheckTime     " -NoNewline +
-                                        Write-Host "WARN     " -NoNewline -ForegroundColor Yellow +
-                                        Write-Host "Il existe des fichiers supplémentaires et des fichiers incompatibles. Aucun fichier n'a été copié et aucun échec n'a été rencontré. Cela signifie que les fichiers existent déjà dans le répertoire de destination." +
-                                        Add-Content -Path $LogFile -Value "$CheckTime     WARN     Il existe des fichiers supplémentaires et des fichiers incompatibles. Aucun fichier n'a été copié et aucun échec n'a été rencontré. Cela signifie que les fichiers existent déjà dans le répertoire de destination."+
                                         $PCWithWarn += 1                                         $PCWithWarn += 1
                                     }                                     }
                                 7                                 7
                                     {                                     {
-                                        $CheckTime = Get-Date -UFormat "%Y-%m-%d %H:%M:%S" +                                        Add-Log -Type "WARN" -Message "Les fichiers ont été copiés, une incompatibilité de fichier était présente et des fichiers supplémentaires étaient présents."
-                                        Write-Host "$CheckTime     " -NoNewline +
-                                        Write-Host "WARN     " -NoNewline -ForegroundColor Yellow +
-                                        Write-Host "Les fichiers ont été copiés, une incompatibilité de fichier était présente et des fichiers supplémentaires étaient présents." +
-                                        Add-Content -Path $LogFile -Value "$CheckTime     WARN     Les fichiers ont été copiés, une incompatibilité de fichier était présente et des fichiers supplémentaires étaient présents."+
                                         $PCWithWarn += 1                                         $PCWithWarn += 1
                                     }                                     }
                                 8                                 8
                                     {                                     {
-                                        $CheckTime = Get-Date -UFormat "%Y-%m-%d %H:%M:%S" +                                        Add-Log -Type "CRIT" -Message "Plusieurs fichiers n'ont pas été copiés."
-                                        Write-Host "$CheckTime     " -NoNewline +
-                                        Write-Host "CRIT     " -NoNewline -ForegroundColor Red +
-                                        Write-Host "Plusieurs fichiers n'ont pas été copiés." +
-                                        Add-Content -Path $LogFile -Value "$CheckTime     CRIT     Plusieurs fichiers n'ont pas été copiés."+
                                         $PCWithError += 1                                         $PCWithError += 1
                                     }                                     }
                                 9                                 9
                                     {                                     {
-                                        $CheckTime = Get-Date -UFormat "%Y-%m-%d %H:%M:%S" +                                        Add-Log -Type "WARN" -Message "Un ou plusieurs fichiers ont été copiés avec succès, mais certains fichiers ou répertoires ne peuvent pas être copiés."
-                                        Write-Host "$CheckTime     " -NoNewline +
-                                        Write-Host "WARN     " -NoNewline -ForegroundColor Yellow +
-                                        Write-Host "Un ou plusieurs fichiers ont été copiés avec succès, mais certains fichiers ou répertoires ne peuvent pas être copiés." +
-                                        Add-Content -Path $LogFile -Value "$CheckTime     WARN     Un ou plusieurs fichiers ont été copiés avec succès, mais certains fichiers ou répertoires ne peuvent pas être copiés."+
                                         $PCWithWarn += 1                                         $PCWithWarn += 1
                                     }                                     }
                                 10                                 10
                                     {                                     {
-                                        $CheckTime = Get-Date -UFormat "%Y-%m-%d %H:%M:%S" +                                        Add-Log -Type "CRIT" -Message "Plusieurs fichiers n'ont pas été copiés et des fichiers étrangers ont été trouvés sur la destination."
-                                        Write-Host "$CheckTime     " -NoNewline +
-                                        Write-Host "CRIT     " -NoNewline -ForegroundColor Red +
-                                        Write-Host "Plusieurs fichiers n'ont pas été copiés et des fichiers étrangers ont été trouvés sur la destination." +
-                                        Add-Content -Path $LogFile -Value "$CheckTime     CRIT     Plusieurs fichiers n'ont pas été copiéset des fichiers étrangers ont été trouvés sur la destination."+
                                         $PCWithError += 1                                         $PCWithError += 1
                                     }                                     }
                                 11                                 11
                                     {                                     {
-                                        $CheckTime = Get-Date -UFormat "%Y-%m-%d %H:%M:%S" +                                        Add-Log -Type "CRIT" -Message "Quelques fichiers ont été copiés mais plusieurs fichiers n'ont pas été copiés et des fichiers étrangers ont été trouvés sur la destination."
-                                        Write-Host "$CheckTime     " -NoNewline +
-                                        Write-Host "CRIT     " -NoNewline -ForegroundColor Red +
-                                        Write-Host "Quelques fichiers ont été copiés mais plusieurs fichiers n'ont pas été copiés et des fichiers étrangers ont été trouvés sur la destination." +
-                                        Add-Content -Path $LogFile -Value "$CheckTime     CRIT     Quelques fichiers ont été copiés mais plusieurs fichiers n'ont pas été copiés et des fichiers étrangers ont été trouvés sur la destination."+
                                         $PCWithError += 1                                         $PCWithError += 1
                                     }                                     }
                                 12                                 12
                                     {                                     {
-                                        $CheckTime = Get-Date -UFormat "%Y-%m-%d %H:%M:%S" +                                        Add-Log -Type "CRIT" -Message "Plusieurs fichiers n'ont pas été copiés et certains fichiers ou répertoires incompatibles ont été détectés."
-                                        Write-Host "$CheckTime     " -NoNewline +
-                                        Write-Host "CRIT     " -NoNewline -ForegroundColor Red +
-                                        Write-Host "Plusieurs fichiers n'ont pas été copiés et certains fichiers ou répertoires incompatibles ont été détectés." +
-                                        Add-Content -Path $LogFile -Value "$CheckTime     CRIT     Plusieurs fichiers n'ont pas été copiés et certains fichiers ou répertoires incompatibles ont été détectés."+
                                         $PCWithError += 1                                         $PCWithError += 1
                                     }                                     }
                                 13                                 13
                                     {                                     {
-                                        $CheckTime = Get-Date -UFormat "%Y-%m-%d %H:%M:%S" +                                        Add-Log -Type "CRIT" -Message "Quelques fichiers ont été copiés mais plusieurs fichiers n'ont pas été copiés et certains fichiers ou répertoires incompatibles ont été détectés."
-                                        Write-Host "$CheckTime     " -NoNewline +
-                                        Write-Host "CRIT     " -NoNewline -ForegroundColor Red +
-                                        Write-Host "Quelques fichiers ont été copiés mais plusieurs fichiers n'ont pas été copiés et certains fichiers ou répertoires incompatibles ont été détectés." +
-                                        Add-Content -Path $LogFile -Value "$CheckTime     CRIT     Quelques fichiers ont été copiés mais plusieurs fichiers n'ont pas été copiés et certains fichiers ou répertoires incompatibles ont été détectés."+
                                         $PCWithError += 1                                         $PCWithError += 1
                                     }                                     }
                                 14                                 14
                                     {                                     {
-                                        $CheckTime = Get-Date -UFormat "%Y-%m-%d %H:%M:%S" +                                        Add-Log -Type "CRIT" -Message "Plusieurs fichiers n'ont pas été copiés, des fichiers étrangers ont été trouvés sur la destination et certains fichiers ou répertoires incompatibles ont été détectés."
-                                        Write-Host "$CheckTime     " -NoNewline +
-                                        Write-Host "CRIT     " -NoNewline -ForegroundColor Red +
-                                        Write-Host "Plusieurs fichiers n'ont pas été copiés, des fichiers étrangers ont été trouvés sur la destination et certains fichiers ou répertoires incompatibles ont été détectés." +
-                                        Add-Content -Path $LogFile -Value "$CheckTime     CRIT     Plusieurs fichiers n'ont pas été copiés, des fichiers étrangers ont été trouvés sur la destination et certains fichiers ou répertoires incompatibles ont été détectés."+
                                         $PCWithError += 1                                         $PCWithError += 1
                                     }                                     }
                                 15                                 15
                                     {                                     {
-                                        $CheckTime = Get-Date -UFormat "%Y-%m-%d %H:%M:%S" +                                        Add-Log -Type "CRIT"  -Message "Quelques fichiers ont été copiés mais plusieurs fichiers n'ont pas été copiés, des fichiers étrangers ont été trouvés sur la destination et certains fichiers ou répertoires incompatibles ont été détectés."
-                                        Write-Host "$CheckTime     " -NoNewline +
-                                        Write-Host "CRIT     " -NoNewline -ForegroundColor Red +
-                                        Write-Host "Quelques fichiers ont été copiés mais plusieurs fichiers n'ont pas été copiés, des fichiers étrangers ont été trouvés sur la destination et certains fichiers ou répertoires incompatibles ont été détectés." +
-                                        Add-Content -Path $LogFile -Value "$CheckTime     CRIT     Quelques fichiers ont été copiés mais plusieurs fichiers n'ont pas été copiés, des fichiers étrangers ont été trouvés sur la destination et certains fichiers ou répertoires incompatibles ont été détectés."+
                                         $PCWithError += 1                                         $PCWithError += 1
                                     }                                     }
                                 16                                 16
                                     {                                     {
-                                        $CheckTime = Get-Date -UFormat "%Y-%m-%d %H:%M:%S" +                                        Add-Log -Type "CRIT" -Message "Erreur grave. Aucun fichier n'a été copié. Soit une erreur d'utilisation, soit une erreur due à des privilèges d'accès insuffisants sur les répertoires source ou de destination."
-                                        Write-Host "$CheckTime     " -NoNewline +
-                                        Write-Host "CRIT     " -NoNewline -ForegroundColor Red +
-                                        Write-Host "Erreur grave. Aucun fichier n'a été copié. Soit une erreur d'utilisation, soit une erreur due à des privilèges d'accès insuffisants sur les répertoires source ou de destination." +
-                                        Add-Content -Path $LogFile -Value "$CheckTime     CRIT     Erreur grave. Aucun fichier n'a été copié. Soit une erreur d'utilisation, soit une erreur due à des privilèges d'accès insuffisants sur les répertoires source ou de destination."+
                                         $PCWithError += 1                                         $PCWithError += 1
                                     }                                     }
Ligne 459: Ligne 435:
                                                 $ExitCode = "inconnu"                                                 $ExitCode = "inconnu"
                                             }                                             }
-                                        $CheckTime = Get-Date -UFormat "%Y-%m-%d %H:%M:%S" +                                        Add-Log -Type "UNKN" -Message "Erreur inconnue. Code d'erreur $ExitCode."
-                                        Write-Host "$CheckTime     " -NoNewline +
-                                        Write-Host "CRIT     " -NoNewline -ForegroundColor Red +
-                                        Write-Host "Erreur inconnue. Code d'erreur $ExitCode." +
-                                        Add-Content -Path $LogFile -Value "$CheckTime     CRIT     Erreur inconnue. Code d'erreur $ExitCode."+
                                         $PCWithError += 1                                         $PCWithError += 1
                                     }                                     }
  
                             }                             }
-                        $CheckTime = Get-Date -UFormat "%Y-%m-%d %H:%M:%S" +                        Add-Log -Type "INFO" -Message "Fin de la sauvegarde de $PC."
-                        Write-Host "$CheckTime     " -NoNewline +
-                        Write-Host "INFO     " -NoNewline -ForegroundColor Green +
-                        Write-Host "Fin de la sauvegarde de $PC." +
-                        Add-Content -Path $LogFile -Value "$CheckTime     INFO     Fin de la sauvegarde de $PC."+
                     }                     }
             }             }
Ligne 482: Ligne 450:
  
 # Fin de la sauvegarde # Fin de la sauvegarde
- +Add-Log -Line 
-$CheckTime = Get-Date -UFormat "%Y-%m-%d %H:%M:%S" +Add-Log -Type "INFO" -Message "Fin de la sauvegarde." 
-Write-Host "$CheckTime     " -NoNewline +Add-Log -Line 
-Write-Host "INFO     " -NoNewline -ForegroundColor Green +Add-Log -Type "INFO" -Message "Total des PC traités : $TotalPC." 
-Write-Host "Fin de la sauvegarde." +Add-Log -Type "INFO" -Message "Total des PC sauvegardés : $PCSaved."
-$CheckTime = Get-Date -UFormat "%Y-%m-%d %H:%M:%S" +
-Write-Host "$CheckTime     " -NoNewline +
-Write-Host "INFO     " -NoNewline -ForegroundColor Green +
-Write-Host "Total des PC traités : $TotalPC." +
-$CheckTime = Get-Date -UFormat "%Y-%m-%d %H:%M:%S" +
-Write-Host "$CheckTime     " -NoNewline +
-Write-Host "INFO     " -NoNewline -ForegroundColor Green +
-Write-Host "Total des PC sauvegardés : $PCSaved." +
-$CheckTime = Get-Date -UFormat "%Y-%m-%d %H:%M:%S" +
-Write-Host "$CheckTime     " -NoNewline+
 If ($PCOffline -gt 0) If ($PCOffline -gt 0)
     {     {
-        Write-Host "WARN     " -NoNewline -ForegroundColor Yellow +        Add-Log -Type "WARN" -Message "Total des PC hors-ligne : $PCOffline."
-        Write-Host "Total des PC hors-ligne : $PCOffline."+
     }     }
 Else Else
     {     {
-        Write-Host "INFO     " -NoNewline -ForegroundColor Green +        Add-Log -Type "INFO" -Message "Total des PC hors-ligne : $PCOffline."
-        Write-Host "Total des PC hors-ligne : $PCOffline."+
     }     }
-$CheckTime = Get-Date -UFormat "%Y-%m-%d %H:%M:%S" 
-Write-Host "$CheckTime     " -NoNewline 
 If ($PCWithWarn -gt 0) If ($PCWithWarn -gt 0)
     {     {
-        Write-Host "WARN     " -NoNewline -ForegroundColor Yellow +        Add-Log -Type "WARN" -Message "Total des sauvegardes avec des erreurs : $PCWithWarn."
-        Write-Host "Total des sauvegardes avec des erreurs : $PCWithWarn."+
     }     }
 Else Else
     {     {
-        Write-Host "INFO     " -NoNewline -ForegroundColor Green +        Add-Log -Type "INFO" -Message "Total des sauvegardes avec des erreurs : $PCWithWarn."
-        Write-Host "Total des sauvegardes avec des erreurs : $PCWithWarn."+
     }     }
-$CheckTime = Get-Date -UFormat "%Y-%m-%d %H:%M:%S" 
-Write-Host "$CheckTime     " -NoNewline 
 If ($PCWithError -gt 0) If ($PCWithError -gt 0)
     {     {
-        Write-Host "CRIT     " -NoNewline -ForegroundColor Red +        Add-Log -Type "CRIT" -Message "Total des sauvegardes en échec : $PCWithError."
-        Write-Host "Total des sauvegardes en échec : $PCWithError."+
     }     }
 Else Else
     {     {
-        Write-Host "INFO     " -NoNewline -ForegroundColor Green +        Add-Log -Type "INFO" -Message "Total des sauvegardes en échec : $PCWithError."
-        Write-Host "Total des sauvegardes en échec : $PCWithError."+
     }     }
-Add-Content -Path $LogFile -Value "----------------------------------------------------------" 
-Add-Content -Path $LogFile -Value "$CheckTime     INFO     Fin de la sauvegarde." 
-Add-Content -Path $LogFile -Value "$CheckTime     INFO     Total des PC traités : $TotalPC." 
-Add-Content -Path $LogFile -Value "$CheckTime     INFO     Total des PC sauvegardés : $PCSaved." 
-If ($PCOffline -gt 0) 
-    { 
-        Add-Content -Path $LogFile -Value "$CheckTime     WARN     Total des PC hors-ligne : $PCOffline." 
-    } 
-Else 
-    { 
-        Add-Content -Path $LogFile -Value "$CheckTime     INFO     Total des PC hors-ligne : $PCOffline." 
-    } 
-If ($PCWithWarn -gt 0) 
-    { 
-        Add-Content -Path $LogFile -Value "$CheckTime     WARN     Total des sauvegardes avec des erreurs : $PCWithWarn." 
-    } 
-Else 
-    { 
-        Add-Content -Path $LogFile -Value "$CheckTime     INFO     Total des sauvegardes avec des erreurs : $PCWithWarn." 
-    } 
-If ($PCWithError -gt 0) 
-    { 
-        Add-Content -Path $LogFile -Value "$CheckTime     CRIT     Total des sauvegardes en échec : $PCWithError." 
-    } 
-Else 
-    { 
-        Add-Content -Path $LogFile -Value "$CheckTime     INFO     Total des sauvegardes en échec : $PCWithError." 
-    } 
-Add-Content -Path $LogFile -Value "----------------------------------------------------------" 
  
 # Création d'un fichier de réponse pour un traitement par Nagios # Création d'un fichier de réponse pour un traitement par Nagios
-If ($n)+If ($Nagios)
     {     {
         # On vérifie la présence d'un ancien rapport et on le détruit         # On vérifie la présence d'un ancien rapport et on le détruit
-        $Report = "C:\Scripts\DailySave\SaveReport.dat" 
         If (Test-Path -Path $Report)         If (Test-Path -Path $Report)
             {             {
Ligne 585: Ligne 503:
  
         # Affichage des logs         # Affichage des logs
-        $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 fichier de réponse pour Nagios."
-        Write-Host "INFO     " -NoNewline -ForegroundColor Green +
-        Write-Host "Création du fichier de réponse pour Nagios." +
-        Add-Content -Path $LogFile -Value "----------------------------------------------------------" +
-        Add-Content -Path $LogFile -Value "$CheckTime     INFO     Création du fichier de réponse pour Nagios."+
     }     }
- +</sxh>
-</code>+
  
 ===== Script d'interprétation pour Nagios ===== ===== Script d'interprétation pour Nagios =====
  
-<code:ps>+<sxh powershell>
 ############################################################################## ##############################################################################
 #                                                                            # #                                                                            #
Ligne 614: Ligne 527:
 [int]$Critical = $Report.Critical [int]$Critical = $Report.Critical
  
-$Output = ""+$Output = ''
 $ExitCode = 3 $ExitCode = 3
  
Ligne 641: Ligne 554:
 exit $ExitCode exit $ExitCode
  
-</code>+</sxh>
  --- //[[nekan@shyrkasystem.com|Nicolas THOREZ]] 2019/02/19 21:43//  --- //[[nekan@shyrkasystem.com|Nicolas THOREZ]] 2019/02/19 21:43//
  
 ~~DISCUSSION~~ ~~DISCUSSION~~
  • dailysave.1553609811.txt.gz
  • Dernière modification : 2019/03/26 13:16
  • (modification externe)