This script will backup Lync 2013 core data and settings off all servers in the topology as per Technet article: http://technet.microsoft.com/en-us/library/hh202170.aspx
The script does the following:
- Backup the Central Management Store
- Backup the Location Information Service Data
- Backup the user data on each Front End pool
- Backup the Response Group configuration on each Front End pool
- Backup the Voice Configuration
It will create a new folder with a date stamp for each backup. It will also clean up backups older than x days. To use the script:
- Create a scheduled task on one of your Lync Front End servers to run the backup script, see here.
- Configure the Backup Path and Backup Retention values.
Note I have only tested this on Lync 2013 with two standard edition (pool pair) servers. I have not tested on enterprise pools. You will also need to do a separate SQL backup of Monitoring, Archiving and Persistent Chat databases as well as a file system backup of all File Stores. Use at your own risk.
Update 06-11-2013 – I have fixed the delete old backup directories as I noticed that was not working. Also tested on Lync 2013 Enterprise and seems to work OK :).
# Author: Created by Weakest Lync, www.WeakestLync.com
# Purpose: Script to backup Lync 2013
# Version: 1.1
# Changes: DATE - Change
# 08/07/2013 - Release 1.0
# 06/11/2013 - Release 1.1 - Fixed code that deletes old backup directories
Import-Module Lync
# Script Config
$BackupPath = "C:LyncBackupsBackups" # Backup Path
$BackupRetention = -14 # Number of days to keep old backups (Requires a "-", e.g. two weeks would be -14, 5 days would be -5)
# *** Start of script ***
# Delete old backup directories
Get-ChildItem $BackupPath |? {$_.psiscontainer -and $_.lastwritetime -le (get-date).adddays($BackupRetention)} |% {remove-item $_.FullName -recurse -force}
# Get date in day-month-year format and set backup path
$DateStamp = Get-Date -Format dd-MM-yy
$BackupPath = $BackupPath + "LyncBackup_" + $DateStamp +""
New-Item $BackupPath -type directory -force
# Backup the Lync Central Management Store
$CMSBackupFile = $BackupPath + "Lync-CMS-Config.zip"
Export-CsConfiguration -FileName $CMSBackupFile
# Backup Location Information Service data
$LISBackupFile = $BackupPath + "Lync-LIS-Config.zip"
Export-CsLisConfiguration -FileName $LISBackupFile
# Backup User Data (Lync 2013 servers only)
$UserServer = Get-CsService -UserServer | Where-Object {$_.version -eq 6}
ForEach ($Service in $UserServer) {
$UserDataBackupFile = $BackupPath + "Lync-User-Config_" + $($Service.PoolFqdn) + ".zip"
Export-CsUserData -PoolFQDN $($Service.PoolFqdn) -FileName $UserDataBackupFile
}
# Backup Response Group Configuration (Lync 2013 servers only)
$ApplicationServer = Get-CsService -ApplicationServer | Where-Object {$_.version -eq 6}
ForEach ($Service in $ApplicationServer) {
$RGSBackupFile = $BackupPath + "Lync-RGS-Config_" + $($Service.PoolFqdn) + ".zip"
Export-CsRgsConfiguration -Source ApplicationServer:$($Service.PoolFqdn) -FileName $RGSBackupFile
}
# Backup Voice Configuration
$BackupPath = $BackupPath + "Lync-Voice-Config"
New-Item $BackupPath -type directory -force
Get-CsDialPlan | Export-Clixml -path $BackupPathDialPlan.xml
Get-CsVoicePolicy | Export-Clixml -path $BackupPathVoicePolicy.xml
Get-CsVoiceRoute | Export-Clixml -path $BackupPathVoiceRoute.xml
Get-CsPstnUsage | Export-Clixml -path $BackupPathPSTNUsage.xml
Get-CsVoiceConfiguration | Export-Clixml -path $BackupPathVoiceConfiguration.xml
Get-CsTrunkConfiguration | Export-Clixml -path $BackupPathTrunkConfiguration.xml

Technical Architect at Symity
Hi Chris,
This looks like a great piece or work however, I am getting a unexpected token error in the expression for line 18 and 21?
Any ideas mate.
Thanks
Hi Matt,
Have you created the backup path folder? C:LyncBackupsBackups ?
I don’t think the script creates it.
Thanks
great script but mune keeps failing because i dont have response groups. any way to get around it and allow the script to finish??
Hi Mike you could try commenting out lines 41 to 46 with a “#”.
Pingback: Skype for Business 2015 – Automated Backup Script | ChrisHayward.co.uk