# Backup.Ps1 # Written 1-4-11 Daryl Sirota dsirota@syssrc.com $Farm="Dev" $Loc ="\\server\share" $emailFrom = "SharePoint2010-$farm@domain.com" $emailto = "SharePointBkupAlerts@domain.com" $smtpServer = "192.168.1.10" # ---- End of User Customizable Section ---- $evt=new-object System.diagnostics.EventLog("Application") $evt.Source="SharePoint Farm Backup" $infoevent=[System.diagnostics.EventLogEntryType]::Information $warnevent=[System.diagnostics.EventLogEntryType]::Warning $a=get-date $LogMessage="Backup started on $a `r`n" $fn= $loc + "\"+ $Farm + "\" + $a.DayOfWeek if (1 -eq 1) { Write-host "Adding PowerShell Snapins for SharePoint" add-pssnapin Microsoft.SharePoint.PowerShell write-host "Clearing backup directory" $BackupExist = test-path $fn if ($BackupExist -eq $true) {Remove-Item $fn -recurse} New-Item $fn -type Directory write-host "Performing backup" Backup-SPFarm -BackupMethod Full -Directory $fn } write-host "Testing for backup log" $Validtoc = test-path "$fn\spbrtoc.xml" if ($validtoc -eq $true) { # Review the Log write-host "log exists... reviewing" $doc = new-object "System.Xml.XmlDocument" $doc.Load("$fn\spbrtoc.xml") $Warn = $doc.SelectSingleNode("/SPBackupRestoreHistory/SPHistoryObject/SPWarningCount").InnerText $Err = $doc.SelectSingleNode("/SPBackupRestoreHistory/SPHistoryObject/SPErrorCount").InnerText $FinishTime = $doc.SelectSingleNode("/SPBackupRestoreHistory/SPHistoryObject/SPFinishTime").InnerText $Warn = [int]$Warn $err = [int]$err $LogMessage = $logMessage + "SharePoint Backup completed at $FinishTime with $warn warnings and $err errors`r`n See $fn for more details." } else { # Log doesn't exist! $LogMessage = $LogMessage + "SharePoint Backup completed with errors - no log to review!" $warn=0 $err=1 } $colItems = (Get-ChildItem $fn\spbr0000 | Measure-Object -property length -sum) $backupsize = "{0:N2}" -f ($colItems.sum / 1MB) + " MB" $a=get-date $logMessage=$logMessage + " `r`n Backup Folder Size: $backupsize `r`n Backup complete on $a" write-host $logMessage write-host "Sending email" $subject = "$farm SharePoint Backup Status ($Warn Warnings, $Err Errors)" $body = $LogMessage $smtp = new-object Net.Mail.SmtpClient($smtpServer) $smtp.Send($emailFrom, $emailTo, $subject, $body) write-host "Creating event log message" if ($Err -eq 0) {$evt.WriteEntry($LogMessage,$infoevent,0) } else {$evt.Writeentry($logMessage,$warnevent,$TotalErrCount) } write-host "Backup complete"