Powershell – verifier les backups sur Exchange 2013

Permet de verifier les backups sur Exchange 2013
param($action) # paramètre à scpécifier lors de l'appel

$Run_Path=Split-Path -parent $MyInvocation.MyCommand.Definition
$ErrorActionPreference = "Stop"
$resultlog="$Run_Path\Checkbackup.log"

<# Log
------------------------------------------------
Usage : Utilisé pour logger
$data : Informations à logger
$new : A préciser pour démarrer un nouveau log.
#>
function Log ($data,$new) {
if ($new){write-output "$data" | Out-File $resultlog }
else{write-output "$data" | Out-File $resultlog -Append }
}

Log "################# START ###############" $true
try{add-pssnapin Microsoft.Exchange.Management.PowerShell.SnapIn}catch{}

$global:ErrorCopy=@();$global:ErrorFull=@();$global:ErrorIncr=@()

$listdb=Get-MailboxDatabase -Status | select name, Server, LastFullBackup, LastIncrementalBackup, LastCopyBackup
foreach ($db in $listdb){
#Log $db
if(! $db.Name.Contains("Mailbox")){
switch ($action) {
"COPY" {
if (! $db.LastCopyBackup){$global:ErrorIncr+=$db.Name}else{
if (($(Get-Date) - $db.LastCopyBackup).TotalMinutes -gt 35){$global:ErrorCopy+=$db.Name}
}
}
"FULL" {
if (! $db.LastFullBackup){$global:ErrorIncr+=$db.Name}else{
if (($(Get-Date) - $db.LastFullBackup).TotalDays -gt 7){$global:ErrorFull+=$db.Name}
}
}
"INC" {
if (! $db.LastIncrementalBackup){
if (! $db.LastFullBackup){$global:ErrorIncr+=$db.Name}
elseif(($(Get-Date) - $db.LastFullBackup).TotalDays -gt 1){$global:ErrorIncr+=$db.Name}
}
elseif(($(Get-Date) - $db.LastIncrementalBackup).TotalDays -gt 1){
if (! $db.LastFullBackup){$global:ErrorIncr+=$db.Name}
elseif(($(Get-Date) - $db.LastFullBackup).TotalDays -gt 1){$global:ErrorIncr+=$db.Name}
}
}
}
}
}

if ($ErrorCopy.count -gt 0){
$string="Error on "
$ErrorCopy=$ErrorCopy | sort
foreach ($dbname in $ErrorCopy){$string+=$dbname+","}
$string+=" during CopyBackup(Appsync)"
Log $string;$string;exit 2
}
if ($ErrorFull.count -gt 0){
$string="Error on "
$ErrorFull=$ErrorFull | sort
foreach ($dbname in $ErrorFull){$string+=$dbname+","}
$string+=" during FullBackup(TSM)"
Log $string;$string;exit 2
}
if ($ErrorIncr.count -gt 0){
$string="Error on "
$ErrorIncr=$ErrorIncr | sort
foreach ($dbname in $ErrorIncr){$string+=$dbname+","}
$string+=" during IncBackup(TSM)"
Log $string;$string;exit 2
}
Log "################## END ####################"

 

Taggé , , .Mettre en favori le Permaliens.

Les commentaires sont fermés.