PowerShell Core 6.0 GAがリリースされました
2018年1月10日、「PowerShell Core 6.0 GA」がリリースされました。「GA」は「Generally Available」の略で、いわゆる安定版を意味します。
加えて「Microsoft」のサポートポリシーに基づくサポートが提供されます。
PowerShell Coreとは
「PowerShell Core」は、「.NET Core」で実装されている「PowerShell」のことです。「PowerShell Core」はクロスプラットホームで提供され、「Windows」だけでなく「Linux」でも利用可能なシェルです。
「PowerShell」のスキルを有する組織や個人は、 「PowerShell Core」を利用することで、「Windows」だけでなく「Linux」や「macOS」でもそのスキルを活用できます。
リリース情報
「PowerShell Core 6.0 GA」のリリース情報です。- リリースアナウンス:PowerShell Core 6.0: Generally Available (GA) and Supported!
- ダウンロードとインストール:Installing PowerShell Core on Windows
- ダウンロードとインストール:Installing PowerShell Core on macOS and Linux
UbuntuにPowerShell Core 6.0 GAをインストールするには
UbuntuにPowerShell Core 6.0 GAをインストールする方法は、以下を参照してください。PowerShell CoreがサポートするOS
「PowerShell Core」がサポートするOSは、以下の通りです。- Windows 7/8.1/10
- Windows Server 2008 R2/2012 R2/2016
- Windows Server Semi-Annual Channel
- Ubuntu 14.04/16.04/17.04
- Debian 8.7以降/9
- CentOS 7
- Red Hat Enterprise Linux 7
- OpenSUSE 42.2
- Fedora 25, 26
- macOS 10.12以降
公式なサポートはありませんが、以下のOS/プラットフォームでも利用できます。
- Arch Linux
- Kali Linux
- AppImage(多くのLinuxディストリビューションで利用可能)
公式なサポートはありませんが、以下のOSでも試験的なリリースが行われています。
- Windows on ARM32/ARM64
- Raspbian (Stretch)
Windows PowerShellとPowerShell Core違い
「Windows PowerShell」と「PowerShell Core」の特徴の違いです。幅広い環境での採用実績
「Windows PowerShell」は、10年以上幅広い環境で利用されています。.NET Frameworkと.NET Core
「Windows PowerShell」は、「.NET Framework(FullCLR)」上に構築される「PowerShell」です。一方「PowerShell Core」は、「.NET Core(CoreCLR)」上に構築される「PowerShell」です。
動作するプラットフォーム
「Windows PowerShell」は「.NET Framework」上に構築されるため、Windows上でのみ動作します。一方「PowerShell Core」はクロスプラットホームであり、「Windows」、「macOS」、「Linux」上で動作します。
これは「PowerShell Core」の基盤となっている「.NET Core」がクロスプラットホームで提供されているためです。
PowerShell Core 5.0/5.1について
「PowerShell Core 5.0/5.1」は「Microsoft Nano Server」の一部として「Microsoft Nano Server」向けに独占的にリリースされています。今までリリースされたバージョン
今までリリースされた「Windows PowerShell」のバージョンは、以下の通りです。- Windows PowerShell 1.0
- Windows PowerShell 2.0
- Windows PowerShell 3.0
- Windows PowerShell 4.0
- Windows PowerShell 5.0
- Windows PowerShell 5.1
すぐに利用可能
「Windows PowerShell」は、WindowsクライアントとWindowsサーバーに予め組み込まれており、すぐに利用できます。デフォルトでインストールされています。
実行ファイル
「Windows PowerShell」の実行ファイルは、「powershell.exe」です。一方「PowerShell Core」は、「Windows」では「pwsh.exe」であり、「macOS」と「Linux」では、「pwsh」です。
$PSVersionTable.PSEditionの設定
「Windows PowerShell 5.0/5.1」では、「$PSVersionTable.PSEdition」が「Desktop」に設定されます。一方「PowerShell Core」では、「$PSVersionTable.PSEdition」が「Core」に設定されます。
利用できる.NETの機能
「Windows PowerShell」は、「.NET Framework」ランタイムが提供する「C# コマンドレット」、「Add-Type」、「.NETのスタティックメソッドの呼び出し」といった様々な「.NET」ベースの機能を利用できます。言い換えれば、「.NET Framework」と「.NET Standard」が提供する機能を利用できるということです。
一方「PowerShell Core」は、「.NET Core」ランタイムが提供する「C# コマンドレット」、「Add-Type」、「.NETのスタティックメソッドの呼び出し」といった様々な「.NET」ベースの機能を利用できます。
言い換えれば、「.NET Core」と「.NET Standard」が提供する機能を利用できるということです。
サポート
「Windows PowerShell」は、「Windows」と「Windows Server」の最新リリースにおいて、致命的な不具合の修正サポートが提供されます。一方「PowerShell Core」は、「PowerShell Core Support Lifecycle 」に基づきサポートが提供されます。
PowerShell CoreのFAQ
「PowerShell Core」のFAQです。1.Windows PowerShellと共存できる?
共存できます。「PowerShell Core」は、「Windows PowerShell」と完全に環境が分離しています。
既存の「Windows PowerShell」環境に影響を与えることなく、「PowerShell Core」の機能を利用できます。
「PowerShell Core」を「MSI(インストーラー)」からインストールしようが、ZIPアーカイブからインストールしようが、「Windows PowerShell」環境に影響を与えることなく、「PowerShell Core」と「Windows PowerShell」を共存して利用できます。
2.PowerShell Coreで動作するモジュールは?
現在以下のモジュールが「PowerShell Core」のビルトインモジュールとして提供されています。- CimCmdlets
- Microsoft.PowerShell.Archive
- Microsoft.PowerShell.Diagnostics
- Microsoft.PowerShell.Host
- Microsoft.PowerShell.Management
- Microsoft.PowerShell.Security
- Microsoft.PowerShell.Utility
- Microsoft.WSMan.Management
- PackageManagement
- PowerShellGet
- PSDesiredStateConfiguration
- PSDiagnostics
- PSReadLine
これらのモジュールのリファレンスは、「PowerShell Module Browser」から参照できます。
また有効なモジュールの一覧は、以下のコマンドで表示できます。
Get-Command -Module Microsoft.PowerShell.Management
Windows PowerShellで利用可能な一部のコマンドレットは利用できない
「Windows PowerShell」で利用可能な一部の「コマンドレット」は、現在「PowerShell Core」から利用することができません。現在メンテナンスされている「コマンドレット」の一覧は、以下を参照してください。
3.他のMicrosoft製モジュールは?
まずMicrosoft製モジュールは、基本的に以下の3つのカテゴリーに分類されます。1.Windows client及びWindows Serverの一部として提供されるモジュール
これらのモジュールは、「Windows」インストール後に以下のコマンドで一覧を表示できます。
Get-Module -ListAvailable
上記のビルトインモジュール数より少なくなります。
2.Microsoftプロダクトの一部として提供されるモジュール
例えばシステムカレンダーアプリケーションは、アプリのインストール時に「PowerShell」モジュールをインストールする。3.PowerShell Galleryから提供されるモジュール
例えば「Azure PowerShell」は、「PowerShell Gallery」から提供されるモジュールです。サポートについて
上記3つのカテゴリーに属するすべてのモジュールは、「Windows」もしくは製品グループによって明示的にサポートが表明されていない限り、「PowerShell Core」で動作保証はありません。ただし「.NET Standard」及び「CDXML」の動作が保証されているため、「Windows PowerShell」向けに設計された多くのモジュールは、「PowerShell Core」と高い互換性があります。
「PowerShell Core」で利用するためこれらのモジュールを「PSModulePath」へ追加する方法は、以下を参照してください。
4.PowerShell GalleryのモジュールがPowerShell Coreで動作するかどうか調べるには
「PowerShell Gallery」のモジュールが「PowerShell Core」で動作するかどうか調べるには、「PSEdition_Core」タグで検索してください。詳細は以下を参照してください。
5.PowerShell Coreと互換性のあるモジュールやスクリプトを作るには
C#ベースのコマンドレット
C#ベースの「コマンドレット」を作成しているなら、「.NET Standard 2.0」と「PowerShell Standard」に従う必要があります。詳細は、以下を参照してください。
- Creating a cross-platform binary module with the .NET Core command-line interface tools
Building a C# Cmdlet with Visual Studio
現在「PowerShell Standard」のバージョンは、3.0プレビュー版になっています。
これは「PowerShell 3.0」〜「PowerShell 6.0」が対象になっています。
近々「PowerShell 5.0」 〜 「PowerShell 6.0」のより多くのAPI群を含む「PowerShell Standard 5.0」が登場する予定です。
PowerShellベースのコマンドレットやスクリプト
「PowerShell」ベースの「コマンドレット」やスクリプトを作成しているなら、.NETタイプ及び.NETアセンブリを使用している必要があります。加えてターゲットとしているプラットフォームで利用可能な「コマンドレット」とモジュールを使用している必要があります。
この作業を支援する「PSScriptAnalyzer」が近々登場する予定です。
6..NET CoreアプリケーションからPowerShell Coreをホストできる?
できます。詳細は以下を参照してください。
7.PowerShell Coreでリモート処理はできる?
できます。「PowerShell Core」は「WSMan」及び「SSH」経由で「PowerShell Remoting Protocol(PSRP)」の利用をサポートしています。
加えて「WSMan」上の「Windows PowerShell」と相互運用可能です。
ただしWindows以外のOS上の「WSMan」ベースのリモートでは、サポートされていない認証方式があります。
詳細は以下を参照してください。
8.PowerShell Coreのサポートポリシー
「PowerShell Core」のサポートポリシーは、「Microsoft Modern Lifecycle Policy」です。ユーザーは常に最新版の「PowerShell Core」を利用していくことになります。
「PowerShell Core」のサポートに関する詳細情報は、以下を参照してください。
9.PowerShell Coreに引き継がれなかった機能
「PowerShell Core」はクロスプラットホームで提供されるため、「Windows」専用の「Windows PowerShell」から引き継がれなかった機能がいくつかあります。またユーザーにあまり使われていない機能は、「PowerShell Core」に引き継がれていませんが、そう判断された機能の一部は今後「PowerShell Core」で利用できるようになるかも知れません。
ただしそれらの機能の多くは、引き継がれない予定です。
- PowerShell Workflows
- PowerShell Snap-ins
- WMIv1コマンドレット(Get-WmiObject/Invoke-WmiMethodなど)
CIM/WMIv2コマンドレット(Get-CimInstance/Invoke-CimMethod等への移行を推奨) - Desired State Configuration(DSC)リソースの利用
詳細は以下を参照してください。
10.Windows PowerShellの立ち位置は?
「Windows PowerShell 3.0/4.0/5.1」は「Windows lifecycle fact sheet」に基づき引き続きサポートされます。「Windows PowerShell 2.0」もサポートされていますが、非推奨になっています。
ただし「Windows PowerShell」に新機能の追加計画はありません。
また新しい「Windows Management Framework(WMF)」パッケージの提供予定もありません。
これは「Windows PowerShell」のリグレッションリスクが非常に小さいことを意味します。
従って既存のワークロードの安定版プラットフォームとして「Windows PowerShell」を利用することができます。