There was an early Christmas present from the Windows PowerShell (AKA PoSH) Team. The Community Technology Preview 3 (CTP3) of Windows PowerShell v2.0 was released on December 23rd just in time for Christmas. The announcement is here. As expected CTP3 builds on the new technology provided in CTP2 which was released in May 2008. You can download CTP3 from the Microsoft Download Center.
Hemant Mahawar, Program Manager for PowerShell, summarized the CTP3 release as follows: This release brings, among other things, performance improvements … things will be faster/more efficient than before. PowerShell remoting now allows implicit remoting where command execution appears to be local even though they are remote. We have added over 60 new cmdlets in this release … cmdlets for adding/removing/renaming computers, cmdlets for event logs, cmdlets for WS-Man functionality and even a WS-Man provider. The “graphical” host, Windows PowerShell ISE, now supports a graphical debugger, context sensitive F1 help and a programmable interface for you to party on.
I tested CTP3 on Vista Ultimate SP1. The only issue I encountered when installing CTP3 was that fact that CTP3 did not honor the execution policy set by me in CTP2 contary to what was stated in the Release Notes. Moreover, it was impossible to set the execution policy to unrestricted using Set-Executionpolicy.
After digging around in the registry hives, the problem became apparant. The PowerShell execution policy is set correctly in [HKEY_LOCAL_MACHINE\Software\Microsoft\PowerShell\1\ShellIds\Microsoft.PowerShell\executionPolicy] but not in [HKEY_CURRENT_USER\Software\Microsoft\PowerShell\1\ShellIds\Microsoft.PowerShell\executionPolicy]. I found this registry entry had to manually changed from allsigned to unrestricted.
One major enhancement in this release relates to remoting and background jobs. Both require that you install Windows Remote Management (WinRM) 2.0 CTP3. Currently WinRM 2.0 CTP3 is supported only on Windows Vista SP1 and on Windows Server 2008. For some reason that I do not yet understand background jobs, even the jobs only run on the local computer, rely on the remoting features of PowerShell.
The othere major enhancement relates to what was known as Script CmdLets in CTP2. They have been renamed to advanced functions in CTP3. Advanced functions are functions that have the same capabilities and behaviors as cmdlets but are written using the PowerShell scripting language instead of a compiled language such as C#.
There are two types of advanced functions, i.e. named functions and unnamed functions.  Both types use the CmdletBinding attribute to identify themselves as advanced functions that act similar to compiled cmdlets. Both types can also be used within a script file. The difference

























