WinodwsのCUIにはコマンドプロンプトとPowerShellがあります。
今回はこの2つのCUIの歴史について簡単に解説します。
コマンドプロンプト
コマンドプロンプトは別名cmd.exeと呼ばれるWindows NT系に使用されているCUIです。
NT系とはWindows 95~Windows Meがメインストリームだった当時、個人向けPC(95、98、Me)を9x系と呼ぶのに対し、サーバー向けまたはワークステーション向けのOSのことを指します。
Windows XP以降、内部バージョンはすべてNT系に統合されたため、XP以降のWindows OSはすべてNT系となります。
コマンドプロンプトはMS-DOS時代から9x系時代に使用されていた「COMMAND.COM」および「DOSプロンプト」の後継のCUIです。
COMMAND.COMはMS-DOSに標準装備されている16bitアプリのCUIです。
9x系は32bitコードでカーネルが構成されているため、9x系から直接COMMAND.COMを起動することはできませんでした。
そこで仮想86モードを利用して仮想DOSマシンを実現しています。
この9x系で提供されていた仮想DOSマシンを「DOSプロンプト」と呼びます。
コマンドプロンプトは「COMMAND.COM」に比べて
- 矢印キーでコマンドの履歴を確認
- エラー時の詳細メッセージを出力
- Tabキーを使用したファイルやフォルダパスの補完
などの機能が実装されています。
また、コマンドプロンプトは32bit版と64bit版の2つがあります。64bit版はWOW64(64bit版のOSでWin62APIを実行できるシステム)を用いて32bitも扱うことができます。
CUIは以下のように表のようにまとめられます。
CUI | ビット | Windows OS |
---|---|---|
COMMAND.exe | 16bit | MS-DOS |
DOSプロンプト | 32bit(仮想OSマシン) | Windows 9x系 |
cmd.exe(32bit版) | 32bit | Windows NT系(XP~11) |
cmd.exe(64bit版) | 64bit | Windows NT系(Vista~11) |
Powershell | 32bit,64bit | Windows 7~WIndows11 |
表には書いてありませんがOS/2にもDOSプロンプトとコマンドプロンプトが提供されています。OS/2とはIBMとMicrosoftが発売したPC用の16bitおよび32bitのMS-DOS後継のOSです。
PowerShell
PowerShellはWindows 7から提供されているコマンドプロンプト後継のCUIです。
XPやVistaにも追加提供されています。
PowerShellは、.NET FrameWork(アプリケーション開発・実行環境)をベースにオブジェクト指向言語として開発されたシェル(カーネルとユーザーを繋ぐ伝達係)です。
PowerShellで用いられるコマンドは「コマンドレット」と呼ばれています。
コマンドレットはコマンドプロンプトのコマンドとは異なります。
コマンドレットを使用することでコマンドプロンプトでは難しいとされていた処理が簡単にできるようになりました。
それだけでなく、Unix系のシェルやコマンドプロンプトで使用しているコマンドがコマンドレットのエイリアスとして割り当てられています。
また、PowerShell自体がスクリプト言語であるため、PowerShell内に繰り返処理や条件分岐などの処理を実装させることができます。
PowerShellには実行ポリシーというものがあり、悪意あるスクリプトが実行できないようになっています。Powershellはコマンドプロンプトに比べ機能が大きく向上した反面、危険度も大きくなったのです。
デフォルトではRestricted(すべてのスクリプトが実行不可能)になっているため、PowerShellでスクリプトを実行したい場合、実行ポリシーを変更する必要があります。
Windows 11でのCUI
Windows 10までは、直接コマンドプロンプトやPowerShellを開く必要がありました。
しかし、Windows11からはWindows TerminalがコマンドプロンプトやPowerShellをホストすることがデフォルト機能として実装されることになりました。
これにより、Windows Terminal1つ開けば、コマンドプロンプトとPowerShellを同時に扱いやすくなりました。
個人的にはすごくうれしいです。
最後に
コマンドプロンプトはPowerShellの登場によっていずれ消えてしまうのではないかと思われていましたが、
Microsoft公式からは「Windows OSとcmd.exeは依存性がとても高いため、消えることはない」としています。
どれだけOSがアップデートされてもコマンドプロンプトが消えることはないでしょう。