Introduction to the PowerShell Deployment Toolkit

Author by Lee Berg

I wanted to share a great utility that has been designed from the ground up to quickly and easily automate deployments of System Center 2012 R2; Including: virtual server provisioning and OS installation, creation of Active Directory,  prerequisite installation, installation of System Center Components, SQL Installation, and some post-setup integration. The PowerShell Deployment Toolkit is a free utility from Rob Willis at Microsoft. This utility is very much alive and being actively developed. (Last updated early August 2013 - at the time of this posting.) I would consider this utility to be a must-have for those with a System Center "Home Lab" or for organizations who would like to test System Center components in a test environment. If you are like me, you may be tired of hunting for and downloading the dozens of ISOs, Installers, Hotfixes, Cumulative Updates, Prerequisites, etc... and then spending hours clicking dialogues to setup and configure each and every component. With the PowerShell Deployment Toolkit, after some configuration, you can deploy the entire System Center Suite with a few keystrokes. There is no limitation for using these scripts at Home / Work / Clients / etc, you are free to use the utility where and how you see fit, but that is a decision you will have to make for yourself!   Components: It is very surprising to me, that as much as this tool can do, It is actually just a few PowerShell scripts and XML files: Workflow.xml :  This enormous XML file is the brains of the operation and is over 25,000 lines in length. It holds all the logic behind sequencing the installation of all System Center Components. You DO NOT need to make ANY changes to this configuration file. Variable.xml : This file is where you will be spending most of your time. This file contains many variables where you will have to specify Accounts, Server Names, Components, Roles, Virtual Machine Configurations, and more. You will have to lay out the exact environment you desire in this configuration file. The other components of the PowerShell Deployment Toolkit reference this configuration file to accomplish the various tasks. Installer.ps1 : This is the PowerShell script that you run to actually perform the deployment. It should be run from a system that is not a target system for the deployment itself – it can even be run from a workstation. Think of this as your "launchpad" Downloader.ps1 : This script is used to download all components required for the deployment of all System Center components. This includes operating system images, installers, hotfixes, cumulative updates, and the various prerequisite file. TIP: Even if you don't want to use the PowerShell Deployment Toolkit to deploy System Center, you can use the Downloader component to maintain an up-to-date repository for all your various System Center related downloads, Very Handy! VMCreator.ps1 - This script is utilizes Hyper-V to create as many virtual machines as you specify in the configuration file, it can even domain join these machines.   Required Reading: Rob Willis has a few posts out on TechNet will lots of great info on how to start using the PowerShell deployment toolkit. There is not an "index" of these assorted posts so it can be a bit hard to track these down! Here's a handy guide to that should help get you started! Introduction to PowerShell Deployment Toolkit Deployment–The PDT Downloader Deployment–The PowerShell Deployment Toolkit VM Creator Getting SQL right with PowerShell Deployment Toolkit Troubleshooting the PowerShell Deployment Toolkit MMS 2013: Channel 9 Session Recording - Automating System Center Deployment with the PowerShell Deployment Toolkit In Closing: If you've read this far you must be pretty interested! Here is the download link: TechNet Gallery Download PDT 2.5.2500 is the latest version of the PowerShell Deployment Toolkit (as of August 2013). Keep an eye out on the Microsoft Building Clouds Blog because Rob Willis will release updates to the Workflow.XML component without releasing major updates to PowerShell Deployment Toolkit itself. This allows for quick updates as needed to support newer products and to facilitate bug fixes as needed. I'm very excited to see what the future holds for the PowerShell Deployment Toolkit!  As I continue to work with the utility I will hopefully have some more in-depth tutorials, in the meantime I encourage you to try it out on your own!

Lee Berg

Systems Engineer