Setup Automation with PowerShell: Forging the Weapon of One Man's War Against Manual Setup Checklists

Accepted Session
Short Form
Scheduled: Tuesday, June 26, 2012 from 3:45 – 4:30pm in B204


Tired of VBScript? WMI? Batch scripts? Tired of scripting and programming in angle brackets and closing tags? Come and learn about the creation, design, and usage of Carbon, my open-source, PowerShell-based setup automation framework.


Although DevOps is a relatively new phrase and concept, I’ve always adhered to its principles. Automation is one of the cornerstones of my career. From builds to deploys to installs, I’ve tried to wage a one-man war against manual setup checklists.

Unfortunately, automation has been hard on Windows and .NET. Batch scripts, VBScript, and WMI were never attractive technologies. I quickly jumped on MSBuild when it shipped, and used it successfully for most of my career.

Then I discovered PowerShell. I thank the Universe (and Microsoft) every day for PowerShell. I still punish myself for not learning it sooner.

In this presentation, I’ll outline my DevOps journey: from the beginning, trying to use batch scripts and VBScript as a full-time software engineer, to becoming a full-time configuration management architect using PowerShell. I’ll delve into the creation and use of my open-source PowerShell module, Carbon, which enables automated, repeatable setup of Windows computers.

We use Carbon and PowerShell at our company to automate the setup of developer computers and an eight server development environment. Spinning up this environment used to take weeks. With Carbon and PowerShell, it now takes a couple days. Configuring a developer computer used to take days. Now it takes ten minutes.

Speaking experience

I have done several training sessions around security and PowerShell to my company's internal development organization. I have never given this talk before.