CTP: Versioning

  • Comments 12

Next week we'll be releasing a Community Technology Preview (CTP) of Windows PowerShell V2.0. I'm going to hold off saying what is in it until next week. The purpose of this email is to set your expectations about the CTP.


  • The PowerShell CTP REPLACES PowerShell V1.0. They do not run side-by-side.
    • To install the PowerShell CTP, you must first turn off and uninstall any previous version of Windows PowerShell. (Instructions for how to do this will be in the release notes).
    • This is because of StrongName Binding. If we did side-by-side, no V1 cmdlets would work because they bind against the V1 PowerShell.
    • In this regard, we are pursuing exactly the same approach as .NET itself. ORCAS is a replacement for .NET 2.0/3.0 not a side-by-side install. This means that we have to be super super careful about compatibility but that everything continues to work.
  • PowerShell CTP is compatible with PowerShell V1.0. Your V1.0 cmdlet, providers and scripts should work without modification on the CTP.
    • We try to be super careful about compatibility.
      We regularly run > 1 million tests, add to that suite constantly, and constantly self-host. That doesn't mean that we are fully compatible but it does mean that at least a million things are compatible. In the past we've been able to make very substantial changes and (after we ensured that the tests all ran fine) everything as worked.
    • V1 compatibility is very important to us so if you encounter any regressions - please let us know ASAP. Clearly there will be some breaking changes - as we add new operators, keywords and cmdlets we are grabbing parts of the namespace that other people might use. We are just going to accept that pain as the price of progress. There are other changes that we are considering that would change existing behavior that we are fairly sure no one is using (because it doesn't make any sense) and it would have to change to make V2 sensible. We haven't made any of these yet but as we do, we'll get your opinions on the changes
  • PowerShell Scripts continue to use ".PS1".
    • We will continue to pursue this approach until there is a major change in the CLR or .NET frameworks which force us to go side-by-side. It is at that point that we'll go from .PS1 to .PS2 . Until then we will stay with .PS1 and everything that runs today will continue to run in new releases.
    • You might write a .PS1 script which takes advantage of a cmdlet/feature that is only available in V2. If you send this to someone that has PS V1, it will fail "in some way and at some time". If it uses some new syntax, it will fail at parse time (with a PARSER error) but if it uses a new command line switch - it won't fail until it tries to run that command. This is what #REQUIRES is all about. You start your script with
      #REQUIRES -Version 2
      And we will check version #'s and produce a precise error message
    • If you have a #REQUIRES –VERSION 1 in your script, it will continue to run just find on PowerShell (V2) CTP because it is compatible with V1.


Jeffrey Snover [MSFT]
Windows Management Partner Architect
Visit the Windows PowerShell Team blog at: http://blogs.msdn.com/PowerShell
Visit the Windows PowerShell ScriptCenter at: http://www.microsoft.com/technet/scriptcenter/hubs/msh.mspx

Leave a Comment
  • Please add 4 and 8 and type the answer here:
  • Post
  • Next week we'll be releasing a Community Technology Preview (CTP) of Windows PowerShell V2.0. This release

  • Next week we'll be releasing a Community Technology Preview (CTP) of Windows PowerShell V2.0. This

  • #REQUIRES?  Please tell me you're kidding. You're not actually using the comment character for a, uhm, precompiler directive, right?

    Shouldn't it be another weird language-level feature, like ... param?

    What I mean is: please, can it not be a comment that's not a comment?

  • Wow. Just tried it. I see that #Requires is actually already in v1 so I guess my please is too late :-/

  • More about the very cool Powershell V2 CTP next week when my NDA expires, but before that a warning on

  • Having to uninstall V1.0 first is a poor user experience. I don't remember how, off hand, the downlevel installs were deployed (MSI or OCM) but MSI major upgrades can uninstall automatically with the right entries in the Upgrade table and scheduling the RemoveExistingProducts action. Major upgrades like this are trivial with a low test cost and beneficial to users' time.

    CBS should be able to remove old files during the installation of the new version.

  • The Windows PowerShell Team is pleased to release the first Community Technology Preview (CTP) of Windows

  • The first CTP of Microsoft Powershell 2.0 is out! It doesn´t work very well with Vista RTM, so install

  • Sigh... PowerShell just gets messier and messier.

    Why are we using .ps1 when the language is ps2?

    Why are you waiting for external influence (CLR/BCL changes) to switch the file extension?

    Requiring #requires at the top of a file does the exact same thing as having a different file extension anyway -- only it's messier, users don't know until they actually open the file, and it might get borked if someone wrote a comment like "#requires administrator access".

    Even something like ".ps2.ps1" would be a better file extension, if you _really_ insist on keeping that utterly ridiculous "fail-in-some-way-at-some-time" compatibility with PS1.

  • Som jag skrev i mitt tidigare inlägg om PowerShell 2.0 (CTP) så går det alltså att ladda hem denna förhandstitt

  • The PowerShell team released a Community Technology Preview of PowerShell 2.0 this week. They have had

  • The PowerShell 2.0 CTP is nearly here!

Page 1 of 1 (12 items)

CTP: Versioning