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 は「現代的な自動化ツール」
- どちらも目的に応じて使い分けるのが◎