PowerShell入門①|cmdとの違いと命名規則を整理

PowerShell入門①|cmdとの違いと命名規則を整理 PowerShell

「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 には両方が入っていて、バージョンはこう見えます。

PowerShell 5.1 と 7 のバージョンを、コマンドで確認した画面。5.1 のビルド番号と、7.6.6 の表示

$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:\ を打ちました。

PowerShell で cd /d D:\ と dir /b を打って、赤いエラーが出た画面

赤い文字で「位置指定パラメーターが見つかりません」。続けて 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 で予行演習」という、安心の習慣もお見せします。

→ 第2回:情シスが使う基本コマンド10選

参考

ITもごはんも、腹八分目が長続きのコツ!

コメント