PowerShell
公式ブログにて、「PowerShell」のエディションや「PowerShell Core」の紹介が行われています。2種類のPowerShellのエディション
「PowerShell」には、以下の2種類のエディションが存在します。- Windows PowerShell
- PowerShell Core
1.Windows PowerShell
「Windows PowerShell」は、「.NET Framework」上でビルドされた「PowerShell」です。「.NET Core」と対比して「FullCLR」と呼ばれることもあります。
「Windows PowerShell」は、過去約10年近くに渡り広く利用されている「PowerShell」です。
「Windows PowerShell」は「.NET Framework」上でビルドされているため、名が示す通り、Windows上でのみ利用可能な「PowerShell」です。
リリースされた「Windows PowerShell」のバージョンには、以下のバージョンが含まれています。
- 1.0
- 2.0
- 3.0
- 4.0
- 5.0
- 5.1
「Windows PowerShell」は、「Windows」や「Windows Server」の内蔵コンポーネントとして利用可能になっています。
$PSVersionTable.PSEditionの値
「Windows PowerShell 5.0」及び「Windows PowerShell 5.1」では、「$PSVersionTable.PSEdition」に「Desktop」が設定されます。2.PowerShell Core
「PowerShell Core」は、「.NET Core」上でビルドされた「PowerShell」です。「.NET Core」と対比して「CoreCLR」と呼ばれることもあります。
(ただし技術的には、CoreFXも含まれています。)
「.NET Core」はクロスプラットフォームで提供されているため、「.NET Core」上でビルドされた「PowerShell Core」は、「Windows」、「macOS」、「Linux」でも利用可能です。
$PSVersionTable.PSEditionの値
「PowerShell Core」では、「$PSVersionTable.PSEdition」に「Core」が設定されます。捕捉
「PowerShell Core 6.0」はクロスプラットフォームですが、「PowerShell Core 5.0」及び「PowerShell Core 5.1」は「Nano Server」向けに提供されています。PowerShell CoreとWindows PowerShellの互換性
「PowerShell Core」の目標は、技術的に可能な限り「Windows PowerShell」と互換性を維持することです。この目標を実現するため、「PowerShell Core」は既存の.NETアセンブリーとバイナリー互換性を提供する「.NET Standard 2.0」を活用しています。
多くのPowerShellモジュールは.NETアセンブリーに依存しており、「.NET Standard」により、「.NET Core」上でこれらのモジュールが動作できるようになります。
「.NET Standard」に関する情報は、以下を参照してください。
また開発チームは、PowerShellの言語と「Microsoft.PowerShell.Management」や「 Microsoft.PowerShell.Utility」といったあらゆる組み込みモジュールが、「Windows PowerShell」と同等に動作するよう取り組んできました。
この過程において、コミュニティーの助けを伴いながら、新機能の追加や不具合の修正がコマンドレットに対して行われています。
「DnsClient」や「Hyper-V」、「NetTCPIP」、「Storage」といった「Windows」の一部として提供されるモジュールのほとんどは、まだ「.NET Core」に移植されていません。
しかし「.NET Standard」及び「CDXML」により、多くの伝統的なWindows PowerShellモジュールは、「PowerShell Core」で動作するようになっています。
テストの勧め
開発チームでは、ユーザーに「Windows」上で「PowerShell Core」を利用してもらい、「PowerShell Gallery」にあるアイテムや、既存のモジュールやスクリプトが期待通りに動作するかどうか試して欲しいとのことです。そして何が動作し、何が動作しなかったのか、以下で報告して欲しいとのことです。
「PowerShell Core」のインストール方法は、以下を参照してください。
「PowerShell Core」はサイドバイサイドでインストールできるため、既存の「Windows PowerShell」と共存し、影響を与えることなくインストールすることができます。
もちろん既存のスクリプト等にも影響を与えませんし、インストール後に再起動することなくすぐに「PowerShell Core」を利用できます。
また今後、「Windows PowerShell」のモジュールを「PowerShell Core」へ移植する方法や、「Windows PowerShell(3.0)」と「PowerShell Core」をターゲットとした新規モジュールの開発方法が紹介される予定です。
Windows PowerShellの未来
「Windows PowerShell 5.1」や「.NET Framework 4.x」は、「Windows 10」や「Windows Server 2016」のコンポーネントとして引き続き提供されサポートされます。しかし主要な機能のアップデートや優先度の低い不具合の修正は行われません。
一方「PowerShell Core」は、「Windows PowerShell」の以前のバージョンで発生していた不具合の修正が活発に行われており、コミュニティーのメンバーが不具合の修正に参加できるよう取り組みが行われています。
OSと共に提供される「Windows Management Framework」に関しては、サポートサイクルに変更はありません。
安定版に向けたスケジュール
現在のスケジュールは、サードパーティー含む「Windows PowerShell」モジュールと「PowerShell Core」間の互換性レベルに強く依存しています。言い換えれば、ユーザーが既存のスクリプトやコマンドレットの「PowerShell Core 6.0」上での動作を検証してくれれば、「PowerShell Core 6.0」の安定版リリースに向けた作業に早く着手できるようになります。
今年年内に「PowerShell Core 6.0」安定版リリースを望んで/望まれています。
安定版がリリースされれば、Microsoftの公式サポートと共に、「PowerShell Core 6.0」の使い方に関する詳細が提供される予定です。