Windows PowerShellをさわってみる その2

対話型シェルで作業をしているとコマンドレットに割り当てられているエイリアスを調べる事がよくある。そんな時にはGet-AliasコマンドとWhere-Objectコマンドで問い合わせる。

Get-Alias | Where-Object { $_.Definition -like "Get*" }

Get-AliasをパイプでWhere-Objectにつないで、中括弧で囲んだスクリプトブロックに処理を記述する。
$_は特殊変数でこの中にGet-Aliasのオブジェクトが順番に格納される。

これを毎回書くのが結構めんどくさいので、関数にしてみる。

function whereDef([string]$def) {
    Get-Alias | Where-Object { $_.Definition -like $def } | Format-Table Definition, Name -autosize
}

functionで関数の定義ができる。関数名を指定して括弧の中に引数リストを定義する。
変数名の前に型名を記述すると型を指定できる。(型が不正な場合はエラー)
後は同じで、中括弧の中に処理を記述する。Where-Objectの後についでで出力を整形しておく。

これをマイドキュメントのWindowsPowerShell\profile.ps1スクリプトに記述しておく。
これでPowerShell起動時に自動的にこの関数が読み込まれて、使用できるようになる。

使う時はこんな感じ

whereDef Get*

出力

Definition       Name
----------       ----
Get-Alias        gal
Get-Content      gc
Get-ChildItem    gci
Get-Command      gcm
Get-PSDrive      gdr
Get-History      ghy
Get-Item         gi
Get-Location     gl
Get-Member       gm
Get-ItemProperty gp
Get-Process      gps
Get-Service      gsv
Get-PSSnapin     gsnp
Get-Unique       gu
Get-Variable     gv
Get-WmiObject    gwmi
Get-Content      cat
Get-History      h
Get-History      histo
Get-ChildItem    ls
Get-Process      ps
Get-Location     pwd
Get-ChildItem    dir
Get-Content      type