Windowsには「コマンドプロンプト」と「PowerShell」という2つの黒い画面があります。
見た目は似ていますが、できることも仕組みも実は全然違うんです!
🪟 はじめに
「コマンドプロンプト(cmd)」と「PowerShell(PS)」、どちらもWindowsで操作や設定を行うための“コマンドラインツール”です。
しかし、中身の仕組み・使えるコマンド・得意分野が異なります。
| 比較項目 | コマンドプロンプト(cmd) | PowerShell(PS) |
|---|---|---|
| 登場時期 | Windows NT時代(1990年代) | Windows XP時代(2006年) |
| 言語ベース | MS-DOS | .NET Framework |
| 主な用途 | 基本的なファイル操作・バッチ処理 | システム管理・自動化スクリプト・API連携 |
| 拡張子 | .bat |
.ps1 |
| コマンド例 |
dir, copy, ipconfig
|
Get-ChildItem, Copy-Item, Get-NetIPConfiguration
|
| 出力形式 | 文字列(テキスト) | オブジェクト(構造化データ) |
| 機能拡張性 | ほぼなし | 非常に高い(モジュール追加可) |
🧠 ざっくりイメージ
-
コマンドプロンプト:
👉「古いけど軽くて単純な道具箱」
例:コピーや削除などの簡単な操作がすぐできる。 -
PowerShell:
👉「高性能な管理ツール」
例:ネットワーク設定、ユーザー管理、ログ取得などをスクリプトで自動化できる。
🧩 実際のコマンド比較
| 操作したいこと | コマンドプロンプト | PowerShell |
|---|---|---|
| ファイル一覧を表示 | dir |
Get-ChildItem または ls
|
| IPアドレス確認 | ipconfig |
Get-NetIPConfiguration |
| コピー | copy test.txt D:\ |
Copy-Item test.txt D:\ |
| 現在のフォルダ表示 | cd |
Get-Location |
💡 PowerShellではUNIX風の
lsやcdなども動くため、MacやLinuxを触ったことがある人にも馴染みやすいです。
⚙️ 出力の違い
コマンドプロンプトの出力(文字列)
C:\> ipconfig
IPv4 アドレス . . . . . . . . . . . : 192.168.0.5
PowerShellの出力(オブジェクト)
PS C:\> Get-NetIPConfiguration | Select-Object -Property IPv4Address
IPv4Address
-----------
192.168.0.5
PowerShellでは出力結果を**構造化データ(オブジェクト)**として扱えるため、
プログラム的な処理(フィルタ・抽出・CSV出力など)が簡単に行えます。
🧰 実務での使い分け
| シーン | おすすめツール | 理由 |
|---|---|---|
| 一時的なファイル操作 | コマンドプロンプト | 起動が速く、慣れたコマンドが使える |
| システム管理・自動化 | PowerShell | 設定変更やログ収集をスクリプト化できる |
| ネットワーク診断 | 両方OK |
ping, tracert, netstat など共通コマンド多数 |
💬 よくある質問(FAQ)
Q. cmdとPS、どちらを使えばいいの?
→ ちょっとした操作だけならcmd、
管理や自動化をしたいならPowerShellがおすすめです。
Q. 同じコマンドでも動作が違うことがある?
→ あります。例えばdirコマンドはPowerShellでも動きますが、内部的にはGet-ChildItemとして処理されます。
Q. 管理者として実行しないと動かないのはなぜ?
→ システム設定に関わる操作(例:サービス起動、レジストリ変更)は管理者権限が必要だからです。
🧩 図解イメージ(スライド向け)
+------------------------------------+
| コマンドプロンプト (cmd.exe) |
| → DOS互換 |
| → テキストベース |
+------------------------------------+
↓ 進化
+------------------------------------+
| PowerShell (powershell.exe) |
| → .NETベース |
| → オブジェクト指向・自動化可能 |
+------------------------------------+
🏁 まとめ
- cmd は「昔ながらの手動ツール」
- PowerShell は「現代的な自動化ツール」
- どちらも目的に応じて使い分けるのが◎