J3qx

information archive

Windows-backup_JOB-1.0.ps1

Posted by j3qx на Ноябрь 26, 2016

#requires -version 2.0

<#
Require Windows Server Backup PowerShell module (installed with service wsb on server features)

Manage WSB network backups:
— support of rotation via $MaxBackup variable
— support of mail notification (function EmailNotification())

Author: Kulchitsky Roman
Created: 18/12/2013
#>

#Initialize WSB cmdlets
if ( (Get-PSSnapin -Name Windows.ServerBackup -ErrorAction SilentlyContinue) -eq $null )
{
Add-PsSnapin Windows.ServerBackup
}

#——————————————————————
#Variables
#——————————————————————

#Files server
$Nas = «\\pd-fs-03″

#Root folder
$HomeBkpDir = ($Nas+»\pd-dc-01v»)

#Backup folder
$Filename = Get-Date -Format MMddyyyy_hhmmss

#Number of backup to retain (value «0» disable rotation)
$MaxBackup = 0

#List uncritical volumes
$Volumes = Get-WBVolume -AllVolumes | Where-Object { $_.Property -notlike «Critical*» }

#——————————————————————
#Function to compare the number of folders to retain with
#$MaxBackup (No called if $MaxBackup equals 0)
#——————————————————————
function Rotation()
{
#List all backup folders
$Backups = @(Get-ChildItem -Path $HomeBkpDir\*)

#Number of backups folders
$NbrBackups = $Backups.count

$i = 0

#Delete oldest backup folders
while ($NbrBackups -ge $MaxBackup)
{
$Backups[$i] | Remove-Item -Force -Recurse -Confirm:$false
$NbrBackups -= 1
$i++
}
}

#——————————————————————
#Function to send email notification
#——————————————————————
function EmailNotification()
{
#Sender email
$Sender = «ps-backup@example.ru»

#Receipt email
$Receipt = «operational.admin@example.ru»

#SMTP Server
$Server = «10.20.20.36»

#Mail subject
$Object = $env:computername+»: Backup report of «+(Get-Date)

#Mail content
$Content = Get-WBJob -Previous 1 | ConvertTo-Html -As List | Out-String

$SMTPclient = new-object System.Net.Mail.SmtpClient $Server

#Specify SMTP port if needed
#$SMTPClient.port = 587

#Activate SSL if needed
#$SMTPclient.EnableSsl = $true

#Specify email account credentials if needed
#$SMTPAuthUsername = «login»
#$SMTPAuthPassword = «password»
#$SMTPClient.Credentials = New-Object System.Net.NetworkCredential($SMTPAuthUsername, $SMTPAuthPassword)

$Message = new-object System.Net.Mail.MailMessage $Sender, $Receipt, $Object, $Content
$Message.IsBodyHtml = $true;
$SMTPclient.Send($Message)
}

#——————————————————————
#Main
#——————————————————————

#Execute rotation if enabled
if ($MaxBackup -ne 0)
{
Rotation
}

#Backup folder creation
New-Item ($HomeBkpDir+»\»+$Filename) -Type Directory | Out-Null

$WBPolicy = New-WBPolicy

#Enable BareMetal functionnality (system state included)
Add-WBBareMetalRecovery -Policy $WBPolicy | Out-Null

#Add backup target
$BackupLocation = New-WBBackupTarget -network ($HomeBkpDir+»\»+$Filename)
Add-WBBackupTarget -Policy $WBPolicy -Target $BackupLocation -force | Out-Null

#Add uncritical volumes
if ($Volumes -ne $null)
{
Add-WBVolume -Policy $WBPolicy -Volume $Volumes | Out-null
}

$WBPolicy | Out-Null
Start-WBBackup -Policy $WBPolicy

#Call email notification function
EmailNotification

Реклама

Добавить комментарий

Заполните поля или щелкните по значку, чтобы оставить свой комментарий:

Логотип WordPress.com

Для комментария используется ваша учётная запись WordPress.com. Выход / Изменить )

Фотография Twitter

Для комментария используется ваша учётная запись Twitter. Выход / Изменить )

Фотография Facebook

Для комментария используется ваша учётная запись Facebook. Выход / Изменить )

Google+ photo

Для комментария используется ваша учётная запись Google+. Выход / Изменить )

Connecting to %s

 
%d такие блоггеры, как: