System Center Data Protection Manager

Check Last Backup, Script in Version 1.1 verfügbar

Es gibt mal wieder ein neues PowerShell Script für SCDPM. Aufgrund vieler Anfragen von Kollegen und aus der Community, gibt es in diesem Skript viele Neuerungen.

Erste große Änderung, man kann das Script nun mittels Parametern aufrufen, somit ist es möglich das Script als Task laufen zu lassen.

Zusätzlich kann das Logfile per Mail versendet werden, danach gab’s noch einige Anpassungen in der Logik und bei der Abfrage der DS.

 

Das Script

Zu Beginn die neuen Parameter, was euch die Möglichkeit bietet das Skript per Task, oder auch in der ISE auszuführen.

#Parameter
Param(
   [Parameter(Mandatory=$false)][string]$DPMServerName,
   [Parameter(Mandatory=$false)][string]$Spandays,
   [Parameter(Mandatory=$false)][switch]$Checkonly,
   [Parameter(Mandatory=$false)][switch]$LogPublic,
   [Parameter(Mandatory=$false)][switch]$SendLogFile,
   [Parameter(Mandatory=$false)][string]$SMTPServer,
   [Parameter(Mandatory=$false)][string]$SMTPSender,
   [Parameter(Mandatory=$false)][string]$SMTPTo
   
)
#Import Modules
Import-Module dataprotectionmanager

#Testing
#$LogPublic=$true
#$Checkonly=$true
#$SendLogFile=$True
#$SMTPServer="ExchangeServer01"
#$SMTPSender="DPM_Alerts@techguy.at"
#$SMTPTo="michael@techguy.at"

#Standard Parameters if empty
if (!($DPMServerName)){$DPMServerName=$env:COMPUTERNAME}
if (!($Spandays)){$Spandays="10"}

Danach folgen ein paar Einstellungen und unser Funktionen

$Log=@()

Get-Datasource -DPMServerName  $DPMServerName | Out-Null
$DS=Get-Datasource -DPMServerName  $DPMServerName | where {$_.CurrentProtectionState -eq "Protected"}
$Date=Get-Date -format d ((Get-Date).adddays(-$Spandays))

$Footer="
`r`n
`r`n
Script powered by www.techguy.at
Find more Information at http://www.techguy.at/tag/checklastbackups/
"

#Functions
Function Write-Log ($Text) {
        # Write Log to PS if $LogPublic is Yes
    if ($LogPublic) {
        if ($Text -match "INFO:") {
            Write-Host $Text -ForegroundColor Green
        } elseif ($Text -match "WARNING:") {
            Write-Host $Text -ForegroundColor Yellow
        } elseif ($Text -match "ERROR:") {
            Write-Host $Text -ForegroundColor Red
        } else {
            Write-Host $Text
        }
    }
    return $Text
    
}

Function Query-DSJobs ($DS) {
    # Query DS if there is an active Job
            
    if ((Get-DPMJob -Datasource $DS -Status InProgress).count -ne 0) {
        $Log+=Write-Log "WARNING: There is a running Job for DS:  $DS.Name"
        return $False
    } else {
        $Log+=Write-Log "INFO: No running Jobs for DS:  $DS.Name"
        return $True
    }
}

Zum Schluss wie gehabt die Magie, sprich der Ablauf unseres Scriptes.

#Magic
Foreach ($Entry in $DS) {
    $RP=Get-RecoveryPoint -Datasource $Entry | Sort-Object BackupTime -Descending
    if ($RP.count -gt 0) {
        $CompareDate=Get-date($RP[0].BackupTime) -format d
        $Span=New-TimeSpan -Start $CompareDate -End $Date
            if ($Span.Days -gt 0) {
                $Log+=Write-Log "Error: $CompareDate, $Date, $Entry"
                if ($Entry.State -eq "Invalid") {
                if (!($Checkonly)) {if (Query-DSJobs $Entry)  {Start-DPMDatasourceConsistencyCheck -Datasource $Entry}}
                } else {
                 if (!($Checkonly)) {if (Query-DSJobs $Entry) {New-RecoveryPoint -Datasource $Entry -Disk -BackupType expressfull –WithDataIntegrityCheck -Verbose}}
                }
            } else {
                $Log+=Write-Log "Info: $CompareDate, $Date, $Entry"
            }
    } elseif ($RP.count -eq 0) {
    $Log+=Write-Log "Error: no Recoverpoint $Entry"
     if (!($Checkonly)) {if (Query-DSJobs $Entry) {Start-DPMDatasourceConsistencyCheck -Datasource $Entry}}
    }
}


if ($SendLogfile) 
{
    $Mailtext=$Log -join "`r`n"  
    $Mailtext=$Mailtext+ $Footer
    Send-MailMessage -From $SMTPSender -SmtpServer $SMTPServer -To $SMTPTo -Subject "RP Status from $DPMServerName" -Body $Mailtext  
}

Screenshots

Check Last SCDPM Backup Script | techguy.at

Check Last SCDPM Backup Script | techguy.at

TechNet Gallery Download

Download auf der TechNet Gallery: https://gallery.technet.microsoft.com/Check-DPM-for-last-96f12c86

Solltet ihr Fragen, Wünsche oder Probleme mit dem Script haben, schreibt mir ein Kommentar

Alle meine TechNet Gallery Downloads findet ihr hier: 1jrYQoA

BITTE BEWERTET MEINE DOWNLOADS IN DER TECHNET GALLERY UND SAGT MIR WAS IHR EUCH VON DER NÄCHSTEN VERSION WÜNSCHT.

Michael Seidl aka Techguy

Leave a Comment

Your email address will not be published. Required fields are marked *

*

%d bloggers like this: