PowerShellの最大の特徴はパイプライン(|)でオブジェクトを渡せることです。Where-Object・Select-Object・Sort-Objectを組み合わせると、複雑なデータ処理を1行で書けます。
パイプラインの基本
# プロセス一覧からCPU使用率トップ5を表示
Get-Process |
Sort-Object CPU -Descending |
Select-Object -First 5 |
Format-Table Name, CPU, WorkingSet -AutoSize
# 停止中のサービスを一覧表示
Get-Service |
Where-Object { $_.Status -eq "Stopped" } |
Select-Object Name, DisplayNameWhere-Object(フィルタリング)
# 省略形(?)
Get-Process | Where-Object { $_.WorkingSet -gt 100MB }
Get-Process | ? { $_.Name -like "chrome*" }
# スクリプトブロックなしの簡略記法(PS3以降)
Get-Service | Where-Object Status -eq Running
Get-ChildItem | Where-Object Extension -eq ".log"Select-Object(プロパティ選択・計算列)
# 特定のプロパティだけ選択
Get-Process | Select-Object Name, Id, CPU
# 先頭・末尾N件
Get-Process | Select-Object -First 10
Get-Process | Select-Object -Last 5
# 計算列(カスタムプロパティ)
Get-ChildItem C:\Windows |
Select-Object Name, @{Name="SizeMB"; Expression={[math]::Round($_.Length/1MB,2)}} |
Sort-Object SizeMB -DescendingGroup-Object・Measure-Object(集計)
# 拡張子ごとにグループ化してファイル数を集計
Get-ChildItem C:\work -Recurse |
Group-Object Extension |
Sort-Object Count -Descending |
Select-Object Name, Count
# ファイルサイズの合計・平均・最大
Get-ChildItem C:\logs -Filter *.log |
Measure-Object Length -Sum -Average -Maximum |
Select-Object Sum, Average, MaximumPowerShellのパイプラインに慣れると、複数のコマンドを繋げて「フィルタ→ソート→集計→整形」という処理を1つの流れで書けるようになります。最初は1コマンドずつ確認しながら繋げていくのがコツです。
hobbyshift管理人
まとめ
- パイプライン(|)でコマンドの出力オブジェクトを次のコマンドに渡せる
- Where-Object(?)でフィルタ、Select-Objectでプロパティ選択・計算列を作成
- Sort-Objectでソート、-Descendingで降順
- Group-ObjectとMeasure-Objectで集計・統計処理ができる



コメント