Я просто думаю, что в самом начале команда Microsoft планирует развертывать версии PowerShell параллельно, как это делается для версий Framework .NET.Но со временем они решили поддерживать только один PowerShell одновременно.
Есть нечто еще более странное, когда вы используете параметр -version командной строки для выбора версии 1.0, переменная $PSVersionTable
присутствует в PSVersionоценивается в 2,0.$ PSVersionTable отсутствует в PowerShell 1.0
C:\Program Files (x86)\Microsoft Visual Studio 10.0\VC>powershell -version 1.0
Windows PowerShell
Copyright (C) 2009 Microsoft Corporation. Tous droits réservés.
PS C:\Program Files (x86)\Microsoft Visual Studio 10.0\VC> cd \
PS C:\> $PSVersionTable
Name Value
---- -----
CLRVersion 2.0.50727.4952
BuildVersion 6.1.7600.16385
PSVersion 2.0
WSManStackVersion 2.0
PSCompatibleVersions {1.0, 2.0}
SerializationVersion 1.1.0.1
PSRemotingProtocolVersion 2.1
Если вы смотрите на var $host
, который существует в обеих версиях
PowerShell V2.0 (vithверсия 1.0 или 2.0)
PS > $host
Name : ConsoleHost
Version : 2.0
InstanceId : b6ae2582-c1f4-422a-b057-16458b387f7d
UI : System.Management.Automation.Internal.Host.InternalHostUserInterface
CurrentCulture : fr-FR
CurrentUICulture : fr-FR
PrivateData : Microsoft.PowerShell.ConsoleHost+ConsoleColorProxy
IsRunspacePushed : False
Runspace : System.Management.Automation.Runspaces.LocalRunspace
PowerShell V1.0
PS > $Host
Name : ConsoleHost
Version : 1.0.0.0
InstanceId : b55940f2-b3b2-4f99-b895-98aac4752369
UI : System.Management.Automation.Internal.Host.InternalHostUserInterface
CurrentCulture : fr-FR
CurrentUICulture : fr-FR
PrivateData : Microsoft.PowerShell.ConsoleHost+ConsoleColorProxy
Мое мнение таково, что PowerShell V2.0 способен работать практически со всеми PowerShell V1.0 скриптов.Microsoft добавляет несколько переменных, и у вас могут возникнуть проблемы, если эти сценарии присутствуют в ваших сценариях, но это арахис.
JP