2012-01-25 27 views
0

私はpowershellコマンドレットを持っており、動作するようにパラメータセットを取得できないようです。 このコマンドレットには31個の可能なパラメーターがあり、2つの可能な処理パスに進むことができます。 31個のパラメータはすべてオプションです.18個は両方のパスで共通です.9個は「正しい」パスに固有で、4個は「左側」のパスに固有のものです。私が達成しようとしているのは、PowerShellのParameterSet属性を使用して、いつどのパラメータを使用できるかを指定することです。しかし、それは動作していません。PowerShell ParameterSetsが認識されません。

以下は私の試みのモックアップです。名前は無実を守るために変更されました。

[Parameter] 
public string SomeString1 { get; set; } 

[Parameter] 
public string SomeString2 { get; set; } 

[Parameter(ParameterSetName = "left")] 
public string LeftName { get; set; } 

[Parameter(ParameterSetName = "left")] 
public string LeftDomain { get; set; } 

[Parameter(ParameterSetName = "right")] 
public string RightID { get; set; } 

[Parameter(ParameterSetName = "right")] 
public string RightIP { get; set; } 

だから私はこれを実行すると、私は、get-ヘルプを使用して、私のパラメータリストをチェックしてみてください、そして、それは二つのリストにそれらを分割すべきときに私が見るすべては」、2を含む1のパラメータの一つの大きな塊であります2つの名前が付けられていないものと、「正しい」パラメータと名前のないものとを含む別のものとを含む。

陽気な部分は私たちがこれをうまくやってくれて、完璧な結果を出すことができる別のコマンドレットがあるということです。しかし何らかの理由でこれは私を放棄していません。同じもの、同じ構文、異なる名前だけが含まれます。だから私はセットアップが正しいことを知っています。なぜなら時々動作するからです。しかし、それはすべての時間で動作しないので、私は困惑しています。

パラメータの一部またはすべてを必須に変更しようとしましたが、ヘッダーでDefaultParameterSetNameを使用しようとしました。私は "both"という名前のセットとそのセットのすべてのパラメータを作るなど、セットを倍増させようとしました。私はパラメータセットに関するMSDNの記事を読んだことがあります。私はgoogleが返す最初の40の記事を読んだことがありますが、それを動作させることはできません。私のチームの半分が私の机の後ろに立っていて、私はそれをやっているのを見ている。

私がために何ができるか:

  • フィギュアアウト、それは私のパラメータを認識していない理由は、それがないことを
  • は将来
にこのようなことが起こらないよう
  • はそれを作るセット
  • +0

    このような場合、問題のパラメータが見つかるか、PowerShellのバグを引き起こす特定の数のパラメータがあることがわかるまで、パラメータのコメントアウトを開始します。特定のパラメータが原因で問題が発生している場合は、そのパラメータのコードを投稿してください。 –

    +0

    私はこれらの異なる変数すべてを追跡するためにカスタムオブジェクトを作成することを検討します – Gisli

    +0

    私の仲間の1人は、選択セットの大きなセットでパラメータセット機能を再考することを提案しました。確かに最速の解決策になるでしょう。おそらく私はそれを試して、それが動作するかどうかをお知らせします。 – jnwebster

    答えて

    0

    キースヒル、チップのおかげで - 私はすべての最小限のパラメータを除外しようとしましたが、私はコマンドレットでget-helpを実行したときに、それでもパラメータ。 goofyが何か起こっていることがわかっていて、コマンドレットをコンパイルしたときにヘルプファイルが更新されていないことが分かりました。

    私がその問題を解決したとき、すべてが期待どおりに機能していたように見えました。get-helpが古い情報を使用していたようです。そういうわけで、誰もそれを理解できないのです。私はそれを正しくやっていたので、バグはなく、貧弱な文書しかなかった。

    大きな顔の瞬間ですが、私はそれをうまく解決しました。レッスンは:常にヘルプが自動的に生成されていることを確認してください。

    関連する問題