LoginSignup
3
3

コマンドプロンプトとPowerShell

Posted at

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がアップデートされてもコマンドプロンプトが消えることはないでしょう。

3
3
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
3
3