0

C# を使用して、複数のパラメーター セットを持つ PowerShell コマンドレットを記述します。

必要なセットを修飾/選択するために使用できるパラメータ タイプはありますか?

たとえば、Create-IceCream コマンドレットに次の一連のパラメーターがあるとします。

Create-IceCream [-Choco] .. <insert Choco specific parameters here>

Create-IceCream [-Cherry] .. <insert Cherry specific parameters here>

Create-IceCream .. <insert plain specific parameters here>

パラメータ "Choco" と "Cherry" の Type は何ですか? 明らかに、SwitchParameter 型は $false 値で指定できるため、使用できません。

Enum 型はそれほど直感的ではなく、多くの動的パラメーターを作成する必要があります。

何か案は?そして、この質問では、作成できるコマンドレットは 1 つだけに制限されていると仮定しましょう。

ありがとう、

4

1 に答える 1

2

セット間で真に固有のパラメーターがある場合は、「セレクター」パラメーターはまったく必要ありません。指定された「操作可能な」パラメータは、セットを独自に決定します。これは推奨されるアプローチであり、ほとんどのコマンドレットが機能する方法です。

ただし、ユーザーがそのようなパラメーターを提供することが少し明確になる場合もあります。 Switchあなたの心配にもかかわらず、これにはあなたの最良の選択肢です。パラメータセットは、パラメータの存在によって完全に機能し、指定されたパラメータのをまったく知りません。そのため、どのタイプにも完全に完璧なオプションはありません。 Switch利用可能な最も単純なインターフェイスを提供します。

-Choco:$falseスイッチ パラメータの 99% の使用率が単純な存在/非存在であることを考えると、ユーザーは を渡してこれを台無しにしようとかなり努力する必要があります。また、powershell はいずれかの方法でパラメーターセットを適用するため、両方を渡すことはできません-Choco:$false -Cherry:$true

私の経験では、 a に明示的な値を渡すことができることに気付いているユーザーはほとんどSwitchいません。

編集

もう 1 つのオプションは、または文字列-IceCreamTypeのいずれかを取る 1 つのパラメータを持つことです。すべてのパラメーターセットの一部である必須パラメーターにすることができます。その後、必要に応じて残りの共有引数を内部的に解釈できます。ただし、Powershell は、渡された引数に基づいてパラメーター セットを把握できない場合に文句を言うため、このアプローチには危険性があります。で回避できますが、このすべての後、そもそもパラメーターセットを使用する価値を失い始めています。EnumValidateSetDefaultParameterSetName

于 2012-08-22T15:38:23.197 に答える