A PowerShell script designed to create and restore snapshots on Windows computers.
This script is intended to run from a USB stick and is portable. The intent is to create a snapshot on one computer and restore the snapshot on another computer with the Start wizard.lnk
shortcut.
Snapshot data is stored by default on the USB stick in the folder Snapshots. Preconfigured configuration files, for fast and easy execution with the Select configuration.lnk
shortcut, are stored in the folder Configurations.
Find a full list of supported snapshot items in the argument Snapshot
of the main script. Summary of the most used snapshot items:
- Files or folders to copy
- Folders to create
- Regional settings
- Registry keys
- SMB shares and their SMB share and NTFS permissions
- User accounts
- User groups
- Windows firewall rules
- Windows scheduled tasks to create
- Network card renaming and network profile
- Custom PowerShell scripts to run before or after execution
- ...
A SnapshotFolder is a single folder within the folder Snapshots that contains the state of a machine at the time a backup was made. This folder can contain multiple child folders, one for each selected snapshot item during the backup. Each of these child folders contain configuration files that can be edited.
Example:
├── Snapshots
│ ├── Kiosk PC app X (`SnapshotFolder`)
│ │ ├── Software
│ │ ├── Software.json (`file to edit`)
│ ├── Kiosk PC app Y (`SnapshotFolder`)
│ │ ├── NtpTimeServers
│ │ ├── ntpServers.json (`file to edit`)
│ │ ├── RegionalSettings
│ │ ├── regionalSettings.json (`file to edit`)
│ │ ├── RegistryKeys
│ │ ├── registryKeys.json (`file to edit`)
This is the preferred way to restore or backup a computer.
The shortcut Start wizard.lnk
, in the root folder of the script, starts a GUI that will guide you through the process. It will ask questions like: Would you like to create or restore a backup? What would you like to backup or restore? Where do we need to store the backup files? ..
The wizard comes preconfigured with default settings and best practices. It creates the required .JSON file that is used to execute the main script with the correct arguments. No manual file editing is required when using this method, except for the backup/restore files within the SnapshotFolder.
This method is only available for experienced users.
The folder Configurations contains preconfigured .JSON files that contain the required arguments to execute the main script. These files are only used by the shortcut Select configuration.lnk
, which avoids all the extra questions asked by the Start wizard.lnk
launcher.
There are 2 ways to create a custom configuration file for use with the Select configuration.lnk
launcher:
- Create a backup with the
Start wizard.lnk
and copy the generated .JSON file to the folder Configurations - Copy the example .JSON file in the folder Configurations and save it with a new name
Edit the custom configuration file. In case you are creating a restore configuration file make sure that Action
is set to RestoreBackup
and only the required Snapshot
items are set to true
.
If you want to restore a backup, verify that all data in the SnapshotFolder is correct.
Click on the shortcut Select configuration.lnk
, in the root folder, and select the custom .JSON file in the window that pops-up. The main script will now be executed with the arguments provided in the selected .JSON custom configuration file.
-
It is encouraged to modify the exported files in the SnapshotFolder to contain only the data you really need. This will speed up the process and reduces the risks. Use a text file editor like Notepad++ or VS Code to edit the exported files. Simply remove the data you don't need or update data to your liking. Less is more
-
When creating a snapshot it is advised to use a descriptive name to identify the correct SnapshotFolder (ex. 'Kiosk PC config for application X'). This allows you to easily recognize the correct backup folder months later when a restore is needed. Know what you're doing
-
Exporting all data on a computer would take a long time. So some snapshot items like
CreateFolders
,RegistryKeys
, Software only create example files that need to be edited before starting the restore backup process.