PowerShell is one of Microsoft’s administrative task automation platform. It is designed to enable the management of all aspects of a Windows system. 

PowerShell provides a wealth of cmdlets, small programs that do useful things, e.g. getting a user from AD, or removing an Exchange mailbox. Cmdlets, named using a verb-noun syntax (eg Get-ADUser or Remove-Mailbox) are object oriented, consuming and producing objects (typical Unix shells just produce text). Additionally, you can string together cmdlets using the Pipeline. Taken together these key features provide a dramatically simpler approach to administrative scripting.

PowerShell comes with a simple command prompt (looking very similar to cmd.exe) and the Integrated Scripting Environment, a light weight IDE to help you develop great PowerShell scripts. PowerShell has a C# like language that enables you to orchestrate the various cmdlets to deliver automation solutions quickly and easily.

Applications, Windows components and the wider community can easily add new cmdlets to provide additional functionality. Applications like Lync Server and  Exchange each have over 500 cmdlets. Additionally, these cmdlets provide the basis for the application’s GUI whereby the full administrative experience is delivered by cmdlets and then a friendly GUI provides access the most commonly administrative features.

PowerShell is a vast product, combining the basics (delivered inside Windows 7 and Server 2008) plus a huge range of value add. For the IT Pro, if you don’t know PowerShell, you need to practice saying “Do you want fries with that.”

But  why should developers care about PowerShell? IT Pros sure, but why should developers care? The answer comes in three parts.

  • PowerShell is a great tool to help you with developing your application. PowerShell makes it easy to access .NET framework classes as well as COM and WMI. The PowerShell team, for example, use PowerShell to build PowerShell. You can examine object and prototype your applications simply and easily with PowerShell.
  • PowerShell makes it easy to build great GUIs. You develop the core logic of your application’s management features as PowerShell cmdlets, then use the GUI to access these cmdlets. Lync Server and Exchange build their GUIs this way.
  • PowerShell enables IT Pros to manage and automate your application in production. This makes it far easier to get your app into production.

So how do you learn more about PowerShell? There is an outstanding, rich and vibrant online community out there, including PowerShell.Com, PowerShellCommunity.Org and The Scripting Guys Forum. There’s the official MOC training course (admittedly aimed solely at IT Pros) and reams of information on Technet and MSDN plus a wealth of blogs by PowerShell MVPs and others. Here's some of the resources on MSDN:

And for those of you in the UK, there’s the upcoming PowerShell PowerCamp weekend event taught by me! I’ll be covering all of PowerShell, including a short look at PowerShell V3.

So go out and learn PowerShell. It’s the future of Windows and Windows applications.

Thomas Lee is an IT industry veteran with over 40 years commercial experience.  Today, he consults, writes and provides training mainly on Microsoft technologies including Lync and PowerShell. He has also been a speaker at major IT conferences over the past two decades. A Microsoft Certified Trainer for 18 years and an MVP for 16 of the last 17 years, he's also been involved with the MCT Community since the very beginning days on MSN. He was part of the team writing both official Microsoft PowerShell classes and has worked on a variety of MSL courseware over the past decades. He writes two blogs Under The Stairs and PowerShell Scripts Blog and is active on Twitter, and a host of online forums. He turns up now and again on Born To Learn. In his spare time, he lives in an old cottage in the English countryside with his wife Susan, daughter Rebecca, a fine wine cellar and large collection of live Grateful Dead live recordings.