DSC and PowerShell's OneGet: The Future of Configuration Manager?

This combination may end up being the command-line replacement for System Center Configuration Manager.

By Greg Shields

07/09/2014

At last year's TechEd conference in New Orleans, I first shared in the epiphany. I'd sat down for an evening drink with fellow Redmond columnist Don Jones to chat about the day's events. The topic of conversation turned quickly to a new technology announced that week: Windows PowerShell v4 and, more specifically, a feature called Desired State Configuration (DSC).

Don espoused excitedly that DSC would become the foundation for an entirely new approach to Windows Server management. It would accomplish this by flipping around the way in which system configurations were made and controlled. Rather than instructing a system to do something, a DSC "document" would instead tell that server to be something.

That change in verbiage seems almost imperceptible, but its repercussions to IT's approach in managing systems are proving to be earth-shattering.

I discussed this new approach in my August 2013 column. In it, I considered how DSC would add smarts to our usual systems documentation by evolving the documents themselves into code. The result is a much smarter "document" that can actually do something rather than just describe what's to be done.

Back at last year's TechEd, it took some explaining for me to realize just how powerful this new approach could be. After a second drink and a headful of new ideas, I found myself getting excited, too.

Being a System Center person, my immediate question was, "How does it handle installing software?"

Don's response: "It doesn't, so much... Yet."

I still remember vividly my follow-up: "Tell them it needs to, and that they shouldn't ignore the Windows client, because DSC plus the ability to install software will revolutionize desktop management, as well."

Enter PowerShell Version 5
That missing piece begins to arrive with the Windows PowerShell version 5 update. Its name is OneGet.

The Windows PowerShell v5 OneGet module delivers a small set of cmdlets that install software "packages" onto a Windows instance. The cmdlets themselves are quite simple: Add-PackageSource connects to a package source repository; Find-Package lists the packages in the repository; Install-Package installs a package, while Uninstall-Package uninstalls one. A few more get information about packages and the source from which they come.

However, while the cmdlets are simple, the concepts surrounding them are outrageously cool.

Add-PackageSource connects the local machine to a remote package repository that can be remote as in "on the LAN" or "on the Internet." Imagine for a minute that software packages anywhere need only be built once, and then consumed by anyone, anywhere.

It's a bit like the ITNinja.com (formerly AppDeploy.com) site, but with packages you can actually install, instead of merely instructions to package them yourself.

To prove this point, OneGet in the Windows PowerShell v5 preview automatically connects to an Internet-based repository at chocolatey.org/api/v2. Inside that repository is an impressive list of community-built packages for hundreds of common software installations. Find the one you want, run Install-Package and the software with all its dependencies is silently installed.

Don't trust a public repository? Create your own. Share every package across your business from a single location. Install and uninstall it everywhere, including over the Internet, via a unified command syntax. Add some additional logic -- that's assumedly yet to be developed -- and reporting can be accomplished natively.

Now, add OneGet back to DSC and consider again Windows systems management. Windows servers and desktops always meet a standard configuration, because they're created from it and compared against it. Complex, heavyweight OS and software deployment tools become a thing of the past, because OS configuration and software delivery are native to the Windows PowerShell foundation of every Windows instance.

Feels like a command-line replacement for System Center Configuration Manager, doesn't it? I assume we'll find out soon enough.

About the Author

Greg Shields is Author Evangelist with PluralSight, and is a globally-recognized expert on systems management, virtualization, and cloud technologies. A multiple-year recipient of the Microsoft MVP, VMware vExpert, and Citrix CTP awards, Greg is a contributing editor for Redmond Magazine and Virtualization Review Magazine, and is a frequent speaker at IT conferences worldwide. Reach him on Twitter at @concentratedgreg.