前々回に「.NET」の話をしたので(「あらためて「.NET」について整理する」)、ついでと言ってはなんだが、今回はPowerShellについても経緯と現状をまとめてみることにする。
例によって、また用語の話からで恐縮だが、「PowerShell」には「Windows PowerShell」と「PowerShell Core」があり、「PowerShell Core」は、Ver.7.0から「PowerShell 7」という名称が正式になった。
基本的に「Windows PowerShell」はWindowsに付属している「PowerShell」のことで、「PowerShell Core」はオープンソースでマルチプラットフォーム(LinuxとmacOSに対応)の「PowerShell」と考えれば間違いない。ただしPowerShell 7は、現在Windowsに標準添付されているWindows PowerShellの後継となる予定で、Windows PowerShellは、マイナーアップデートはあるかもしれないが終了す る方向だ。
PowerShellの登場からこれまで
Windowsの標準的なコマンドラインインタープリター(シェル)であるCMD.EXEは、MS-DOSのCOMMAND.COMをそのまま32bit化することで作られた。しかし、MS-DOS時代のメモリが潤沢に利用できない環境向けに作られたCOMMAND.COMは簡易なものだった。それでもバッチファイルの互換性などから、大幅な仕様変更は困難だった。
MicrosoftはWindows 95以降でCOMによるコンポーネント化を進めたが、CMD.EXEはそれに追従することができなかった。そこで開発されたのがWindows Scripting Host(WSH)だ。WSHは、COMを直接扱うことができ、さまざまなシステムプログラミングも可能なスクリプト言語だったが、ファイルに書かれたスクリプトを実行する言語システムであったため、コマンドラインインタープリターはCMD.EXEが引き続き使われた。そのために実行できるスクリプトは高度になったものの、コマンドライン自体は変わらなかった。
こうした反省から、Windows Vistaの開発では、新しいコマンドラインインタープリターが作られることになった。コードネーム「Monad」として発表されたシェルが、PowerShellと呼ばれることになる。
PowerShellの目的には大きく2つある。1つは高度なコマンドラインインタープリターとして動作すること、もう1つは.NET Frameworkを簡単に呼び出して処理を記述できることである。CMD.EXEでは、機械語プログラムを利用しないと、Win32APIを利用するコマンドを作成できなかった。このために新機能が搭載されると、管理用のコマンドも作成する必要があった。これをカバーしようとしたのがWSHだったが、シェルではなかったため、作業環境はMS-DOS時代とほとんど変わらなかった。
特に問題になったのが、Windows Serverの管理ツールだ。Unixの経験がある管理者は、コマンドラインでの処理を望んだし、管理ツールをすべてGUI化して用意するのも簡単ではない。Windows 2000のときにネットワーク管理専用のNetShが作られたが、シェルというわりには、ネットワーク関連の設定コマンドしか実行できず、複雑なコマンドを1つのプログラムにまとめたものでしかなかった。
PowerShellは、Vistaの開発期間中にプレビューなどが開始されたが、Vistaの開発がドタバタしたためか、最初のリリースには含まれず、あとからダウンロードする形になった。しかしそれ以降は、Windowsには必ずPowerShellが搭載されるようになり、Windows 8では、CMD.EXEの代わりにするかを選択できるようになった。
.NET Frameworkの機能を機械語プログラムで書かずに呼び出しできることを想定したPowerShellは、Windows 8.1まではWindowsのバージョンアップと連動してバージョンがあがった。ただし、1つ前のWindowsでも利用できるように、.NET Frameworkのバージョンをあとから追いかけるようになっていた。たとえば、Windows 8に搭載されたPowerShell 3.0は、.NET Framework 4.0で動作する。しかし、Windows 8に搭載されていた.NET FrameworkはVer.4.5だった。
PowerShellの大きな転機になったのは、PowerShell Coreの開発とオープンソース化である。2016年に現在使われているWindows PowerShell 5.1が登場したが、これを.NET Coreで開発した「Core」エディションが同時に登場している。.NET Frameworkで開発されたWindows PowerShellは、Desktopエディションと呼ばれる。
同年にPowerShell Coreは、オープンソース化されLinuxなどへの対応が発表された。正式版となるPowerShell Coreには、バージョン番号として6.0が付けられた。この時点で、Windows PowerShellをPowerShell Coreに置き換えることが構想されていたのだと考えられる。ただし、Windows PowerShell 5.1の後継となることが正式に発表されたのは2019年、PowerShell 7のプレビュー期間中のことである。
この連載の記事
-
第432回
PC
ウェブブラウザが切り開いたWindowsでのタブアプリケーション -
第431回
PC
Windows上でユニコードを「見る」方法 -
第430回
PC
WindowsからWordPadが廃止! RTF(Rich Text Format)はどうなる? -
第429回
PC
Windows Updateの「利用可能になったらすぐに最新の更新プログラムを入手する」はオンにした方がいいか? -
第428回
PC
Google/Bingで使える検索オプション -
第427回
PC
WindowsのPowerShellのプロファイルを設定する -
第426回
PC
WindowsでAndroidスマホをWebカメラにする機能を試した -
第425回
PC
無料で使えるExcelにWord、Microsoft 365のウェブ版を調べた -
第424回
PC
Windowsの基本機能であるクリップボードについてあらためて整理 -
第423回
PC
PowerShellの今を見る 2つあるPowerShellはどっち使えばいい? -
第422回
PC
Windows 11の目玉機能が早くも終了、Windows Subsystem for Android(WSA)を振り返る - この連載の一覧へ