PowerShell version 2.0 for the masses. Yes, the time has come.
After many Community Technology Preview (CTP) pre-releases, Windows PowerShell version 2.0 shipped with Windows 7 and Windows Server 2008 R2. Now, finally we have a package available for download from Microsoft to get PowerShell version two for Windows XP, Vista, Server 2003, and Server 2008 as well. Thanks to Mike Roberts for mentioning this to me, and to John D. Cook for blogging about it, and of course to Microsoft for the release page on TechNet.
As Mr. Cook noted in his blog, this is part of the Windows Management Framework (WMF) for XP, Server 2003, Vista, and Server 2008. As the TechNet article can tell you, this includes three things.
- Windows Remote Management (WinRM) 2.0
- Windows PowerShell 2.0
- Background Intelligent Transfer Service (BITS) 4.0
Why is this significant? As much as it would be exciting to talk about PowerShell first, we’ll save the best for last. Let’s start with BITS.
The Background Intelligent Transfer Service (BITS) has been around since the early days of Windows XP and Windows Server 2003. There’s a nice compact BITS history at Wikpedia. One of the places in which BITS is used in Windows networks is for the Windows Server Update Services (WSUS) and the corresponding Windows Update Automatic Updates (WUAU) service. The new version 4.0 of BITS supports an enhanced security model, better network-friendly performance, enhanced tunability, and a BITS Compact Server implementation in Windows Server 2008 R2.
Windows Remote Management (WinRM) is Microsoft’s implementation of the industry standard Web Services Management (WS-Management) framework which is a part of a larger set of web services interoperability standards. Fundamentally, WinRM and other non-Microsoft implementations of WS-Management use the extensible markup language (XML) to represent object-oriented method requests sent over the hypertext transfer protocol (HTTP) to software objects on (potentially) remote computers/devices. The industry standard for this particular OO method request/response over XML/HTTP is called the Simple Object Access Protocol (SOAP), and an earlier version of SOAP was implemented in Windows Server 2003 with IIS 6.0. Then WinRM and other web services grew up around that foundation. In a sense, increasing popularity of web services, SOAP, and WinRM in Windows represent an evolving humongous long-term shift away from dependence on the classic Remote Procedure Call (RPC) historically (and still) used in so many Windows subsystems. But aside from other web services on the Windows platform, WinRM specifically means a great deal with respect to Windows management in general, and moreover to PowerShell remoting.
And thus, all roads lead to PowerShell. One of the great advances of PowerShell version 2.0 beyond version 1.0 is that WinRM and PowerShell “Remoting” are built-in. In fact, the remoting is built in so intrinsically that compared with the Exchange Server 2007 Exchange Management Shell (EMS), Exchange Server 2010’s EMS looks completely foreign at first glance. There’s no need to panic – it’s simply that the guts of how EMS does its work is radically different in E2010 with PowerShell v2.0 under the hood and loads of functions instead of cmdlets, all with remoting at their heart.
But taking PowerShell v2.0 beyond the comfortable home of Windows 7 and Windows Server 2008 R2 and enabling it to be used directly on Windows XP, Server 2003, Vista, and Server 2008 is where the fun begins for everyone else who is not on the leading edge. Better than icing on the cake.