PowerShellのコマンド(コマンドレット)とは、「動詞-名詞」の形で名前が付いた、Windows・macOS・Linuxで使える操作命令です。 Get-ChildItem(一覧を取得)、Copy-Item(項目をコピー)のように、名前を見れば何をするかがわかります。最大の特徴は、コマンドの間を文字列ではなく「オブジェクト」が流れることです。

この記事では、よく使うコマンドレットを用途別に50個選び、エイリアス(短縮名)と bash / cmd で同じことをするコマンドを1つの表にまとめました。さらに、2026年10月時点の最新 LTS である PowerShell 7.6.6 を実際に動かし、ほぼすべてのコマンドの実行結果を掲載しています。実行環境は Linux(Ubuntu 24.04)上の PowerShell 7.6.6 です。Windows 専用のコマンド(Get-Service など)は本記事では未実行で、公式ドキュメントに沿って記載しています。


PowerShellコマンドの早見表(用途別50選)

エイリアス列は Windows 版 PowerShell 7 の既定です。Linux / macOS 版では ls・cp・rm・cat・ps などのエイリアスは定義されておらず、OS 標準のコマンドが動きます(後述の実行結果参照)。

ファイル・フォルダ操作

No コマンドレット エイリアス bash cmd 用途
1 Get-Location pwd, gl pwd cd 現在のフォルダを表示
2 Set-Location cd, sl, chdir cd cd フォルダを移動
3 Get-ChildItem ls, dir, gci ls, find dir ファイル一覧
4 New-Item ni mkdir, touch mkdir ファイル・フォルダ作成
5 Copy-Item cp, copy, cpi cp copy, xcopy コピー
6 Move-Item mv, move, mi mv move 移動
7 Rename-Item ren, rni mv ren 名前の変更
8 Remove-Item rm, del, rd, ri rm del, rd 削除
9 Test-Path – test -e if exist 存在確認(True/False)
10 Get-Item gi stat – 1件の情報を取得
11 Join-Path / Split-Path – dirname, basename – パスの結合・分解
12 Compress-Archive / Expand-Archive – zip / unzip tar ZIP 圧縮・展開

テキスト・データ形式

No コマンドレット エイリアス bash cmd 用途
13 Get-Content cat, gc, type cat, head, tail type ファイルを読む
14 Set-Content – > > 上書き保存
15 Add-Content ac >> >> 追記
16 Out-File – > > 出力をファイルへ
17 Select-String sls grep findstr 文字列・正規表現検索
18 Get-FileHash – sha256sum certutil -hashfile ハッシュ値
19 Import-Csv ipcsv – – CSV を読みオブジェクト化
20 Export-Csv epcsv – – オブジェクトを CSV へ
21 ConvertTo-Json / ConvertFrom-Json – jq – JSON 変換
22 Format-Table / Format-List ft / fl column – 表示形式の変更

プロセス・システム

No コマンドレット エイリアス bash cmd 用途
23 Get-Process ps, gps ps tasklist プロセス一覧
24 Stop-Process kill, spps kill taskkill プロセス終了
25 Start-Process start, saps &, nohup start プログラム起動
26 Get-Service gsv systemctl status sc query サービス一覧(Windows)
27 Get-Date – date date /t 日時
28 Start-Sleep sleep sleep timeout 待機
29 Measure-Command – time – 実行時間の計測
30 Start-Job / Receive-Job sajb / rcjb & / wait – バックグラウンド実行
31 Clear-Host cls, clear clear cls 画面クリア

ネットワーク

No コマンドレット エイリアス bash cmd 用途
32 Invoke-WebRequest iwr curl -i curl HTTP リクエスト(応答全体)
33 Invoke-RestMethod irm curl + jq – API を呼び JSON をオブジェクト化
34 Test-Connection – ping ping 疎通確認
35 Test-NetConnection tnc nc -zv – ポート疎通(Windows)
36 Resolve-DnsName – dig nslookup 名前解決(Windows)
37 Get-NetIPAddress – ip addr ipconfig IP アドレス(Windows)

オブジェクト操作(パイプライン)

No コマンドレット エイリアス bash cmd 用途
38 Where-Object ?, where grep, awk findstr 条件で絞り込み
39 Select-Object select cut, head, tail – 列の選択・先頭 N 件
40 Sort-Object sort sort sort 並べ替え
41 Group-Object group sort | uniq -c – グループ化・件数
42 Measure-Object measure wc, awk – 件数・合計・平均
43 ForEach-Object %, foreach xargs, while read for 1件ずつ処理
44 Get-Member gm – – 型・プロパティ・メソッドを調べる
45 Compare-Object compare diff fc 2つの集合の差分
46 Tee-Object tee tee – 途中の結果を保存しつつ流す

変数・出力・ヘルプ

No コマンドレット エイリアス bash cmd 用途
47 Write-Output echo, write echo echo パイプラインへ出力
48 Set-Variable / Get-Variable set / gv x=1 / set set 変数の設定・取得
49 Get-Help help, man man help ヘルプ表示
50 Get-Command / Get-Alias gcm / gal which, type / alias where コマンド・エイリアス検索

本記事の内容は、ご自由にお使いください。
ご利用の際は、出典として本ページへのリンクを記載いただけますようお願いします。

(記載例)出典:株式会社RJC「PowerShellコマンド一覧|用途別50選とbash対応表・実行例付き」


PowerShellの最新版と動かし方

2026年10月時点の最新は PowerShell 7.6(LTS=長期サポート版、2026年3月18日リリース、サポート期限 2028年11月14日)で、最新パッチは 7.6.6 です(Microsoft Learn の「PowerShell Support Lifecycle」で確認)。7.6 は .NET 10 上で動きます。

バージョン 種類 基盤 位置づけ
Windows PowerShell 5.1 Windows 同梱 .NET Framework Windows に最初から入っている。機能追加は終了し、保守のみ
PowerShell 7.4 LTS .NET 8 2026年11月10日までサポート
PowerShell 7.5 Stable .NET 9 2026年11月10日までサポート
PowerShell 7.6 LTS .NET 10 現在の推奨版
PowerShell 7.7 Preview .NET 11 プレビュー

インストール方法の例です。

# Windows(winget)
winget install --id Microsoft.PowerShell --source winget
# 起動は pwsh(5.1 は powershell.exe)
pwsh
# Linux(tar.gz を展開して動かす方法。本記事の検証はこの方法)
mkdir ps && tar xzf powershell-7.6.6-linux-x64.tar.gz -C ps
chmod +x ps/pwsh && ./ps/pwsh -NoLogo

本記事の実行環境で $PSVersionTable を表示した結果です。

Name                      Value
----                      -----
PSVersion                 7.6.6
PSEdition                 Core
GitCommitId               7.6.6
OS                        Ubuntu 24.04.4 LTS
Platform                  Unix

ファイル・フォルダ操作のコマンドと実行結果

以下のサンプルデータを置いたフォルダで実行しています。

orders.csv
id,item,category,qty,price
1,ノート,文具,3,300
2,ボールペン,文具,10,150
3,USBメモリ,備品,2,1200
4,付箋,文具,5,200
5,モニター台,備品,1,3500

app.log
INFO start
WARN disk 85%
INFO job ok
ERROR timeout task=42
INFO end

作成・コピー・移動・削除

New-Item -ItemType Directory -Name work | Select-Object Name
New-Item -Path work/memo.txt -ItemType File -Value "hello" | Select-Object Name, Length
Copy-Item work/memo.txt work/memo_copy.txt; Get-ChildItem work -Name
Name
----
work

Name     Length
----     ------
memo.txt      5

memo_copy.txt
memo.txt
Rename-Item work/memo_copy.txt memo2.txt
Move-Item work/memo2.txt ./memo2.txt
Test-Path ./memo2.txt; Remove-Item ./memo2.txt; Test-Path ./memo2.txt
True
False

中身のあるフォルダを Remove-Item work で消そうとすると、確認プロンプト([Y] Yes / [A] Yes to All …)が出て止まります。 スクリプトでは -Recurse を付けます。

Remove-Item work -Recurse -Force; Test-Path work
False

削除前に -WhatIf を付けると、何が消えるかを表示するだけで実行しません。 大量削除の前の確認に便利です。

一覧・検索・パス操作

Get-ChildItem -File | Select-Object Name, Length | Sort-Object Name
Get-ChildItem -Recurse -Filter *.txt | Select-Object -ExpandProperty Name
Join-Path work sub file.txt
Split-Path /var/log/app.log -Leaf
Get-Item orders.csv | Select-Object Name, Extension, Length
Name       Length
----       ------
app.log        68
items.json    159
orders.csv    167

memo.txt
work/sub/file.txt
app.log

Name       Extension Length
----       --------- ------
orders.csv .csv         167

Join-Path は OS に合わせて区切り文字を選びます(Linux では /、Windows では \)。パスを文字列連結で作るより安全です。

ZIP 圧縮と展開

Compress-Archive -Path work -DestinationPath work.zip
Expand-Archive work.zip -DestinationPath unzip
Get-ChildItem unzip -Recurse -Name
work
work/memo.txt

テキスト・CSV・JSONのコマンドと実行結果

読む・書く・追記する

Get-Content app.log -TotalCount 2      # head -n 2
Get-Content app.log -Tail 1            # tail -n 1
(Get-Content app.log).Count            # wc -l
Set-Content note.txt "1行目"; Add-Content note.txt "2行目"; Get-Content note.txt
INFO start
WARN disk 85%
INFO end
5
1行目
2行目

Get-Content は1行ずつ文字列の配列として読み込みます。 1つの文字列として読みたいときは -Raw を付けます。ログを追いかける tail -f は Get-Content app.log -Wait -Tail 10 です。

grep の代わり:Select-String

Select-String -Path app.log -Pattern "ERROR|WARN"
Select-String -Path app.log -Pattern "task=(\d+)" | ForEach-Object { $_.Matches[0].Groups[1].Value }
app.log:2:WARN disk 85%
app.log:4:ERROR timeout task=42

42

Select-String の結果もオブジェクトなので、正規表現のグループ(Matches)を直接取り出せます。 大文字小文字を区別したいときは -CaseSensitive、一致しない行は -NotMatch です。

ハッシュ値

(Get-FileHash orders.csv -Algorithm SHA256).Hash.Substring(0,16)
D42D166BD57668C9

CSV を読み込む

Import-Csv orders.csv | Format-Table
id item       category qty price
-- ----       -------- --- -----
1  ノート     文具     3   300
2  ボールペン 文具     10  150
3  USBメモリ  備品     2   1200
4  付箋       文具     5   200
5  モニター台 備品     1   3500

Import-Csv は1行を1つのオブジェクトにし、列名がそのままプロパティ名になります。 ただし値はすべて文字列です(後述のよくあるエラーで扱います)。


プロセス・システムのコマンドと実行結果

Get-Process -Id $PID | Select-Object ProcessName, Id
$p = Start-Process sleep -ArgumentList 30 -PassThru
Stop-Process -Id $p.Id; $p.WaitForExit(); $p.HasExited
ProcessName    Id
-----------    --
pwsh        14194

True
Get-Date -Format "yyyy-MM-dd"
(Get-Date "2026-10-01").AddDays(30).ToString("yyyy-MM-dd ddd")
(Measure-Command { Start-Sleep -Milliseconds 200 }).TotalMilliseconds -ge 200
$j = Start-Job { 1..3 | ForEach-Object { $_ * 10 } }; Receive-Job $j -Wait -AutoRemoveJob
2026-10-01
2026-10-31 Sat
True
10
20
30

Get-Date の戻り値は DateTime オブジェクトなので、.AddDays() で日付計算ができます。 Measure-Command はスクリプトの処理時間を比べるときに使います。

Windows 専用のサービス管理は次のとおりです(本記事の Linux 環境では Get-Service が存在せず未実行)。

# Windows のみ(未実行)
Get-Service | Where-Object Status -eq Running | Select-Object -First 5 Name, Status
Restart-Service -Name Spooler   # 管理者として実行

ネットワークのコマンドと実行結果

ローカルで JSON を返すサーバー(items.json)を立てて確認しました。

Invoke-RestMethod http://127.0.0.1:7841/items.json | Format-Table
(Invoke-WebRequest http://127.0.0.1:7841/items.json).StatusCode
name       price qty
----       ----- ---
ノート       300   2
ボールペン   150   4
付箋         200   1

200

Invoke-RestMethod は JSON を自動でオブジェクトに変換するので、jq なしで絞り込みや並べ替えができます。 ヘッダーやステータスコードまで見たいときは Invoke-WebRequest を使います。

やりたいこと 書き方
POST で JSON を送る Invoke-RestMethod $url -Method Post -ContentType 'application/json' -Body ($obj | ConvertTo-Json)
ヘッダーを付ける -Headers @{ Authorization = "Bearer $token" }
タイムアウト -TimeoutSec 10
ファイルに保存 Invoke-WebRequest $url -OutFile data.zip
ポート疎通(Windows) Test-NetConnection example.com -Port 443(未実行)
名前解決(Windows) Resolve-DnsName example.com(未実行)

パイプラインのしくみ(オブジェクトが流れる)

bash のパイプは「文字列」を次のコマンドに渡しますが、PowerShell のパイプは「オブジェクト(プロパティを持つデータ)」を渡します。 そのため、列の位置を数えて cut や awk で切り出す代わりに、qty や price といったプロパティ名で直接扱えます。

flowchart LR
    A["Import-Csv orders.csv"] -->|"オブジェクト(id, item, qty, price)"| B["Where-Object(絞り込み)"]
    B --> C["Select-Object(列の選択・計算列)"]
    C --> D["Sort-Object(並べ替え)"]
    D --> E["Export-Csv / ConvertTo-Json(出力)"]

流れているものの型は Get-Member で確認できます。

"abc" | Get-Member | Select-Object -First 1 TypeName
(Get-ChildItem orders.csv).GetType().FullName
TypeName
--------
System.String

System.IO.FileInfo

パイプラインのレシピ

以下は $o = Import-Csv orders.csv を実行したあとの例です。

1. Where-Object で絞り込む

$o | Where-Object { [int]$_.qty -ge 3 } | Select-Object item, qty
item       qty
----       ---
ノート     3
ボールペン 10
付箋       5

2. Select-Object で計算列を作り、Sort-Object で並べ替える

$o | Select-Object item, @{Name="amount"; Expression={ [int]$_.qty * [int]$_.price }} |
    Sort-Object amount -Descending
item       amount
----       ------
モニター台   3500
USBメモリ    2400
ボールペン   1500
付箋         1000
ノート        900

3. Group-Object で件数を数える

$o | Group-Object category | Select-Object Name, Count
Name Count
---- -----
備品     2
文具     3

4. Group-Object と Measure-Object でカテゴリ別合計

$o | Group-Object category | ForEach-Object {
    [pscustomobject]@{
        category = $_.Name
        total    = ($_.Group | ForEach-Object { [int]$_.qty * [int]$_.price } | Measure-Object -Sum).Sum
    }
}
category   total
--------   -----
備品     5900.00
文具     3400.00

5. Measure-Object で件数・合計・平均・最大・最小

$o | Measure-Object -Property price -Sum -Average -Maximum -Minimum |
    Select-Object Count, Sum, Average, Maximum, Minimum
Count   : 5
Sum     : 5350
Average : 1070
Maximum : 3500
Minimum : 150

6. Export-Csv で保存する

$o | Where-Object category -eq "備品" | Export-Csv equip.csv
Get-Content equip.csv
"id","item","category","qty","price"
"3","USBメモリ","備品","2","1200"
"5","モニター台","備品","1","3500"

PowerShell 7 の Export-Csv は、5.1 で先頭に付いていた #TYPE 行を出力しません。 5.1 で同じ結果にするには -NoTypeInformation を付けます。

7. ConvertTo-Json で JSON にする

$o | Select-Object -First 2 id, item | ConvertTo-Json
$o | Select-Object -First 2 id, item | ConvertTo-Json -Compress
[
  {
    "id": "1",
    "item": "ノート"
  },
  {
    "id": "2",
    "item": "ボールペン"
  }
]
[{"id":"1","item":"ノート"},{"id":"2","item":"ボールペン"}]

入れ子が深いデータは既定の深さ(2)で切り詰められるため、ConvertTo-Json -Depth 10 のように指定します。

8. ForEach-Object -Parallel で並列処理(7以降)

1..10 | ForEach-Object -Parallel { $_ * $_ } -ThrottleLimit 4 | Sort-Object | Select-Object -Last 3
64
81
100

9. Compare-Object・Tee-Object・Get-Unique

Compare-Object (1,2,3) (2,3,4)
1..5 | Tee-Object -Variable saved | Measure-Object -Sum | Select-Object Count, Sum; $saved -join ","
1,1,2,3,3 | Get-Unique
InputObject SideIndicator
----------- -------------
          4 =>
          1 <=

Count   Sum
-----   ---
    5 15.00
1,2,3,4,5

1
2
3

SideIndicator の => は右側(2つ目)にだけある値、<= は左側にだけある値です。


変数・文字列・ヘルプの使い方

$env:HOME_TEST = "abc"; $env:HOME_TEST          # 環境変数
Set-Variable -Name limit -Value 10; Get-Variable limit
$h = @{ name = "ノート"; qty = 3 }; $h.qty; $h.Keys -join ","   # ハッシュテーブル
"a,b;c" -split "[,;]"
"Order-2026-10" -replace "\d{4}", "YYYY"
"abc" -like "a*"; "abc" -match "^a(.)"; $Matches[1]
abc

Name                           Value
----                           -----
limit                          10

3
qty,name
a
b
c
Order-YYYY-10
True
True
b

比較演算子は記号ではなく -eq・-ne・-gt・-lt・-like・-match を使います。 > はリダイレクト(ファイル出力)になるので注意しましょう。ハッシュテーブルのキーの順序は保証されないため、順序が必要なら [ordered]@{...} を使います。

コマンドを探すときの3点セットです。

Get-Command -Verb Get -Noun *Item* | Select-Object Name
Get-Command Get-ChildItem | Select-Object CommandType, Name, Source
Get-Help Get-ChildItem -Examples   # 使用例だけ表示(Update-Help で最新化)
Name
----
Get-ChildItem
Get-Item
Get-ItemProperty
Get-ItemPropertyValue

CommandType Name          Source
----------- ----          ------
     Cmdlet Get-ChildItem Microsoft.PowerShell.Management

この環境で使えるコマンドレットは (Get-Command -CommandType Cmdlet).Count で 257 個でした(追加モジュールなしの Linux 版 7.6.6)。


エイリアスとbashコマンドの関係(Linux / macOS の注意点)

Linux 上の PowerShell 7.6.6 で、エイリアスの有無を調べた結果です。

foreach ($n in "ls","cp","mv","rm","cat","ps","kill","sleep","sort","diff","tee",
               "echo","cd","pwd","dir","type","cls","clear","man","curl","wget","gc","sls","iwr","irm") {
    $a = Get-Alias $n -ErrorAction SilentlyContinue
    "{0,-6} {1}" -f $n, $(if ($a) { $a.Definition } else { "(エイリアスなし)" })
}
ls     (エイリアスなし)
cp     (エイリアスなし)
mv     (エイリアスなし)
rm     (エイリアスなし)
cat    (エイリアスなし)
ps     (エイリアスなし)
kill   (エイリアスなし)
sleep  (エイリアスなし)
sort   (エイリアスなし)
diff   (エイリアスなし)
tee    (エイリアスなし)
echo   Write-Output
cd     Set-Location
pwd    Get-Location
dir    Get-ChildItem
type   Get-Content
cls    Clear-Host
clear  (エイリアスなし)
man    (エイリアスなし)
curl   (エイリアスなし)
wget   (エイリアスなし)
gc     Get-Content
sls    Select-String
iwr    Invoke-WebRequest
irm    Invoke-RestMethod

Linux / macOS では、ls と打つと PowerShell の Get-ChildItem ではなく OS の /usr/bin/ls が動きます。 戻り値は文字列なので、プロパティでの絞り込みはできません。スクリプトにはエイリアスではなく正式名(Get-ChildItem など)を書くと、どの OS でも同じ動きになります。また PowerShell 7 では Windows でも curl・wget のエイリアスはなく、OS の curl.exe が動きます(5.1 では Invoke-WebRequest のエイリアス)。


Windows PowerShell 5.1とPowerShell 7の違い

項目 Windows PowerShell 5.1 PowerShell 7.6
実行ファイル powershell.exe pwsh(pwsh.exe)
対応 OS Windows のみ Windows / macOS / Linux
基盤 .NET Framework .NET 10
既定の文字コード コマンドによって UTF-16LE や ANSI など UTF-8(BOM なし)
&& / ||(前のコマンドの成否で続行) 使えない 使える
??(null のとき既定値)/ 三項演算子 使えない 使える
ForEach-Object -Parallel なし あり
Export-Csv の #TYPE 行 出る(-NoTypeInformation で消す) 出ない
curl / wget エイリアス Invoke-WebRequest なし(OS の curl が動く)
実行ポリシー Windows で有効 Windows で有効、Linux / macOS は常に Unrestricted

7 の新しい演算子の実行結果です。

$x = $null; $x ?? "default"
$n = 7; $n % 2 -eq 0 ? "even" : "odd"
default
odd

文字コードは、日本語1文字を Out-File で書き出したバイト列で確認しました。

Out-File(既定)              : e3 81 82 0a          ← UTF-8(BOM なし)
Out-File -Encoding utf8BOM    : ef bb bf e3 81 82 0a ← 先頭に BOM

5.1 で作った CSV を Excel で開いたり、7 で作ったファイルを 5.1 で読んだりするときは、-Encoding を明示すると文字化けを防げます。Excel 向けの CSV は -Encoding utf8BOM が扱いやすいです。


実行ポリシーの確認と変更

実行ポリシーとは、Windows で .ps1 スクリプトを実行してよいかを決める設定です。 セキュリティの境界というより、意図しないスクリプト実行を防ぐための安全装置です。

ポリシー 意味
Restricted スクリプトは実行しない(Windows クライアントの既定)
RemoteSigned ローカルで作ったものは実行可、ダウンロードしたものは署名が必要(Windows Server の既定)
AllSigned すべて署名が必要
Bypass 何も制限しない(一時的な実行向け)
Unrestricted 制限なし(ダウンロードしたものは警告)
Get-ExecutionPolicy -List                                  # スコープごとの設定を確認
Set-ExecutionPolicy RemoteSigned -Scope CurrentUser        # 自分だけ変更(管理者権限不要)
pwsh -ExecutionPolicy Bypass -File .\task.ps1              # その実行だけ一時的に許可
Unblock-File .\downloaded.ps1                              # ダウンロード印を外す

Linux 上での結果は次のとおりで、Linux / macOS では実行ポリシーは常に Unrestricted で、変更はできません。

PS> Get-ExecutionPolicy
Unrestricted

PS> Set-ExecutionPolicy RemoteSigned -Scope CurrentUser
Operation is not supported on this platform.

よくあるエラー文と対処

エラー文(抜粋) 原因 対処 確認
The term 'Get-Prosess' is not recognized as a name of a cmdlet, function, script file, or executable program. コマンド名の打ち間違い、モジュール未読み込み、その OS にないコマンド Get-Command *process* で正しい名前を探す 実行
A parameter cannot be found that matches parameter name 'Recrse'. パラメーター名の打ち間違い Tab キーで補完、Get-Help コマンド -Parameter * 実行
Cannot find path '…/nosuch.txt' because it does not exist. パスが違う、カレントフォルダが違う Get-Location と Test-Path で確認 実行
Cannot convert value "abc" to type "System.Int32". 数値にできない文字列を [int] で変換 入力を確認、-as [int] で失敗時 $null にする 実行
Cannot find drive. A drive with the name 'C' does not exist. Linux / macOS で Windows のパスを指定 Join-Path と相対パスで書く 実行
Connection refused 接続先のサーバーが起動していない、ポート違い URL とポートを確認、-TimeoutSec を付ける 実行
Operation is not supported on this platform. Linux / macOS で Windows 専用の操作 その OS では不要(実行ポリシーなど) 実行
…cannot be loaded because running scripts is disabled on this system. 実行ポリシーが Restricted Set-ExecutionPolicy RemoteSigned -Scope CurrentUser Windows の表示(未実行)
Access to the path '…' is denied. 権限不足、ファイルが使用中 管理者として実行、使用中のアプリを閉じる 未実行

エラーが出ないのに結果が空になる例(文字列比較)

Import-Csv の値は文字列なので、数値のつもりで比較すると文字列として比較されます。

$o[0].qty.GetType().Name
$o | Where-Object { $_.qty -gt 5 } | Select-Object item, qty          # 直す前
$o | Where-Object { [int]$_.qty -gt 5 } | Select-Object item, qty     # 直した後
String

(直す前:何も出力されない)

item       qty
----       ---
ボールペン 10

"10" -gt 5 は文字列 "10" と "5" の比較になり、先頭の "1" が "5" より小さいので False になります。 [int] で型変換すれば期待どおりになります。同じ理由で "10" + 5 は 105、5 + "10" は 15 です(左辺の型に合わせて変換されるため)。

エラーを try / catch で受け止める

try { Get-Content nosuch.txt -ErrorAction Stop } catch { "捕捉: " + $_.Exception.GetType().Name }
捕捉: ItemNotFoundException

多くのコマンドレットのエラーは「続行可能なエラー」で、そのままでは catch に入りません。 -ErrorAction Stop(またはスクリプト冒頭で $ErrorActionPreference = 'Stop')を付けると捕捉できます。

&& は「True / False」ではなく「成功 / 失敗」で判定する

Test-Path nosuch.txt && "ok" || "ng"
ls /nosuchdir && "ok" || "ng"
False
ok
/usr/bin/ls: cannot access '/nosuchdir': No such file or directory
ng

Test-Path は False を返しても「コマンドとしては成功」なので ok に進みます。 値で分岐したいときは if (Test-Path nosuch.txt) { ... } と書きます。


よくある質問

Q. コマンドプロンプト(cmd)のコマンドはPowerShellでも使えますか? A. dir・cd・copy・del・type などはエイリアスとして動きます。ただしオプションの書き方は異なり、dir /s は Get-ChildItem -Recurse と書きます。ipconfig や ping のような実行ファイルはそのまま実行できます。

Q. 5.1と7はどちらを使えばよいですか? A. 新しく書くスクリプトは 7.6(LTS)がおすすめです。Windows 専用の古いモジュールなど、5.1 でしか動かないものを使う場合だけ 5.1 を使います。両方は共存でき、powershell(5.1)と pwsh(7)で起動し分けられます。

Q. コマンドの名前を覚えられません。 A. 「動詞-名詞」の規則を覚えると推測できます。動詞は Get(取得)・Set(設定)・New(作成)・Remove(削除)・Start / Stop などに限られています(Get-Verb で一覧表示)。あとは Get-Command *キーワード* と Tab 補完で探せます。

Q. bashのようにテキストで処理したい場合は? A. Out-String -Stream で文字列にしてから Select-String に渡せます。ただし、多くの場合はプロパティで絞り込むほうが短く確実に書けます。


まとめ

  • PowerShell のコマンドレットは「動詞-名詞」形式で、Get-Command と Tab 補完で探せます。
  • 2026年10月時点の最新は PowerShell 7.6(LTS)、パッチは 7.6.6。 Windows・macOS・Linux で動きます。
  • パイプラインを流れるのはオブジェクトなので、Where-Object・Select-Object・Group-Object・Measure-Object をプロパティ名で組み合わせられます。
  • Linux / macOS では ls などのエイリアスがないため、スクリプトは正式名で書くとどこでも同じ動きになります。
  • 5.1 と 7 は文字コード・演算子・Export-Csv の出力が違うので、ファイルをやり取りするときは -Encoding を明示します。
  • CSV の値は文字列なので、数値比較の前に [int] で変換します。
  • エラーは -ErrorAction Stop と try / catch で受け止めます。

本記事の内容は、ご自由にお使いください。
ご利用の際は、出典として本ページへのリンクを記載いただけますようお願いします。

(記載例)出典:株式会社RJC「PowerShellコマンド一覧|用途別50選とbash対応表・実行例付き」

株式会社RJCでは、PowerShellによる作業の自動化を仲間と学び合っています。こうした知識を共有しながら、日々技術を磨いています。

株式会社RJC ― SI事業・SES事業・AI駆動開発。RJCは一緒に成長を楽しめる会社です。

WE ARE HIRING

RJCで一緒に開発しながら、
成長を楽しみませんか?

RJCは、Web・モバイル・AIを活用した開発プロジェクトで、テックリードやPM・PMOも活躍するシステム開発会社です。会社を知る、待遇を確かめる、話を聞いてみる。気になるところ見てみてください!

  • 127日年間休日
  • 12時間平均残業時間
  • 毎日ガチャ遊びココロも大切にする福利厚生。アマギフなどの賞品ラインナップ!

ほかにも、チケットレストラン、書籍読み放題、2年ごとの慰労報奨(休暇 or 金一封)、11期連続の黒字決算。

ABOUT RJC RJCがどんな会社か知る 考え方、研修、働き方、福利厚生、社員の前職まで。RJCのことが丸わかり! RJC丸わかりページへ JOB DESCRIPTION 仕事内容・待遇を見てみる 仕事内容、給与・待遇、選考の流れ。経験者も未経験も!応募前に知りたいこと、まとめました! 募集要項を見る ENTRY エントリーする エントリーは1〜2分・履歴書不要です。まずは話を聞いてみたい、という方でも歓迎です! エントリーフォームへ

RJCで一緒に開発しながら、 成長を楽しみませんか?