跨版本的PowerShell安装文件夹和脚本文件扩展名

时间:2010-11-23 18:02:40

标签: powershell versioning

维基百科说,PowerShell 2.0与Windows 7一起发布;因此,当我使用Windows 7时,我显然正在使用该版本。

但这提出了两个问题:

  1. 为什么PowerShell的文件夹C:\Windows\System32\WindowsPowerShell\v1.0v1.0实际应该是v2.0时跟踪.ps1
  2. 为什么PowerShell脚本扩展程序{{1}}?当版本发生变化时,该扩展会增加吗?

2 个答案:

答案 0 :(得分:2)

这只是Powershell团队做出选择的结果。他们决定为PowerShell的V2保留1.0目录和.ps1扩展名。

实际检查Powershell版本的最佳方法是使用表达式$PSVersionTable.PSVersion

C:\Users\jaredpar> $PSVersionTable.PSVersion

Major  Minor  Build  Revision
-----  -----  -----  --------
2      0      -1     -1

答案 1 :(得分:1)

This is an ancient blog post(2007),但它仍然适用;简而言之:

  • 只要新的PowerShell版本保持向后兼容,他们就会替换早期版本

    • $PSHOME - $env:systemroot\System32\WindowsPowerShell\v1.0中反映的安装位置将保持不变。

    • 文件扩展名 - .ps1 - 将保持不变。

  • 为早期版本创建的脚本将继续运行。

  • 要将脚本标记为至少需要版本<n> ,请使用脚本顶部的#requires -version <n> (技术上) ,它可以放在脚本中的任何地方,但将它置于顶部是有意义的。)

Windows PowerShell 中,自v1 以来一直保持向后兼容性(截至本文撰写时,当前版本为v5.1 - 可能是 last 主要版本版本;见下文),因此安装位置和文件扩展名都保持不变。

然而,所有未来的努力将转向单独的跨平台PowerShell 核心版本,从v6.2.0开始,主要是 em>向后兼容Windows PowerShell,虽然它使用.NET Core 作为基础意味着某些特定于Windows的技术基本上不可用 - 请参阅this blog post

获取当前会话的PowerShell版本

PS> [string] $PSVersionTable.PSVersion
5.1.14393.693   # PSv5.1 example

更一般地说,在v2中引入的散列表 $PSVersionTable 包含Get-Help about_Automatic_Variables中描述的几个版本信息(不完整);下面的 WinPS 指的是 Windows PowerShell ,而 PSCore 指的是PowerShell 核心

共享属性:

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