Deploying System Center Using the PowerShell Deployment Toolkit

What’s in a name? With the name “PowerShell Deployment Toolkit,” (PDT) one would be forgiven for assuming that this utility is some silly script created to assist those of us who are still living with some aging versions of Windows Client OS in our environment and and who need to get PowerShell deployed to these nodes.

PowerShell Deployment Toolkit (PDT) and System Center 2012 SP1/R2

Don’t get the wrong impression. The PowerShell Deployment Toolkit is a work of art and a mandatory utility for anyone who has the slightest requirement for getting an environment installed for System Center 2012 SP1 or R2. Locked behind this unassuming name is a super powerful set of three PowerShell scripts and two XML files that will forever change how you will prepare your lab, proof of concept – or, for the very accomplished – potentially your production installations.

At the time of this writing, PDT is floating at version 2.5.2708 and fully supports the deployment of both System Center 2012 SP1 and R2. It also will cater for building out an Active Directory Domain if you prefer to lab your installations – and of course you will require a SQL Server, which the toolkit is more than willing to also accommodate for you.

Getting the Bits

The first step in getting going with PDT is to take a quick trip to the Technet Gallery, where you will find the latest and greatest versions of the PowerShell Deployment Toolkit. Download this archive, mark it as unblocked, and extract the content.

You are going to need a working folder, which you will also share out once everything is prepared. This working folder will be home to the PDT files and also to all the media we need for deploying a System Center Installation. As you begin your folder will look similar to my sample (shown below).

PowerShell Deployment Toolkit installation

Now, before we get too excited, the first thing i like to do is edit the Variable.xml file and change the value for the Download setting to point to my working folder (this is also a good reason for sharing the folder), which in my case will look as follows.

PowerShell Deployment Toolkit installation

I am configuring the tool to download on the fly to $SystemDrive\Temp, and then place the files in S:\Workspace\PDT\Installer as the final destination. to define these I am using the following parameters

​ <Variable Name="TempPath" Value="$SystemDrive\Temp" />
<Variable Name="Download" Value="S:\Workspace\PDT\Installer" />

I have a third working parameter set called Source Path. This is is the UNC, or mount point, connected to the initial share I created for the PDT folder. It is utilized when I choose to execute the PDT Installer from a VM, which is a member of the target environment I am deploying. For example, my environment’s domain controller.

Downloading the Components

Our next task is to grab all the different components which will be required for installing our Windows Server System Center environment. PDT will assist us for the vast majority of these, reaching out to Microsoft and downloading all the necessary components. However, there are a few that PDT will not be automatically downloading, so we must take care of these by hand.

To determine which components PDT will not download, we can upload the workflow.xml file into a variable. As this is pure XML, we can easily create a simple query that will identify the components we must download. The following sample will complete this procedure for us.

​ $Workflow = [XML] (Get-Content ".\Workflow.xml")
$Workflow.Installer.Installables.Installable | foreach {If (! $_.Download.URL) { Write-Host $_.Name }}

The results of this query will be similar to the following.

PowerShell Deployment Toolkit download variable

Ignoring both Integrations and Prerequisites from this list, we can quickly determine that both Windows Server 2012 and Windows Server 2012 R2, along with the components of System Center 2012 R2, will need to be manually downloaded. These can be located on the Microsoft servers and placed in their respective folders in the PDT Installer tree. You can use the following as a reference.

│   ├───Download
│   │   ├───Prerequisites
│   │   │   └───ADK81
│   │   ├───SharePoint2010Module
│   │   ├───SharePoint2010SP2Foundation
│   │   ├───SQLServer2008R2
│   │   ├───SQLServer2012.en
│   │   │   └───SQLFULL_x64_ENU
│   │   ├───SystemCenter2012R2
│   │   │   ├───AppController
│   │   │   │    └SW_DVD5_Sys_Ctr_2012_R2_MultiLang_AppCont_MLF_X19-18210.ISO.ISO
│   │   │   ├───ConfigurationManager
│   │   │   │    └SW_DVD5_Sys_Ctr_2012_R2_MultiLang_ConfMgr_ML_MLF_X19-18215.ISO
│   │   │   ├───DataProtectionManager
│   │   │   │    └SW_DVD5_Sys_Ctr_Datacenter_2012_R2_MultiLang_DPM_MLF_X19-22687.ISO
│   │   │   ├───OperationsManager
│   │   │   │    └SW_DVD5_Sys_Ctr_2012_R2_English_OpsMgr_MLF_X19-18307.ISO
│   │   │   ├───Orchestrator
│   │   │   │    └SW_DVD5_Sys_Ctr_2012_R2_MultiLang_Orch_MLF_X19-18211.ISO
│   │   │   ├───ServiceManager
│   │   │   │    └SW_DVD5_Sys_Ctr_2012_R2_MultiLang_SvcMgr_MLF_X19-18213.ISO
│   │   │   └───VirtualMachineManager
│   │   │             └SW_DVD5_Sys_Ctr_2012_R2_MultiLang_VMM_MLF_X19-18212.ISO
│   │   ├───SystemCenter2012SP1
│   │   │   ├───AppController
│   │   │   ├───ConfigurationManager
│   │   │   ├───DataProtectionManager
│   │   │   ├───IntegrationPacks
│   │   │   ├───OperationsManager.en
│   │   │   ├───Orchestrator
│   │   │   ├───ServiceManager
│   │   │   └───VirtualMachineManager
│   │   ├───WindowsServer2012
│   │   │    └9200.16384.WIN8_RTM.120725-1247_X64FRE_SERVER_EVAL_EN-US-HRM_SSS_X64FREE_EN-US_DV5.ISO
│   │   └───WindowsServer2012R2
│   │        └9600.16384.WINBLUE_RTM.130821-1623_X64FRE_SERVER_EVAL_EN-US-IRM_SSS_X64FREE_EN-US_DV5.ISO
│   ├───Prerequisites
│   ├───Sharepoint2012Module

After you have placed each of the resources in the respective location, you can proceed to use the PDT utility called Downloader.ps1 to grab all the other components, after which it will then process and extract both the components it downloaded as well as the items you manually placed so that they are prepared for installation.

Getting Started

Once you have completed this, you are pretty much ready to get started. In our next post we will take a closer look at the variables.XML file, and walk through the procedure of editing this file to automatically deploy your first System Center component.