[Tips]指定したパラメータを持つコマンドレット一覧を取得する

訳あって、特定のパラメータを持つコマンドレットの一覧が取得したかったので、下記のような関数を作ってみました。(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文で判断しています。

もう少し、スマートに書くことができるような気がするのですが、その辺はご自身で調整ください。

 

これで、特定のパラメータを持つコマンドレットを調べることができますので、ぜひお試しください。

コメント

タイトルとURLをコピーしました