This is the latest version of my PowerShell folder synchronisation script.
I’ve revisited this script a few times with new additions and modifications. If you want explanations about how the script was developed over time or how parts of the script work, have a look at the following posts;
Part 1 covers the basic script to sync two folders.
Part 2 adds the ability to specify exceptions that the sync process will skip.
In part 3 I added an XML configuration file so more complicated processes can be run.
I customised and validated parameter input (parameter sets) and added some proper error checking in part 4.
The script was updated to deal with non-standard paths and to output objects reporting on the changes it made in part 5.
In part 6 I add more use of literal paths (to prevent path errors) and generate statistics.
I add a filter option, turn strict-mode on and optimise the statistics generation in part 7 (plus fix a bug!).
In part 8 I’ve added some validity checks on the XML configuration file.
WhatIf functionality was added in Part 9 plus some corrections to make sure Filter and Exceptions worked correctly.
In Part 10 I added text file logging.
In Part 11 I fixed an odd bug where $Nulls were being added to arrays and added a -PassThru switch.
Part 12 covers some fixes for behaviour and adding the ability to support multiple target folders (so the source folders can be synced to multiple locations).
Part 13 added more control over what gets logged and how, added a timestamp to the log filename, creating a new log on each run, code cleanup and some bug- fixes.
A zipped version of the script is here;
Continue reading “PowerShell: Synchronizing a Folder (and Sub-Folders)”