「PowerShell、触ったほうがいいのは分かってるんだけど、結局 cmd で済ませちゃうんですよね」
情シスをやっていると、こういう声をよく聞きます。僕も、cmd 歴が長い分、ずっとそうでした。
そこで今回から全5回で、情シス担当が、コマンドプロンプトから PowerShell へ乗り換えるための入門シリーズを書きます。教科書の翻訳ではなく、Windows 端末の調査や日々の運用で「これ、使える!」となる順番に並べました。
| 回 | テーマ | 到達目標 |
|---|---|---|
| ① 今回 | cmd との違いと、コマンドの読み方(命名規則) | コマンドを自分で調べられる |
| ② | 情シスが使う基本コマンド10選 | GUI を開かずに PC の状態を調べられる |
| ③ | パイプラインとオブジェクト | 大量の情報から必要な行だけ拾える |
| ④ | スクリプト入門と実行ポリシー | 処理を .ps1 にして使い回せる |
| ⑤ | 実践:CSV 出力とログ | 調査結果を記録・共有できる |
この記事のルール ✔ が付いたものは、2026年10月時点で Microsoft の公式ドキュメントに載っていることを確認した内容です。コマンドの出力と画面は、僕の PC(Windows 11・Windows PowerShell 5.1)で実際に動かしたものです。PC 名など、僕の環境が分かるものは載せていません。
結論:PowerShell は「文字」ではなく「モノ」を扱う
cmd は、画面に出る文字を相手にします。PowerShell は、プロセスやサービスといったモノ(オブジェクト)を相手にします。これが一番の違いで、第3回で「なぜ便利なのか」を腹落ちさせます。
今回は、その前の準備運動です。
| コマンドプロンプト(cmd) | PowerShell | |
|---|---|---|
| 扱うもの | 文字 | オブジェクト(名前や状態などの項目を持つ) |
| コマンド名 | dir、ipconfig など、バラバラ |
動詞-名詞 にそろっている(Get-Process など) |
| 調べ方 | /? を付ける |
Get-Help、Get-Command、Get-Member |
| 絞り込み・並べ替え | 苦手(findstr や sort で頑張る) |
標準のコマンドでできる(第3回) |
| スクリプト | .bat |
.ps1(変数・if・foreach・例外処理が使える) |
Windows PowerShell 5.1 と PowerShell 7
「PowerShell」と言っても、実は2種類あります。
| Windows PowerShell 5.1 | PowerShell 7 | |
|---|---|---|
| 起動するファイル | powershell.exe |
pwsh.exe ✔ |
| 土台 | .NET Framework | .NET(クロスプラットフォーム)✔ |
| 位置づけ | Windows 11 に入っている、昔からのもの | 新しい世代。5.1 と並べてインストールできる ✔ |
| 7 で変わること | - | Get-WmiObject は無くなり、Get-CimInstance を使う ✔。ISE も同梱されない ✔ |
このシリーズは、Windows PowerShell 5.1 を前提にします。僕の Windows 11 では、スタートメニューから開くと 5.1 でした。どちらでも動く基本コマンドを中心に書き、違いが出るところは、その都度、注記します。
実際に、僕の PC には両方が入っていて、バージョンはこう見えます。

$PSVersionTable.PSVersion が 5.1、pwsh 経由で 7.6.6 が出ています。バージョンが違うと、使えるコマンドや出力が変わるので、「どっちで開いているか」は、最初に確かめるクセを付けておくと安心です。
起動のしかた
- スタートメニューで「PowerShell」と入力して開く(普通の権限)
Win + X→ 「ターミナル」(Windows Terminal で PowerShell が開く)- 管理者権限が要るとき:アイコンを右クリック → 「管理者として実行」
管理者権限は、必要なときだけ。 設定を変えたり、サービスを止めたりする場面が増えるので、普段は普通の権限で開く習慣にしておくのがおすすめです。
コマンドの読み方:動詞-名詞(命名規則)
PowerShell のコマンド(コマンドレット)は、動詞-名詞の形で名前が付いています ✔。
Get-Process= プロセスを取得するStop-Service= サービスを止めるRemove-Item= 項目を削除する
動詞は、勝手な言葉ではなく、承認された動詞の中から選ばれています ✔。同じ意味で別の言葉を使わないルールで、たとえば削除は、いつも Remove です(Delete は使わない)✔。
| 動詞 | 意味 | 例 |
|---|---|---|
| Get | 取得する | Get-Process |
| Set | 設定する(書き換える) | Set-Location |
| New | 新しく作る | New-Item |
| Remove | 削除する | Remove-Item |
| Test | 確認・検証する | Test-Connection |
| Start / Stop | 開始する / 止める | Start-Service / Stop-Service |
| Import / Export | 取り込む / 外へ出す | Import-Csv / Export-Csv |
動詞を覚えれば、知らないコマンドも、だいたい意味が読めます。 Get- は読み取りだけなので安全、Set-・Remove-・Stop- は何かが変わる、という目安にもなります。
動詞の一覧は、Get-Verb で見られます ✔。
Get-Verb | Select-Object -First 5
僕の PC(5.1)では、承認された動詞は、全部で98個でした。Common(共通)が34個、Data が24個、Lifecycle が20個、ほかに Diagnostic、Security、Communications、Other がありました。
迷子にならない3点セット
コマンドを全部覚える必要はありません。次の3つを知っていれば、調べながら進められます。
| 知りたいこと | コマンド | 例 |
|---|---|---|
| こんなコマンドある? | Get-Command |
Get-Command -Verb Get -Noun *Service* |
| 使い方は? | Get-Help |
Get-Help Get-Process -Examples |
| 結果に何が入ってる? | Get-Member |
Get-Process の結果に付ける(下の例) |
Get-Process | Get-Member -MemberType Property
Get-Process が返す「モノ」には、HandleCount や HasExited といった項目(プロパティ)が入っています。第3回で、この項目を使って絞り込みます。
ひとつ、僕の環境でのハマりどころです。Get-Help Get-Process -Examples を打っても、使用例が 0件で、構文だけが出ました。ヘルプ本体が、まだダウンロードされていなかったのが原因です。Update-Help を、管理者権限の PowerShell で一度実行すると、使用例も出るようになります。
cmd と PowerShell の対比表(エイリアスつき)
手癖のあるコマンドを、PowerShell ではどう書くかをまとめました。「エイリアス」は、正式名の短い別名です(Get-Alias で確認できます)。表のコマンドとエイリアスは、すべて僕の PC(Windows PowerShell 5.1)で、実在を確認したものです。
ファイル・フォルダー
| やりたいこと | コマンドプロンプト | PowerShell(正式名) | エイリアス |
|---|---|---|---|
| 現在のフォルダーを知る | cd(引数なし) |
Get-Location |
pwd、gl |
| フォルダーの一覧 | dir |
Get-ChildItem |
dir、ls、gci |
| フォルダーを移動 | cd C:\Temp |
Set-Location C:\Temp |
cd、sl、chdir |
| フォルダーを作る | mkdir lab |
New-Item -ItemType Directory lab |
mkdir(関数)、md、ni |
| ファイルをコピー | copy a.txt b.txt |
Copy-Item a.txt b.txt |
copy、cp、cpi |
| ファイルを移動 | move a.txt D:\ |
Move-Item a.txt D:\ |
move、mv、mi |
| 名前を変える | ren a.txt b.txt |
Rename-Item a.txt b.txt |
ren、rni |
| ファイルを削除 | del a.txt |
Remove-Item a.txt |
del、rm、ri、erase |
| フォルダーごと削除 | rd /s lab |
Remove-Item lab -Recurse |
rd、rmdir、rm |
| 中身を表示 | type a.txt |
Get-Content a.txt |
type、cat、gc |
| 書き込む(上書き) | echo hello > a.txt |
Set-Content a.txt 'hello' |
sc |
| 追記する | echo hi >> a.txt |
Add-Content a.txt 'hi' |
ac |
| 存在を確認 | if exist a.txt |
Test-Path a.txt |
(なし) |
| ハッシュ値を調べる | certutil -hashfile a.txt SHA256 |
Get-FileHash a.txt |
(なし) |
画面・環境・履歴
| やりたいこと | コマンドプロンプト | PowerShell(正式名) | エイリアス |
|---|---|---|---|
| 画面をクリア | cls |
Clear-Host |
cls、clear |
| 文字を出力 | echo hello |
Write-Output hello |
echo、write |
| 環境変数を見る | echo %PATH% |
$env:PATH |
(なし) |
| 環境変数の一覧 | set |
Get-ChildItem Env: |
(set は別物。下の注意を参照) |
| 入力した履歴 | doskey /history |
Get-History |
h、history、ghy |
| ヘルプを見る | dir /? |
Get-Help Get-ChildItem |
help、man |
| 現在の日時 | date /t |
Get-Date |
(なし) |
| 数秒待つ | timeout /t 5 |
Start-Sleep -Seconds 5 |
sleep |
| プログラムを起動 | start notepad |
Start-Process notepad |
start、saps |
| クリップボードを使う | clip |
Set-Clipboard / Get-Clipboard |
scb / gcb |
ネットワーク
| やりたいこと | コマンドプロンプト | PowerShell(正式名) | エイリアス |
|---|---|---|---|
| PC 名 | hostname |
hostname / $env:COMPUTERNAME |
(なし) |
| ユーザー名 | whoami |
whoami / $env:USERNAME |
(なし) |
| IP の設定 | ipconfig |
Get-NetIPConfiguration |
gip |
| IP アドレスだけ | ipconfig |
Get-NetIPAddress |
(なし) |
| ネットワークアダプター | netsh interface show interface |
Get-NetAdapter |
(なし) |
| 名前解決 | nslookup example.com |
Resolve-DnsName example.com |
(なし) |
| 疎通確認 | ping example.com |
Test-Connection example.com |
(なし。ping は ping.exe のまま) |
| ポートの確認 | telnet host 443 |
Test-NetConnection host -Port 443 |
tnc |
| 経路の確認 | tracert example.com |
Test-NetConnection example.com -TraceRoute |
tnc |
| Web からダウンロード | curl -O(URL を指定) |
Invoke-WebRequest URL -OutFile a.zip |
iwr、curl、wget |
プロセス・サービス・システム
| やりたいこと | コマンドプロンプト | PowerShell(正式名) | エイリアス |
|---|---|---|---|
| プロセス一覧 | tasklist |
Get-Process |
ps、gps |
| プロセスを終了 | taskkill /im app.exe |
Stop-Process -Name app |
kill、spps |
| サービス一覧 | sc query |
Get-Service |
gsv |
| サービスを開始 | net start Spooler |
Start-Service Spooler |
sasv |
| サービスを停止 | net stop Spooler |
Stop-Service Spooler |
spsv |
| サービスを再起動 | net stop → net start |
Restart-Service Spooler |
(なし) |
| システム情報 | systeminfo |
Get-ComputerInfo |
gin |
| OS・ハードの情報 | wmic os get caption |
Get-CimInstance Win32_OperatingSystem |
gcim |
| 更新プログラム | wmic qfe list |
Get-HotFix |
(なし) |
| ディスクの空き | wmic logicaldisk get freespace |
Get-Volume |
(なし) |
| ローカルユーザー | net user |
Get-LocalUser |
glu |
| イベントログ | イベントビューアー | Get-WinEvent |
(なし) |
※ wmic は、僕の PC(Windows 11)では、そもそも入っていませんでした(コマンドを探しても見つかりません)。古い手順書に wmic が出てきたら、表の右側の Get-CimInstance などに読み替えるのが安全です。
検索・加工・出力(PowerShell の得意分野)
| やりたいこと | コマンドプロンプト | PowerShell(正式名) | エイリアス |
|---|---|---|---|
| 文字列を検索 | findstr "ERROR" log.txt |
Select-String "ERROR" log.txt |
sls |
| 並べ替え | sort |
Sort-Object |
sort |
| 条件で絞る | (苦手) | Where-Object |
where、? |
| 項目を選ぶ | (苦手) | Select-Object |
select |
| 数える・集計 | (苦手) | Measure-Object |
measure |
| 種類ごとに分ける | (苦手) | Group-Object |
group |
| 2つを比べる | fc a.txt b.txt |
Compare-Object |
compare、diff |
| 画面とファイルに同時出力 | (なし) | Tee-Object |
tee |
| 結果をファイルに保存 | > |
> / Out-File |
(なし) |
| CSV を読む・書く | (なし) | Import-Csv / Export-Csv |
ipcsv / epcsv |
| 画面で並べ替え・選択 | (なし) | Out-GridView |
ogv |
dir、cd、cls、copy、del、type など、cmd と同じ名前のコマンドは、PowerShell でも、そのまま使えます。これはエイリアスで、中身は Get-ChildItem、Set-Location などです。ただし、スクリプトに書くときは、正式名のほうが読みやすいので、このシリーズでは、基本、正式名で書きます。
同じ名前でも中身が別物のもの(要注意)
| 打ったもの | cmd での意味 | PowerShell での意味 |
|---|---|---|
set |
環境変数の一覧 | Set-Variable の別名(変数を作る) |
sc query |
サービスの確認 | sc は Set-Content の別名。query というファイルができる |
sort |
sort.exe(行の並べ替え) |
Sort-Object の別名 |
where |
where.exe(ファイルの場所を探す) |
Where-Object の別名 |
curl / wget |
curl.exe(本物の curl) |
5.1 では、Invoke-WebRequest の別名 |
echo %PATH% |
環境変数を表示 | %PATH% という文字がそのまま出る |
dir /b |
名前だけ表示 | /b はパスとして読まれ、エラー |
cmd のほうを使いたいときは、拡張子まで書きます(sc.exe、sort.exe、where.exe、curl.exe)。
僕のやらかし:20年ものの手癖
cmd 歴が長いと、指が勝手に動きます。ある日、PowerShell を開いて、何も考えずに cd /d D:\ を打ちました。

赤い文字で「位置指定パラメーターが見つかりません」。続けて dir /b を打つと、今度は「/b というパスが存在しません」と怒られました。PowerShell では、/d や /b はオプションではなく、ただの文字(パス)として扱われるんですね。
もっと恐ろしいのが sc query(サービスの確認)です。PowerShell では sc が Set-Content の別名なので、打ってしまうと、query という名前のファイルを作って、中に Spooler と書き込みます。サービスの状態を見たかっただけなのに、フォルダーに、謎のファイルが1つ増える。見つけたときは、無言で笑いました。
直し方は簡単です。
– ドライブも一緒に移るなら、Set-Location D:\ と書く(/d は要りません)
– 一覧は Get-ChildItem(名前だけなら -Name)
– サービスは Get-Service。cmd のほうの sc を使いたいなら sc.exe query Spooler
拡張子まで書くと、cmd のコマンドが、そのまま動きます。この「.exe を付ける」は、今後も、役に立つ小技です。
実践:バージョンと PC 名を確認する
最初の一歩として、今開いている PowerShell のバージョンと、PC の名前を調べます。
$PSVersionTable.PSVersion
$env:COMPUTERNAME
1行目でバージョン、2行目で PC 名が出ます(PC 名は、僕の環境が分かってしまうので、ここでは載せません。自分の PC で試してみてください)。
今回覚えたコマンド
| コマンド | 意味 |
|---|---|
$PSVersionTable.PSVersion |
今のバージョンを見る |
Get-Command |
コマンドを探す |
Get-Help |
使い方を調べる |
Get-Member |
結果に入っている項目を調べる |
Get-Verb |
使える動詞の一覧 |
Get-Location / Set-Location |
現在地を見る / 移動する |
Get-ChildItem |
一覧を出す |
次回予告
次回は、情シスが日常で使う基本コマンド10選。ファイル、プロセス、サービス、ネットワークを、GUI を開かずに調べます。「消す前に -WhatIf で予行演習」という、安心の習慣もお見せします。
参考
- Approved Verbs for PowerShell Commands(Microsoft Learn)
- Windows PowerShell 5.1 と PowerShell 7.x の違い(Microsoft Learn)
ITもごはんも、腹八分目が長続きのコツ!

コメント