訳あって、特定のパラメータを持つコマンドレットの一覧が取得したかったので、下記のような関数を作ってみました。(PowerShell V2 CTP3で動作確認済み)。 関数名はいまいちなので好みに合わせて変更してください。
function Get-XParamCmdlet([string]$paraname) { $CmdCnt = 0 Get-Command -CommandType cmdlet | %{ $a = Get-Command $_.Name | select Parameters if ( $a.Parameters.Keys -contains $paraname) { $_.Name $CmdCnt += 1 } } "$CmdCnt 個見つかりました" }
この関数は、引数にパラメータ名を指定します。
たとえば、Encodingというパラメータを持つコマンドレットは下記のようにして取得します。
PS> Get-XParamCmdlet "Encoding" Add-Content Export-Clixml Export-Csv Export-PSSession Get-Content Out-File Select-String Send-MailMessage Sent-Content 9 個見つかりました
関数の中身についてちょっと補足します。
まずGet-Commandでコマンドレットのパラメータコレクションを取得します。
つぎに取得したコレクションに対して、-containsを使用して指定されたパラメータが含まれているかをif文で判断しています。
もう少し、スマートに書くことができるような気がするのですが、その辺はご自身で調整ください。
これで、特定のパラメータを持つコマンドレットを調べることができますので、ぜひお試しください。
コメント