PowerShell Core とは?

6月 13, 2019 セキュリティとコンプライアンス, MOVEit

PowerShell が最初に登場したのは、10年以上前の2006年でした。Jeffrey Snover によって考案され、Microsoft が Windows 用に配布したスクリプト言語は、やがて自動化とスクリプティングの場面で多用されるようになり、古い VBScript にとって代わるスクリプト言語の代表として位置づけられるようになりました。

これまでの経緯

登場したときから PowerShell 5.0 まで、PowerShell は技術的には Windows PowerShell であり、Windows でしか利用できないものでした。Windows PowerShell は、Windows .NET フレームワーク上で動作し、Windows 管理フレームワークパッケージの一部として厳しい要件をつけてバンドルされていました。そこへ、2017年、PowerShell 5.1 が “Core” バージョンの概念と共に登場しました。

Windows PowerShell "Core" 5.1は、完全な .NET フレームワークではなく .NET Core 上で実行され、Windows Server 2016 Nano Serverにバンドルされています。PowerShell は、PowerShell 5.1以降、前と同じではなくなりました。2018年の PowerShell のリリースに伴い、Windows PowerShell は積極的に開発されなくなり、新しい PowerShell である PowerShell Core 6.0 が発表されました。

PowerShell Core で何が変わったか

PowerShell Core は新世代の PowerShell として登場しました。PowerShell Core に関して、2つの大きな発表がありました。PowerShell Core はオープンソースであり、Linux、MacOS、そしてWindows上で動作することが可能なクロスプラットフォームです。PowerShell は、もはやWindowsシステムだけに対応するものではなく、開発者は自分の環境のほぼすべてのオペレーティングシステム上で走るスクリプトを書くことができます。

PowerShell には、今は、Windows PowerShell と PowerShell Core の2つの形式があります。管理者は、どうすれば PowerShell Core に移行できるか慌てて対応策を考えようとするかもしれませんが、Microsoft では、移行を可能な限りスムーズにしようと、Windows PowerShell と並行して実行できるように Core を開発しました。ただし、PowerShell Core は、Windows PowerShell とまったく機能同等にはなっていません。Windows PowerShellで使用できるコマンドで、PowerShell Core では使用できないものもたくさんあります。ですが、Jim Birley のツイッターで、PowerShell Core 7.0 では、Windows PowerShell とのコンパチビリティが最大90%になると発表されました。

もう1つの注目すべき変更点は、PowerShell の powershell.exe が pwsh.exe になり、サイドバイサイドインストールが可能になったことです。また、PowerShell Core は Docker をネイティブにサポートしているので、アドオン・モジュールがなくても Docker コンテナを理解することができます。

PowerShell Core 6.0 で SSH をサポート

多くの管理者から SSH のサポートが求められており、Microsoft は以前から PowerShell/SSH の実装に取り組んできました。PowerShell Core 6.0 で、PowerShell Remoting Protocol (PSRP) が従来の WinRm ベースの実装に加えて、SSH をサポートするようになりました。つまり、Enter-PSSession や New-PSSession のようなコマンドレットで、SSH を使用した認証が可能になったということです。リモートセッションは、PowerShell を OpenSSH ベースのサーバーを宛先としたサブシステムとして登録すれば、問題なく動作します。

現在、PowerShell Core はバージョン6.2 ですが、大きな機能アップグレードは行われておらず、メンテナンスサイクルに入っているようです。PowerShell は今はオープンソースになっているので、バグフィックスや PowerShell への新機能追加は、コミュニティに依拠することになります。

Adam Bertram

Adam Bertram is a 20-year veteran of IT. He’s currently an automation engineer, blogger, independent consultant, freelance writer, author, and trainer. Adam focuses on DevOps, system management, and automation technologies as well as various cloud platforms. He is a Microsoft Cloud and Datacenter Management MVP and efficiency nerd that enjoys teaching others a better way to leverage automation.