Microsoft、「PowerShell Core 6.2」を公開、次期リリースは「PowerShell 7」に:2種類の「PowerShell」を統合
Microsoftは、「PowerShell」について、オープンソースエディションの最新リリース「PowerShell Core 6.2」の一般提供を開始した。また、次期リリースの開発計画と、名称が「PowerShell 7」となる理由も明らかにした。
Microsoftは2019年3月28日(米国時間、以下同じ)、WindowsやLinux、macOSで動作する「PowerShell」について、オープンソースエディションの最新リリース「PowerShell Core 6.2」の一般提供を開始した。さらに、4月5日には次期リリースについて、名称を「PowerShell 7」とすることを明らかにし、名称変更の理由と開発計画の概要を説明した。
PowerShell Coreは「Windows PowerShell」と並列して動作する。さらに両者は相互に独立して使用できる。このため、既存のスクリプトのためにWindows PowerShellを使い続け、PowerShell Coreを新たな自動化や新機能の探索に利用するといったことが可能だ。
PowerShell Core 6.2は、パフォーマンスの向上やバグ修正、コマンドレット/言語の小規模な改良に重点が置かれている。2018年9月に「PowerShell Core 6.1」を公開後、PowerShell Core 6.2の公開までに加えられた変更は560件以上に上った。
PowerShell Coreチームによれば、PowerShell Core 6.2の開発期間を通じて、「Azure Functions」でのPowerShell Core 6のサポートや、リリースプロセスの自動化、「PSScriptAnalyzer v1.18.0」のリリース、Visual Studio CodeのPowerShell拡張機能のプレビュー版(2.0.0-Preview)のリリースにも力を入れてきたという。
多数の実験的な機能を追加
さらにPowerShell Core 6.2には、多くの実験的な機能も導入されている。「Get-ExperimentalFeature」と入力することで、実行可能な実験的な機能の一覧を表示でき、「Enable/Disable-ExperimentalFeature」を使うことで、いつでも実験的な機能のオン/オフが可能だ。
次の実行例では「Get-Commnd」という誤ったコマンドを入力した結果、最も可能性の高い「Get-Command」から最も可能性の低い「Set-Content」まで複数の候補が表示されている。つまり、コマンド名やコマンドレット名をあいまい一致で検索できる。
PS> Get-Commnd Get-Commnd : The term 'Get-Commnd' is not recognized as the name of a cmdlet, function, script file, or operable program. Check the spelling of the name, or if a path was included, verify that the path is correct and try again. At line:1 char:1 + Get-Commnd + ~~~~~~~~~~ + CategoryInfo : ObjectNotFound: (Get-Commnd:String) [], CommandNotFoundException + FullyQualifiedErrorId : CommandNotFoundException Suggestion [4,General]: The most similar commands are: Get-Command, Get-Content, Get-Job, Get-Module, Get-Event, Get-Host, Get-Member, Get-Item, Set-Content.
この他にも、場合によっては300〜750倍の高速化が可能な「暗黙のリモート処理」機能や、WindowsとmacOS、Linuxで同じように一時フォルダを取得できる「Temp Drive」機能、短縮名から長い名称にタブ補完が可能な「略語展開」機能などを追加している。
なぜ名称から「Core」を取り除くのか
PowerShell Coreチームは、PowerShell Coreの次期リリースを「PowerShell 7」とする複数の理由を説明している。
- PowerShell Coreの利用がこの2年間で大幅に伸びている 伸びの大部分にはLinux上での利用増加が貢献している。下図は、テレメトリーデータによるpwsh.exe(LinuxとmacOS上ではpwsh)の起動回数を示しており、Linux(オレンジ色)の勢いが著しいことが分かる
- Windows上でのPowerShell Coreの利用はあまり伸びていない これは、Windows PowerShellユーザーが、PowerShell Coreと互換性のない既存の自動化スクリプト(PowerShell Coreでサポートされていないモジュール、アセンブリ、APIを使っている)を使用しているためだと考えられる。こうしたユーザーは、PowerShell Coreにおける新機能やパフォーマンス向上、バグ修正の恩恵を受けられない
- Windows PowerShellの置き換えで対応 この問題に対処するため、PowerShell Core開発チームはPowerShell Coreの次期リリースを、Windows PowerShell 5.1を完全に置き換えるものとして開発することに決めた
- PowerShellの一本化 これにより、Windows PowerShellユーザーとPowerShell CoreユーザーがPowerShellの同じバージョンを使って、WindowsやLinux、macOSにわたって、自動化を実現できるようになり、PowerShell 7ユーザーは、Windows PowerShellモジュールとの非常に高い互換性を享受できるようになる
PowerShell Coreチームは以上の決定に従って、ドキュメントや製品ページでPowerShellに言及する際に、「Core」を省略し、「PowerShell 7」の呼称を使用する。
6.1で互換性の糸口を付けた
PowerShell Coreチームによると、PowerShell Core 6.1により、Windows PowerShellの多くの組み込みモジュールとの互換性が確保できた。PowerShell 7では、「.NET Core 3.0」における変更を利用することで、インボックスWindows PowerShellモジュールとの90%以上の互換性を実現する見込みだ。
また、PowerShell Coreは現在、Microsoftモダンライフサイクルポリシーの対象だが、PowerShell 7は、.NET Coreのサポートライフサイクルとの整合性確保が図られ、LTS(長期サービス)リリースと非LTSリリースが用意される。
PowerShell 7の最初のプレビュー版は2019年5月にリリースされる見込みだ。PowerShell 7の開発は.NET Coreの開発スケジュールと連動しており、.NET Core 3.0の一般提供開始後、一定期間が経過してからPowerShell 7の一般提供が開始される見通しだ。
Copyright © ITmedia, Inc. All Rights Reserved.
関連記事
PowerShell Core
PowerShell Coreは、ランタイムを.NET Coreとすることで、クロスプラットフォームで動作するようになったPowerShellエディションである。Azure Cloud ShellがフルLinuxベースに
Azure Cloud Shellの「PowerShell(プレビュー)」は、これまでWindowsベースのAzure PowerShell利用環境をプレビュー提供してきました。これが2018年7月、LinuxのPowerShell Core 6ベースに切り替わりました。PowerShellを使ってシステムのディスクサイズや空き領域サイズなどをリモートから調査する
PCを管理するために、ディスクのサイズや空きサイズなどを調べたいことがあるだろう。多くのリモートPCを調査するなら、PowerShellやコマンドプロンプト上で動作するCUIのツールを使うと便利だ。その方法をまとめておく。