维基百科说,PowerShell 2.0与Windows 7一起发布;因此,当我使用Windows 7时,我显然正在使用该版本。
但这提出了两个问题:
C:\Windows\System32\WindowsPowerShell\v1.0
在v1.0
实际应该是v2.0
时跟踪.ps1
?答案 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