【PowerShell】オブジェクトを渡すということ

こんにちは!アイサット研修担当です。
今回はPowerShell(PowerShell Core)のオブジェクトについて書こうと思います!

PowerShellのすごいところは、他のシェルスクリプトは基本的にテキストベースで扱うものを、PowerShellはオブジェクトで扱うところでしょうか。パイプラインで渡す際、PowerShellはオブジェクトで渡しますね。


Get-ChildItem | ForEach-Object{$_.Name}

とかけばファイル名を、


Get-ChildItem | ForEach-Object{$_.Length}

とかけばファイルサイズを繰り返して持ってきてくれます。
$_の自動変数に入ったオブジェクトのプロパティを取ってきてますね。
他のオブジェクト指向の言語をやっていればPowerShellをあまりしらなくてもピンと来るかもしれませんね。


Get-Process | Where-Object {$_.Name - like 'Co*'} | Group-Object Name | Select-Object Count, Name | Sort-Object Count

とかけば「Co」で始まるプロセス名のプロセスでグループ化し、グループ内の個数と名前を表示、それを個数順で表示します。
テキスト(文字列)で渡すのではなくオブジェクトで渡しているからこそ、このような振る舞いもできるわけですね。
さらにそれをCSVやJSONファイルに出力…なんてことができるから、本当に便利だと思います!
オブジェクトという概念は、未修得者にはとてもハードルが高く感じるかもしれませんが、一回理解するととても便利なものだと思っています。PowerShellを使うときは、オブジェクトを意識してみるとよいかもしれませんね。

ブログ

前の記事

パワーポジション
ブログ

次の記事

実りの秋