2010-11-23 74 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                            
相關問題