Powershell Backup Script

Needed a backup script which i can run from the powershell or with use of the Windows schedular.

I’ve created some checks on folders and succesrate. The scripts also can email you when backup is succesful/failed.

If you have any suggestions please let me know!

##################################### Backup Script ###############################################
## Name: Backup_Script.ps1                               
## Creator: Erwin Bierens                     
## CreationDate: 10-02-2017                               
## LastModified: 10-02-2017                                
## Version: 1.0
## Website: https://erwinbierens.com/powershell-backup-script
## 
## Description: Copies the Backupdir to the Destination folder
## Deviations will be written to logfile
## Only Change Variables in Variables Section  
##
## Thx to the followingg scripts i created this one, source information
## http://www.krist-online.nl/index.php/scripts/14-robocopy-powershell-wekelijks-backup-schema
## https://blog.sat.iit.edu/2011/11/backup-script-using-robocopy-and-powershell/
## 
##
## Example: powershell -command "& 'c:\temp\Backup_Script.ps1' "
## 
####################################################################################################

####################
##Variables Section
####################

## Source directory
$source="C:\Temp\Backup\A"
 
## Destination Directory
## you can also use the network path "\\server\share"
$destination="C:\Temp\Backup\B\"
 
## Destination Log File
$logfile="c:\temp\backup\logbestand.txt"
 
## BackupRapport is being used to check if backup is succesfull
$backupReport="c:\temp\logfile_backup.txt"
 
## Make changes for email reports
$EmailFrom="backupscript@bierens.it"
$EmailTo="erwin@bierens.it"
$SMTPServer="192.168.178.32"

## Email Subjects and Body info
$successEmailSubject="Backup Succesfull"
$successEmailBody="The Backup is succesfull"
$failEmailSubject="Backup Failed"
$failEmailBody="The backup is failed, please check the attached log file"

## =========================================================
## =========== DONT CHANGE PARAMETERS BELOW ================
## =========================================================

## Check if destination exists, if no create folder
if (!(Test-Path -path $destination))
{
New-Item $destination -type directory
}
 
## robocopy command
## /XO Excludes older files.
## /COPY:DATSO Specifies the file properties to be copied. D Data, A Attributes, T Time stamps, S NTFS access control list (ACL), O Owner information
## /E /Purge Mirrors a directory tree
## /R:10 Specifies the number of retries on failed copies. The default value of N is 1,000,000 (one million retries)
## /log: Writes the status output to the log file (overwrites the existing log file). use /log+: for appending 
## /NP Specifies that the progress of the copying operation (the number of files or directories copied so far) will not be displayed.
robocopy $source $destination *.* /XO /COPY:DATSO /E /purge /R:10 /log:$logfile /NP
 
## Check variables to compare source and destination
$check_source = Dir $source
$check_destination = Dir $destination
 
## Compare source and destination, write deviations to backup report 
Compare-Object $check_source $check_destination -PassThru > $backupReport
 
## Create and send email after succesfull backup
function sendSuccessEmail{
send-mailmessage -from $EmailFrom -to $EmailTo -subject $successEmailSubject -body $successEmailBody -Attachments "$logfile" -priority High -dno onSuccess, onFailure -smtpServer $SMTPServer
}
 
## Create and send email after unsuccesfull backup
function sendFailEmail{
send-mailmessage -from $EmailFrom -to $EmailTo -subject $failEmailSubject -body $failEmailBody -Attachments "$logfile" -priority High -dno onSuccess, onFailure -smtpServer $SMTPServer
}
 
## If backupreport is empty, backup is succesfull send email
$File = Get-ChildItem $backupReport
if ($File.Length -eq 0) {sendSuccessEmail}
 
## If backup report is not empty, something is going wrong. Email will be send
$File = Get-ChildItem $backupReport
if ($File.Length -gt 0) {sendFailEmail}
#EOF
Continue Reading

Installing SharePoint 2013 Foundation

Let’s take a small adventure into the world of free SharePoint. Yes, Completely free!

SharePoint Foundation 2013 is technically free (Exept your windows license ofcourse) and can do a whole lot for you without needing to spend significant amounts of money on Server editions of SharePoint.

Continue Reading

Forest Preparation Skype for Business

While installing a new Skype for Business enviroment i walked in to a error when prepping the forest. After searching a while on TechNet and other forums i found out that the schema’s couldn’t run from the Skype for Business Front end server.

The execution failed the parameter is incorrect 00000057

Error: An error occurred: “Microsoft.Rtc.Management.ADConnect.ADOperationException” “Active Directory operation failed on “masterdc.skypedev.nl”. You cannot retry this operation: “The parameter is incorrect 00000057: LdapErr: DSID-0C090D87, comment: Error in attribute conversion operation, data 0, v2580″”

Forest Prep Error

 

Before running these commands, please copy the files: “ExternalSchema.ldf”; “ServerSchema.ldf”; “BackCompatSchema.ldf” and “VersionSchema.ldf” from “C:\Program Files\Skype for Business Server 2015\Deployment\Setup” to a folder created in the domain controller called as “schema” created in the root for the Local Disk “C”. TechNet Article about ldifde

Make sure you run the commands in the exact same order.

ldifde -i -v -k -s masterDC.skypedev.nl -f C:\schema\ExternalSchema.ldf -c DC=x "DC=skypedev,DC=nl" -j C:\schemas

ldifde -i -v -k -s masterDC.skypedev.nl -f  C:\schema\ServerSchema.ldf -c DC=x "DC=skypedev,DC=nl" -j C:\schemas

ldifde -i -v -k -s masterDC.skypedev.nl -f  C:\schema\BackCompatSchema.ldf -c DC=x "DC=skypedev,DC=nl" -j C:\schemas

ldifde -i -v -k -s masterDC.skypedev.nl -f  C:\schema\VersionSchema.ldf -c DC=x "DC=skypedev,DC=nl" -j C:\schemas

#EOF

Continue Reading