2010-11-23 77 views
4

维基百科说,PowerShell 2.0随Windows 7一起发布;所以当我使用Windows 7时,我显然正在使用该版本。跨版本的PowerShell安装文件夹和脚本文件扩展名

但是,这产生了两个问题:

  1. 为什么PowerShell的与尾部v1.0文件夹C:\Windows\System32\WindowsPowerShell\v1.0当它实际上应该是v2.0
  2. 为什么PowerShell脚本扩展为.ps1?版本更改时,扩展名会增加吗?

回答

2

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

实际检查的PowerShell版本的最好方法是使用$PSVersionTable.PSVersion

C:\Users\jaredpar> $PSVersionTable.PSVersion 

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

谢谢,我希望更好推理虽然:) – poke 2010-11-23 20:29:25

1

这是一个ancient blog post(2007年),但它仍然适用的表达;总之:

  • 只要新的PowerShell版本保持向后兼容,他们将取代早期版本

    • 的安装位置,体现在$PSHOME - $env:systemroot\System32\WindowsPowerShell\v1.0 - 将保持不变。

    • 文件扩展名 - .ps1 - 将保持不变。对于早期版本中创建

  • 脚本将继续运行。

  • 为了纪念一个脚本至少需要版本<n>,用#requires -version <n>在脚本(技术上的顶部,它可以放在任何地方脚本,但它是有道理的意义的地方它在顶部)。

在撰写本文时(PowerShell的V5.1)的,向后兼容性一直以来V1维护,因此两者的安装位置和文件扩展名都保持相同。


获取当前会话的PowerShell的版本

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

更一般地,哈希表$PSVersionTable,在v2中介绍,包含Get-Help about_Automatic_Variables描述的几件版本信息,(不完全):

Name       Value                               
----       -----                               
PSVersion      5.1.14393.693 # The PowerShell version.                            
PSEdition      Desktop  # 'Desktop'=*Windows* PS; 'Core'=PS *Core*                             
PSCompatibleVersions   {1.0, 2.0, 3.0, 4.0...} # array of compatible versions                           
BuildVersion     10.0.14393.693 # OS version? only if it came natively                            
CLRVersion      4.0.30319.42000 # The .NET CLR version                            
WSManStackVersion    3.0    # WS-Management (WinRM) version                           
PSRemotingProtocolVersion  2.3    # remoting-protocol version                            
SerializationVersion   1.1.0.1   # serialization-protocol version                            
相关问题