INDEX
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 行に情報が埋まっており、加工や条件抽出は難しく、findstr
やfor
文を組み合わせる必要があります。
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)の特徴
- パイプ処理は文字列を連携して渡す
awk
やgrep
sed
などのテキスト処理コマンドを組み合わせる- 出力は基本的にテキストベースで加工には文字列処理が必要
PowerShell の特徴(UNIX との比較において)
- パイプ処理でオブジェクトをそのまま渡す
- .NET ライブラリや独自モジュール、関数が豊富に用意されている
- 出力はオブジェクトで構造を持ち、プロパティ(.Name や .Length)に直接アクセスできる
Bash のような操作感がありながら、実際は.NET ベースのオブジェクト指向環境。 PowerShell は UNIX の使いやすさと Windows の強力な管理機能を融合したシェルです。
まとめ
- cmd は古くからあるシンプルなテキストベースのシェル
- PowerShell はオブジェクトを操作できるプログラマブルな環境
- 見た目は似ていても中身は別物。目的に応じて使い分けるのがベスト
この記事が役に立ったら「いいね」!