0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

PowerShell の核心— オブジェクトとパイプライン

0
Posted at

はじめに

PowerShell を使っていて、次のように感じたことはありませんか?

  • パイプ(|)はあるけど、Bash と何が違うのか分からない
  • Where-ObjectSelect-Object が直感的でない
  • なぜ PowerShell は「自動化に強い」と言われるのか

これらの疑問はすべて、**「オブジェクトとパイプライン」**を理解すると一気に解消します。

本記事では、PowerShell の設計思想の中核である
オブジェクト指向パイプラインを、概念から実例まで丁寧に解説します。


パイプラインの正体:テキストではない

まず、PowerShell と従来の Shell の決定的な違いを整理します。

従来の Shell(CMD / Bash)

  • パイプで流れるもの:文字列
  • 出力は人間向け
  • 次のコマンドは文字列を再解析する
ps aux | grep root

見た目は便利だが、構造を持たない


PowerShell のパイプライン

  • パイプで流れるもの:オブジェクト
  • 型・プロパティ・メソッドを保持
  • 再解析が不要
Get-Process | Where-Object CPU -gt 100

👉 「CPU プロパティが 100 を超えるプロセス」を
👉 意味で処理している


オブジェクトとは何か(PowerShell 視点)

PowerShell では、すべての出力はオブジェクトです。

例:

$p = Get-Process

$p の中身は:

  • 文字列の集合ではない
  • Process オブジェクトの配列

オブジェクトの中身を覗く

Get-Process | Get-Member

出力には:

  • プロパティ(Name, Id, CPU, Path…)
  • メソッド(Kill(), CloseMainWindow() など)

👉 PowerShell は CLI でありながら API を触っている感覚に近い


Select-Object:必要な情報だけを抜き出す

Get-Process | Select-Object Name, CPU
  • 表示を整えているだけではない
  • オブジェクトの形を作り直している

そのため後続処理にも使えます。


Where-Object:条件で意味的に絞る

Get-LocalUser | Where-Object PasswordRequired -eq $false

これは:

  • テキスト検索ではなく
  • Boolean プロパティによる条件判定

👉 PowerShell が管理業務に強い理由の一つです。


Sort / Measure:集計が自然に書ける

ソート

Get-Process | Sort-Object CPU -Descending

集計

Get-LocalUser | Measure-Object

👉 数えるために wc や正規表現は不要


なぜ PowerShell は自動化に向いているのか

理由は明確です。

  • 入力:構造化オブジェクト
  • 処理:意味に基づく条件
  • 出力:再利用可能なオブジェクト
(Get-NetTCPConnection -State Listen).Count

👉 1 行で 取得 → 条件 → 集計 が完結


パイプライン設計の基本ルール

PowerShell では、次の考え方が重要です。

  1. 取得(Get-)
  2. 加工(Where / Select / Sort)
  3. 集計・出力(Measure / Export)

例:

Get-ChildItem C:\Users -Recurse |
Where-Object Length -gt 10MB |
Select Name, Length

セキュリティ視点で見るオブジェクトパイプライン

PowerShell が攻防両面で注目される理由もここにあります。

  • 攻撃者:
    → 既存 API を静かに操作できる
  • 防御側:
    → オブジェクト操作をログとして検知できる

👉 便利さ = 可観測性でもある


まとめ

  • PowerShell の本質は オブジェクト
  • パイプラインは オブジェクトの流れ
  • フィルタ・集計が自然に書ける
  • 自動化・管理に最適化された設計
0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?