PowerShell 7のロードマップが発表されました
しばたです。
つい先ほどPowerShell Team Blogが更新されPowerShell 7のロードマップが発表されました。
一部の内容については以前の発表と変わっていないところもありますが、本記事ではこのロードマップの内容をかいつまんで解説していきます。
.NET Core 3.0
こちらは以前お知らせした通りPowerShell 7ではその基盤を.NET Core 2.1から.NET Core 3.0に更新します。
これによりパフォーマンスの向上だけでなく、Windows PowerShell(正確には.NET Framework)との互換性も向上します。
.NET 3.0ではWindowsだけですがWPFやWinFormもサポートされるため、PowerShell 7でもそれらの利用が可能になる見込みです。
PowerShell Team BlogではOut-GridView
コマンドレットも復活させるとも言っています。
ただ、こちらに関してはWindows以外のプラットフォームでの扱いをどうするのか、またPowerShell本体にWPFやWinFormといったGUIアセンブリを直接組み込むのは良くないのではといった問題があり、いくつかのIssueが上がっています。
現状ある問題をどう解決するかはまだ見えていません。
Windows Compatibility
前項で述べた様に.NET Core 3.0化を起点にWindows PowerShellとの互換性も増す見込みで、最終的にWindows PowerShellの置き換えを目指すところは変わっていません。
ただし、互換性を確保するためには既存Windows PowerShell向けモジュールの更新も必須であり、現実的には最新のWindows 10(とWindows Server 2019以降のサーバーOS)との互換のみ確保され、古いOSにおける互換性の確保は厳しいと思われます。
こちらについては、以前に個人ブログでこんな記事を書いてますので参考にしてください。
Feature Investigations
PowerShell Teamとしては以下の3つの機能に関する調査を実施中でRFCへの提案を期待しているそうです。
Simplify Secure Credentials Management
クラウド環境やオンプレ環境といった様々な環境で使われる認証情報をセキュアかつできるだけスクリプトに埋め込まずに済む方法を模索中だそうです。
認証情報は環境ごとで取り扱いが変わるので、そこを横断的にできる方法を探している様です。
Logging Off the Box
セキュリティ強化の一環としてOSに依存しないロギング+ログ転送の方法を模索中です。
New Version Notification
新しいバージョンのPowerShellがリリースされた際に利用者によしなに通知する方式を模索中です。
こちらはすでにRFCが作られています。
余談ですが、これに関連するIssueで自作ツールを紹介してみたのですが見事にスルーされました...
Popular Requested Features
上記3つ以外にも多くの機能リクエストがありPowerShell 7での導入を検討中です。
発表のなかで直ちに解決できないが調査したい機能がいくつかリストアップされましたので興味のある方はぜひフィードバックしてみてください。
- Improve the default formatting of errors
- Ubiquitous -OnError {ScriptBlock} parameter
- Control operators for chaining commands
- Ternary conditionals
- Null conditional assignment
- Parallel For-Each-Object
Other Investments
PowerShell本体以外に周辺ツールに対してもいくつかの発表がされています。
PowerShell in Azure Functions to generally available
先日Azure Functions V2ランタイムでのPowerShell Coreサポートが発表され、パブリックプレビュー版がリリースされました。
Azure Functions teamと協力して最終的にGAを目指すとのことです。
具体的な時期については明言されませんでした。
PSReadLine 2.0
PSReadLineは当初中のひとであるJason Shirkさんの個人プロダクトとして作られPowerShell 5.1に標準搭載されたあともJasonさんのGitHubリポジトリで管理されていたのですが、つい先日PowerShell Teamにソースコードが移管されました。
現在のPSReadLineの最新バージョンはVer.2.0.0-beta.4で、これまでかなり長い間ベータ版のままだった現状を改善しGAを目指すとのことです。
ただしGAの時期については明言されませんでした。
PSReadline 2.0の最新版では日本語入力に関するいくつかのバグも解消されているのでできるだけ早くGAしてほしいと個人的には思っています。
PowerShell Editor Services / Visual Studio Code PowerShell extension
Visual Studio Code PowerShell拡張の内部で使われているPowerShell Editor Servicesのメジャーバージョンアップ(Ver.1.x→Ver.2.0)を目指し、信頼性・パフォーマンスの向上、RSReadline対応を図るとのことです。
こちらもGAの時期については明言されていません。
PSScriptAnalyzer
PowerShell Editor Services改善の一環としてPSScriptAnalyzerのメジャーバージョンアップ(Ver.1.x→Ver.2.0)も図るそうです。
最後に
ざっとこんな感じです。
PowerShell 7のロードマップと言いつつも多くの周辺ツールに対する内容が含まれており幅広い内容でした。
この発表に合わせる形で最初のプレビュー版あるPowerShell 7 Preview.1がリリースされています。
軽く試した限りではまだ基盤を.NET Core 3.0(SDK 3.0.100-preview5-011568)に乗せ換えただけといった印象でしたが、新しいPowerShellに興味のある方はぜひ試してみてください。