このページの本文へ

前へ 1 2 次へ

Windows Info 第272回

あらためて「PowerShell」の現状と登場後の経緯を整理する

2021年04月25日 10時00分更新

文● 塩田紳二 編集● ASCII

  • この記事をはてなブックマークに追加
  • 本文印刷

 前々回に「.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と呼ばれることになる。

2006年に開催されたハードウェア開発者向けイベントのWinHECでは、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のプレビュー期間中のことである。

前へ 1 2 次へ

カテゴリートップへ

この連載の記事

注目ニュース

ASCII倶楽部

プレミアムPC試用レポート

ピックアップ

ASCII.jp RSS2.0 配信中

ASCII.jpメール デジタルMac/iPodマガジン