diff --git a/Exchange/status-backup.ps1 b/Exchange/status-backup.ps1 new file mode 100644 index 0000000..9af6575 --- /dev/null +++ b/Exchange/status-backup.ps1 @@ -0,0 +1,110 @@ + +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 ####################" \ No newline at end of file