前々回に「.NET」の話をしたので(「あらためて「.NET」について整理する」)、ついでと言ってはなんだが、今回はPowerShellについても経緯と現状をまとめてみることにする。
2005年9月に米国で開催されたMicrosoftの開発者向けイベントProfessional Developers Conferenceで発表されたMonad。これが後に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のプレビュー期間中のことである。

この連載の記事
-
第508回
PC
Scalable Vector Graphics(SVG)そもそも何なのか? -
第507回
PC
Windows 11の「開発者モード」とは何か? -
第506回
PC
Windows 11は早くも来秋登場の26H2プレビューの準備が始まる -
第505回
PC
結構変化しているWindows 11のエクスプローラーの基本設定を見直す -
第504回
PC
新しいOutlookとOutlook Classic、そろそろ古いOutlookとExchangeの組み合わせは引退の頃合いか -
第503回
PC
機能が増えたこともあり、寄せ集めから統合化に進むWindowsの便利ツール「PowerToys」 -
第502回
PC
Windows 11でBluetoothのオーディオ新規格「Bluetooth LE Audio」を試す -
第501回
PC
Windows 11 Ver.25H2での変更点、新機能を整理する -
第500回
PC
Windows 11 Ver.25H2が完成した -
第499回
PC
Windowsでの致命的だが回復可能なエラーに備える手段を2つ紹介 -
第498回
PC
Windows Terminalの安定版V1.23が公開 設定UIが改良される - この連載の一覧へ













