Microsoft Internet Information Services logo

IIS backup and restore

Backup and restore IIS 10 webserver configuration with appcmd.exe and PowerShell. If you are using Windows Server IIS as your web server software, it is important to make regular backups. Luckily, using appcmd or PowerShell, this is quite easy.

Creating backups ensures you have valid data to restore when something went wrong. For example, if you deleted a site that shouldn’t be deleted, you can restore the created IIS backup. It particularly comes in handy when you remove orphaned IIS web applications automatic in a PS script.

Did you know IIS automatically creates these backups when you change settings through IIS Manager? You can find them in %SystemDrive%\inetpub\history. This is part of the built-in IIS configuration history feature. Neat, right?! :-)

Using appcmd list backup you can view the available IIS configuration history feature:

PS C:\inetpub\history> appcmd list backup
BACKUP "CFGHISTORY_0000000104"
BACKUP "CFGHISTORY_0000000105"
BACKUP "CFGHISTORY_0000000106"
BACKUP "CFGHISTORY_0000000107"
BACKUP "CFGHISTORY_0000000108"
BACKUP "CFGHISTORY_0000000109"
BACKUP "CFGHISTORY_0000000110"
BACKUP "CFGHISTORY_0000000111"
BACKUP "CFGHISTORY_0000000112"
BACKUP "CFGHISTORY_0000000113"
BACKUP "CFGHISTORY_0000000114"Code language: PHP (php)

I can create an IIS backup using the add parameter:

PS C:\inetpub\history> appcmd add backup
BACKUP object "20191105T002034" addedCode language: JavaScript (javascript)

and list lists it

PS C:\inetpub\history> appcmd list backup
BACKUP "20191105T002034"
BACKUP "CFGHISTORY_0000000104"
[...]Code language: PHP (php)

The backups created by appcmd are saved in the directory C:\Windows\System32\inetsrv\backup\.

If needed, you can restore a backup easily in IIS with appcmd as well:

PS C:\inetpub\history> appcmd restore backup /backup.name:"20191105T002034" /stop:true
Restored configuration from backup "20191105T002034"Code language: JavaScript (javascript)

The command above restores the backup called “20191105T002034”, and by using /stop:true I forced IIS to stop before performing the restore.

Backup and restore IIS configuration with Powershell

If you want to use PowerShell to create an IIS configuration backup, you can use the Backup-WebConfiguration cmdlet. Backup-WebConfiguration is available in the webadministration module.

An easy example is:

PS C:\Users\janreilink> Backup-WebConfiguration -Name MyIISBackup

Name                                 Creation Date
----                                 -------------
MyIISBackup                          12/19/2019 12:00:00 AMCode language: JavaScript (javascript)

Backups are stored in the C:\Windows\System32\inetsrv\backup directory.

HTH :-)

Jan Reilink

Hi, my name is Jan. I am not a hacker, coder, developer or guru. I am merely an application manager / systems administrator, doing my daily thing at Embrace - The Human Cloud. In the past I worked for clidn and Vevida. With over 20 years of experience, my specialties include Windows Server, IIS, Linux (CentOS, Debian), security, PHP, websites & optimization. I blog at https://www.saotn.org.