Windows server 2012 — Backup del SystemState tramite PowerShell

Lo script riportato esegue il backup del system state su un discco VHDx raggiungibile tramite share

i passi seguiti per il salvataggio sono i seguenti

  • montaggio del disco virtuale, creato in precedenza, a cui è stata assegnata l’unita Z:
  • esecuzione della copia del systemstate mediante Windows Server Backup
  • verifica dello stato di esecuzione della copia tramite lo stato di ritorno dello script
  • invio di una mail con l’indicazione dello stato di esecuzione della procedura
  • smontaggio del disco

Una volta terminato il processo, il file VHDX contenente il backup del System State può essere copiato e salvato per  sicurezza

#4 ottobre 2013 R.Massa
#Esecuzione backup systemstate ed invio mail di notifica sullo stato finale del processo

#funzione per invio Mail viene passato il parametro contenente la stringa del corpo messaggio
function SendMail ($a)
{

    # Costanti
#Server Mail
     $smtpServer = “1.2.3.4”

  #Creazione dell’oggetto MAIl
     $MailMessage = new-object Net.Mail.MailMessage

   #Crezione dell’oggetto MAIL Server
$smtp = new-object Net.Mail.SmtpClient($smtpServer)

    #Composizione della Mail
$MailMessage.From =
mittente@dominio.it
$MailMessage.ReplyTo =
mittente@dominio.it
$MailMessage.To.Add(
destinatario1@dominio.it,destinatario2@dominio.it)
$MailMessage.subject = “Backup SystemState”
$MailMessage.body = $a

    #invio del messaggio
$smtp.Send($MailMessage)

}

# mount del disco VHDX dedicato alla copia del Systemstate
Mount-DiskImage
\SRV01backupsystemstatesrv02.vhdx
# avvio del backup systemstate su Z:
wbadmin start systemstatebackup -backupTarget:z: -quiet
# Dismount del volume utilizzato dal backup
disMount-DiskImage
\SRV01backupsystemstatesrv02.vhdx
#
#echo $LastExitCode

#test della condizione in $LASTEXITCODE “0” exit normale “-2” con errori
#se 0 invio mail con messaggio OK altrimenti messaggio di attenzione
if ($LastExitCode -eq “0” ) {
$CorpoMail = “Backup systemstate eseguito correttamente ”
SendMail $CorpoMail
}
else {
$CorpoMail = “Backup systemstate eseguito con errori controllare ”
SendMail $CorpoMail
exit
}