PowerShell Core 6.0登場 - クロスプラットフォーム版としてリニューアル
Microsoftは2018年1月10日(米国時間)、「PowerShell Core 6.0: Generally Available (GA) and Supported!|PowerShell Team Blog|Microsoft」において、PowerShellの新しいエディションとなる「PowerShell Core」を発表した。
このシェルはもしかすると多くのエンジニアや運用者にとって強力なツールとなる可能性がある。PowerShell Coreはクロスプラットフォームで利用できるオープンソースソフトウェア版のPowerShell。公式にサポートしているオペレーティングシステムは次のとおりだ。
- Windows 10
- Windows 8.1
- Windows 7
- Windows Server 2016
- Windows Server 2012 R2
- Windows Server 2008 R2
- Windows Server Semi-Annual Channel
- macOS 10.12+
- Ubuntu 17.04
- Ubuntu 16.04
- Ubunty 14.04
- Debian 9
- Debian 8.7+
- Red Hat Enterprise Linux 7
- CentOS 7
- OpenSUSE 42.2
- Fedora 26
- Fedora 25
実験段階として提供されているパッケージや、コミュニティベースで提供されているパッケージなどもある。次のオペレーティングシステム向けは公式ではないが利用できる状況になっている。
- Windows on ARM64
- Windows on ARM32
- Raspbian (Stretch)
- Arch Linux
- Kali Linux
- AppImage
このシェルは、Windows、macOS、Linuxといった複数のオペレーティングシステムで利用できる便利なツールとして活躍していく可能性がある。サーバ管理者やデスクトップ管理を任されているエンジニアにとって大きな宝となるかもしれない。
『PowerShell Core』と『Windows PowerShell』
機能の解説に入る前に「Windows PowerShell」と「PowerShell Core」の違いをはっきりさせておく必要がある。この2つの実装は似て非なるものだ。
それぞれを簡単にまとめると次のようになる。
- Windows PowerShell : WindowsおよびWindows Serverに同梱して出荷されてきた、これまで10年に渡って使われたオリジナルのPowerShell。.NETフレームワークを使って開発されており、Windows専用。開発は終了しており、今後はバグフィックスのみが行われる。コマンドはpowershell.exe。
- PowerShell Core : クロスプラットフォームで動作するPowerShell実装。.NET Coreを使って開発されており、複数のプラットフォームで動作。開発は活発で、今後しばらくは新機能の開発などが積極的に進められる見通し。コマンドはpwsh.exeまたはpwsh。
Windows PowerShellはこれまで使われてきたPowerShellで、いわゆるPowerShellといえばこれを指す。Windows PowerShellは当然Windowsでしか動作しないのだが、今後の開発計画は何もない状態だ。つまり、現在リリースされているバージョンを最後に、これ以上新しいバージョンが公開されることはない。存在し続け、使われ続けるものの、現在の枠を超えることはないというものだ。
PowerShell CoreはWindows PowerShellをリファクタリングして開発された新しいPowerShellで、macOSやLinuxでも使用できる。また、Windows PowerShellであまり使われていなかった機能などを削除しているのも特徴だ。Windows PowerShellとPowerShell Coreはよく似ているしそれなりに互換性もあるが、互換性がない部分もある。
Windowsだけを使うというのであれば、「Windows PowerShell」でも弊害はない。しかし、macOSやLinuxも使うとか、将来に向けて学習内容にWindows以外の含みを持たせておきたいと考えるなら、「PowerShell Core」の方を学んでおいた方がよいだろう。
Windows、macOS、Linuxのすべてで使えるOS寄りのスクリプト技術
LinuxやUNIX系オペレーティングシステムを使っているなら、コマンドとシェルスクリプト(特に/bin/sh)の重要性は理解しているだろう。macOSでも同じだ。しかし、この技術はWindowsでは使いにくい。
WindowsではWindows PowerShellでシステム管理を自動化できるが、これはWindowsでしか使えない。この技術はこれまではLinuxやmacOSでは効果的に利用できなかった。
最近はWindows 10でLinuxを実行する技術であるWindows Subsystem for Linux (WSL)回りの開発が進んだことで、WindowsでもLinuxを実行できるようになった。しかし、WSLで動作するLinuxからはWindowsは操作できない。Windows PowerShellのようには使えない。
ではクロスプラットフォームのスクリプト言語を使えばよいではないかということになるのだが、汎用目的のスクリプト言語はオペレーティングシステムの操作にはあまり向いていないというか、それをやろうとすると逆に手間がかかってしまう。
その点、PowerShellはシステム管理に主眼をおいて開発されたWindows PowerShellの系譜でありながら、macOSやLinuxでも利用できる。さらに、OSSにおいて重要な点である開発の進捗も非常に活発。オペレーティングシステムに特化したWindows PowerShellや/bin/sh+システムコマンドにはかなわないが、それなりにシステム管理も期待できるようになるんじゃないかと思う。
つまり、PowerShell Coreはつぶしの効く技術になっていく可能性ある。普段からWindowsもmacOSもLinuxも”チャンポン”した環境を使っているエンジニアにはどうということもないが、WindowsのエンジニアがLinuxを管理するとか、macOSでスクリプトを組むということになると、最初のハードルは結構な高さに感じるだろう。PowerShell Coreはそこを埋めてくれる可能性がある。
今後の普及や発展も見込みつつ、連載を開始したいと思う。