web-dev-qa-db-ja.com

PowerShellパラメーターの値のリスト

私は答えを検索しようとしましたが、一連のキーワードにPowerShellとパラメーターという単語を一緒にしても、簡単な検索にはならないと思います

私の質問は、私は関数を書いていて、パラメーターを指定しましたが、パラメーターは特定の文字列のリストの1つでなければなりません。

スクリプト内でこれらの文字列を指定して、「myfunction -parameter ..」と入力すると、パラメーター値にタブ補完を使用できるようにする方法はありますか?

19
Serge111

PowerShell V2を使用している場合は、[ValidateSet()]属性を使用できます。例:

param(
    [Parameter()]
    [ValidateSet('foo','bar','baz')]
    [string[]]
    $Item
)

次のコマンドを実行して、ヘルプトピックを参照してください。

man about_functions_advanced_parameters
26
Keith Hill

キースが示すように[ValidateSet()]を使用できますが、これは多数の可能な値ではうまく機能しません(Tabキーを押したときにリストへの入力が非常に遅くなります)。タブ補完を取得する別の方法は、カスタム列挙型を作成することです。

http://blogs.msdn.com/b/powershell/archive/2008/06/03/v2-custom-enums.aspx

パラメータをその列挙型としてキャストします。これにより、文字列で許可される文字セット(基本的には文字と数字のみ)にいくつかの制限が課されますが、値のリストが比較的大きい場合は、タブ補完リストの入力がはるかに速くなります。

3
mjolinor