カテゴリー
Windows

PowerShell とコマンドプロンプトの違いとは?

Windows でちょっとできる感じの人が表示させる黒い画面。これは cmd として知られています。しかし、もうひとつ似たような存在があるのです。それが PowerShell です。見た目はそっくりでも、中身はまったくの別物です。

Windows の 2 つのコマンドライン環境(CLI)

cmd の特徴

  • 1980 年代(MS-DOS 時代)に登場
  • 文字列ベースのシンプルな構文
  • dir copy cdなどの基本コマンドを使用
  • 拡張性が低い、スクリプトにも制限が多い
  • すべての出力は文字列として扱われる
  • 実行ファイルはcmd.exe

PowerShell の特徴

  • 2006 年(Windows PowerShell 1.0)発表
  • .NET ベースのオブジェクト指向構文
  • Get-ChildItem Copy-Item Set-Locationなどを使用
  • 拡張性が非常に高く、関数・モジュール・パイプ処理が豊富
  • 出力はオブジェクトとして扱われ、プロパティにアクセスできる
  • 実行ファイルは powershell.exe または pwsh.exe(PowerShell 7 以降)

基本的な起動方法

cmd(コマンドプロンプト)の起動方法

  • スタートメニューを開く
  • cmdまたはコマンドプロンプトと入力
  • 表示されたコマンドプロンプトをクリック

PowerShell の起動方法

  • スタートメニューを開く
  • PowerShellと入力
  • Windows PowerShell または PowerShell をクリック

※それぞれファイル名を指定して実行からも起動可能。また、 Microsoft 公式の多機能ターミナルアプリ Windows Terminal を使うと、ひとつのウィンドウ内のタブで PowerShell やコマンドプロンプトを切り替えてアクセスすることも可能です。

dir コマンドで見る実際の違い

cmd の場合

2025/05/12  09:30    <DIR>          .
2025/05/12  09:30    <DIR>          ..
2025/05/11  18:22             4,512 log.txt
2025/05/11  18:23             8,192 data.csv

出力は文字列。すべて 1 行に情報が埋まっており、加工や条件抽出は難しく、findstrfor文を組み合わせる必要があります。

PowerShell の場合

Directory: C:\Users\User\Documents

Mode                LastWriteTime     Length Name
----                -------------     ------ ----
-a----        2025/05/11     18:22       4512 log.txt
-a----        2025/05/11     18:23       8192 data.csv

見た目は似ていますが、出力は FileInfo オブジェクト。ファイル名、サイズ、日時などが個別のプロパティとして扱えます。(実際は Get-ChildItem のエイリアス)

たとえば、 1MB を超えるファイルだけを抽出するには以下のように記述できます。

Get-ChildItem | Where-Object { $_.Length -gt 1MB }

オブジェクトのプロパティに直接アクセスできるため、文字列操作は不要です。

cmd のスクリプト

  • 拡張子は.bat または.cmd
  • 構文はシンプルだが、処理の自由度は低い
  • 条件分岐やループ処理に制限があり、複雑な処理には不向き

PowerShell のスクリプト

  • 拡張子は.ps1
  • .NET ベースで構造的なスクリプトが書ける
  • 条件分岐・関数・ループ・モジュールなどを使った高度な自動化が可能

どちらを使えばいいか

cmd が向いているケース

  • シンプルなファイル操作
  • 軽くて素早い起動
  • 古いバッチ資産の利用

PowerShell が向いているケース

  • 複雑なファイル管理やログ処理
  • 管理ツールの作成や自動化
  • 出力を柔軟に加工したいとき

今開いているのはどっち?

以下のコマンドを実行してみてください。

$PSVersionTable

これが動けば PowerShell 、 cmd ではエラーになります。

UNIX との違い

PowerShell は UNIX 系のシェル(Bash など)と似た操作感がありますが、仕組みは大きく異なります。

UNIX シェル(例:Bash)の特徴

  • パイプ処理は文字列を連携して渡す
  • awkgrep sedなどのテキスト処理コマンドを組み合わせる
  • 出力は基本的にテキストベースで加工には文字列処理が必要

PowerShell の特徴(UNIX との比較において)

  • パイプ処理でオブジェクトをそのまま渡す
  • .NET ライブラリや独自モジュール、関数が豊富に用意されている
  • 出力はオブジェクトで構造を持ち、プロパティ(.Name や .Length)に直接アクセスできる

Bash のような操作感がありながら、実際は.NET ベースのオブジェクト指向環境。 PowerShell は UNIX の使いやすさと Windows の強力な管理機能を融合したシェルです。

まとめ

  • cmd は古くからあるシンプルなテキストベースのシェル
  • PowerShell はオブジェクトを操作できるプログラマブルな環境
  • 見た目は似ていても中身は別物。目的に応じて使い分けるのがベスト

この記事が役に立ったら「いいね」!

profile image

執筆:R3098

WEB サービス構築・監修が生業です。 WordPress 関連では Aurora Heatmap などプラグイン開発も行っています。悩めるサイト運営者の無料相談受付けます!

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です

このサイトは reCAPTCHA によって保護されており、Google のプライバシーポリシー および 利用規約 に適用されます。

reCaptcha の認証期間が終了しました。ページを再読み込みしてください。