微軟正式發布PowerShell的新版本PowerShell Core 6.0。該版本是開源的,支持多種平臺(Windows、macOS、Linux),是為異構環境和混合云而構建的。
雖然代號是6.0,但PowerShell Core 6.0是PowerShell的第一個Core版本,用開源.NET Core進行了重寫,是Windows版本的后繼版本。而且,這個新版本得到了開源社區的支持,包括代碼、測試、文檔、問題、反饋和評論等方面的貢獻。即使是現在,人們仍然可以向PowerShell做貢獻。
在特性支持方面,微軟并沒讓Core版本支持Windows PowerShell的所有特性。PowerShell Core沒有提供PowerShell工作流、管理單元、WMIv1 Cmdlets等特性,也不能執行所需狀態配置(DSC)資源。來自微軟的Joey Aiello在一篇博文中介紹了PowerShell Core的正式版本:
作為向.NET Core及其他操作系統遷移的一部分,我們不得不放棄Windows PowerShell正在使用的部分技術。而在其他一些地方,我們利用PowerShell重構的機會停止支持一些用戶較少的技術。其中部分技術最終可能會回歸PowerShell Core,但也有許多不會。
現在有了兩種PowerShell,一種是廣為流行的基于.NET Framework的成熟版本(FullCLR),一種是基于.NET Core(CoreCLR)的。FullCLR及其依賴的.NET Framework只在Windows上可用,它已經發布了多個版本(1.0、2.0、4.0、5.0和5.1),以名稱powershell.exe發布,是Windows客戶端及服務器的內建組件。5.1版本是最后一個版本,后續不會再有新版本。除了已經棄用的1.0和2.0版本之外,微軟計劃繼續為Windows PowerShell的大部分版本提供支持。不過,這項支持的前提是底層的Windows操作系統仍然是一個受支持的產品。
得益于.NET Core,CoreCLR版本(6.0)可以跨平臺。該版本在Windows上的名稱為pwsh.exe,在macOS和Linux上是pwsh。除了6.0外,5.0/5.1 Core版本也成為Microsoft Nano服務器的一部分。總之,Core版本不同于Full版本。Paul Thurrott是一名技術新聞工作者,他在一篇博文中這樣描述PowerShell Core:
從功能的角度講,Windows PowerShell依然更強大,它可以充分利用.NET Framework和.NET Standard提供的更大的.NET功能集。PowerShell Core基于更新、更簡潔但功能較弱的.NET Core運行時,使它的功能受限于.NET Core和.NET Standard當前提供的功能。但PowerShell Core的優勢和.NET Core一樣,可以跨平臺。因此,你編寫的任何PowerShell Core腳本都可以在Windows、 macOS及各種較新的Linux發行版(如Ubuntu、Debian、Red Hat企業版等)上運行。
PowerShell Core設定了未來幾年的路線圖,它采用了微軟現代生命周期策略,旨在讓用戶的版本可以保持最新。6.x版本大約每6個月就會收到更新。
圖片來源:https://docs.microsoft.com/en-us/powershell/scripting/powershell-core-support?view=powershell-6
GitHub上提供了PowerShell Core源代碼。Windows版本和macOS&Linux版本的下載是單獨提供的。微軟文檔站點提供了Windows PowerShell和PowerShell Core的完整文檔。
查看英文原文:Microsoft Annouces General Availability of PowerShell Core 6.0