24 gen 2014

Windows Server Backup: Inviare un report via email V2

02/11/2015: Attenzione! Update! 

In questa versione dello script sono stati corretti alcuni bug (anche quelli segnalati) ed implementato con nuovi parametri . Ecco le novità:


1. Corretto "Number of version" ora visualizza l'effettivo numero di copie presenti nel target anziché lo storico.

2. Vengono catturati gli ultimi 6 eventi. Questo permette di cambiare la schedulazione del backup secondo le proprie esigenze

3. Migliorato l'ouput HTML. Se il backup fallisce o lo spazio è inferiore ad una certa percentuale la riga viene colorata di rosso mentre se va a buon fine viene colorata di verde. In caso di warning avremo il colore giallo.

4. Aggiunto lo stato delle unità logiche dell'host. In caso in cui lo spazio libero scenda sotto una certa soglia la riga viene colorata in arancio

5.  Nel caso in cui lo spazio libero del target scenda sotto una certa soglia la riga viene colorata in viola

6. Aggiunta la lista delle VM e dei volumi inseriti nella policy di Backup.

In base ai test effettuati è risultato più opportuno schedulare lo script con Trigger "On Event" su 14, 561 come base.



Windows Server Backup con le release più recenti è in grado di eseguire il backup di un intero server (tutti i volumi), volumi selezionati, la stato del sistema (system state), cartelle o file specifici, creare una copia di backup che è possibile utilizzare per il ripristino bare metal.

È possibile ripristinare lo stato del sistema, alcune applicazioni, file, cartelle e volumi e addirittura virtual machine. In caso di disastro come ad esempio un guasto ai dischi rigidi è possibile eseguire un ripristino bare metal. Inoltre è possibile utilizzare Windows Server Backup per creare e gestire i backup per il computer locale o un computer remoto.

Sicuramente una feature molto utile e completa, peccato manchi un rapporto del backup ed il relativo invio via e-mail  come siamo abituati ad avere sui software di terze parti.

Al fine di far fronte a questa lacuna e dato che nelle piccole PMI molto probabilmente non andremo ad acquistare un complesso e costoso software di backup, ho cercato di progettare un report html sfruttando il Framework, PowerShell, Linq, XDocument e xml. Tutto in un unico script PowerShell.


Lo script cattura una serie di eventi relativi alle operazioni di Windows Backup, legge lo stato del disco di destinazione (target) e ci informa sul numero delle versioni presenti sul supporto e se ci sono eventuali procedure in corso. Se il Backup dovesse fallire la riga nella tabella verrà colorata con uno sfondo rosso in modo da essere notata immediatamente. Lo stesso sfondo verrà applicato alla tabella del disco destinazione (target) nel caso in cui lo spazio disponibile scenda al di sotto del 10%. Una volta catturate le informazioni viene costruito un report html ed inviato via e-email ad uno o più destinatari.

Vediamo come poter personalizzare lo script partendo dall'oggetto dell'e-mail che viene inviata.

Per prima cosa inserite il nome del vostro cliente nella variabile $Customer. (Riga 22) L'oggetto dell'e-mail recapitata sarà simile a questo: ## Backup report from: HV1 - iQuad ##

Alla riga 30 la sezione dove viene specificato il path e il nome del file. In questo caso, dato che ho usato la variabile di sistema  $env:public il report html si troverà in "C:\Users\Public"

Alla riga 38-44 viene settata temporaneamente la localizzazione en-US. Questa operazione si rende necessaria soltanto su Windows Server 2012 a causa di un bug sul comando Get-Winevent. Non è necessario su Windows Server 2012 R2.

Dalla riga 158  alla riga 230 si trova il codice HTML e il foglio di stile (CSS) tramite il quale è possibile personalizzare i caratteri, colori e larghezza delle tabelle.

Dalla riga 276  troviamo le variabili dedicate alla gestione e all'invio del report via email.