First off I will admit that this is not ground breaking in terms of no one has done it before. I’ve ummmed and arrrrghhed about releasing this for some time as the backup script by Lasse Wedo is amazing and will do a great job. However, I believe that my script tool brings some added value to the table and offers something a little different. For this reason I have decided it is worth a release to the community. Overview The backup tool is a PowerShell script that has several modes of backup, ranging from a full Skype for Business backup to modular backups for backing up policies, or configurations, or topology etc. This script can be run as a scheduled task or ad-hoc using PowerShell. It can be run from a management workstation with the Skype for Business management tools installed or from a front end server. Each backup process has been written as a separate function that allows you to be selective in what you want to backup. When run, the script will create the required root and log directory on the machine using the default path C:\sfb_backup. This can be changed by editing the first few lines of the script.


• Back up Topology

• Back up CMS Database

• Back up Persistent Chat Database

• Back up User Data

• Back up File Share

• Back up All Policies

• Back up All Configuration

• Back up Response Groups

• Send Email to admin on completion (Full Backup Only)

• Compress Backup file to ZIP (Full Backup Only)

• Full Logging capabilities

• Progress indicator Requirements

The server or workstation you are running this script on, must have the Skype for Business Management Tools installed. The PowerShell Execution Security should be set to RemoteSigned, or Unrestricted mode

Set-ExecutionPolicy Unrestricted


10/03/2015 Resolved minor bugs

20/01/2016 Added functionality to backup Shared Line Appearance

09/03/2015 Added functionality to backup Address Book Normalization Rules


First, open the script and set your backup directory by changing the $backupfolder variable value. Once set scroll down to the Routines section marked in the script as ## ROUTINES ##. Uncomment the commandlet(s) you want to execute and save the script. Now you can execute the script using scheduled tasks or by executing the script directly.

03/11/2015 - Fixed compatibility issue with configuration imported from Lync Optimizer website

Please visit  for more information, screenshots and instructions