Это древний пост в блоге (2007), но он все еще применяется; короче:
Пока новые версии PowerShell остаются обратно совместимыми , они будут заменять более ранние версии :
Место установки, указанное в $PSHOME
- $env:systemroot\System32\WindowsPowerShell\v1.0
- останется прежним.
Расширение имени файла - .ps1
- останется прежним.
Скрипты, созданные для более ранней версии, будут продолжать работать.
Чтобы пометить скрипт как требующий версию <n>
как минимум , используйте #requires -version <n>
в верхней части скрипта (технически он может быть размещен в любом месте в скрипте, но имеет смысл разместить его сверху).
В Windows PowerShell обратная совместимость поддерживается начиная с v1 (текущая версия v5.1 на момент написания этой статьи - скорее всего, последняя основная версия; см. ниже), поэтому и место установки, и расширение имени файла остались прежними.
Однако все будущие усилия будут направлены на создание отдельной кроссплатформенной PowerShell Core edition , которая - начиная с версии 6.2.0 - в основном назад - совместим с Windows PowerShell, хотя его использование .NET Core в качестве основы означает, что некоторые специфичные для Windows технологии принципиально недоступны - см. это сообщение в блоге .
К получить версию PowerShell текущего сеанса :
PS> [string] $PSVersionTable.PSVersion
5.1.14393.693 # PSv5.1 example
В общем, хеш-таблица $PSVersionTable
, представленная в v2, содержит несколько частей информации о версии (не полностью), описанной в Get-Help about_Automatic_Variables
; WinPS ниже относится к Windows PowerShell , тогда как PSCore относится к PowerShell Core :
Shared Свойства:
Name Value
---- -----
PSVersion 5.1.14393.693 # The PowerShell version.
PSEdition Desktop # 'Desktop'=WinPS; 'Core'=PSCore
PSCompatibleVersions {1.0, 2.0, 3.0, 4.0...} # array of compatible versions
WSManStackVersion 3.0 # WS-Management (WinRM) version
PSRemotingProtocolVersion 2.3 # remoting-protocol version
SerializationVersion 1.1.0.1 # serialization-protocol version
Дополнительные свойства исключительно для WinPS :
BuildVersion 10.0.14393.693 # ?? Highest supported OS major.minor version, seemingly followed by the build.revision PS version.
CLRVersion 4.0.30319.42000 # The .NET Framework CLR version
Дополнительные свойства эксклюзивно для PSCore :
GitCommitId 6.2.0 # The Git commit ID reflecting an RTM tag (e.g., 6.2.0), release tag (e.g., 6.2.0-rc.1) or a specific non-release commit (e.g., 6.2.0-preview.4-108-g5d54f1aa3871a826409496437e25856dc263ccc4)
OS Microsoft Windows 10.0.17134 # [System.Runtime.InteropServices.RuntimeInformation]::OSDescription
Platform Win32NT # [System.Environment]::OSVersion.Platform