問題タブ [parameter-sets]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
powershell - スクリプトのパラメータの問題
誰かが私が書いた以下で私が間違っていることを教えてもらえますか:
私がやりたいのは、ユーザーが-DONOTRemovefromdomain
or-Permithttp
または さえ選択できるようにすることだけです-Permithttps
。ユーザーが選択しなければならないさまざまなオプションが存在する可能性があります。
以下でこれを実行すると、エラーが発生します。
また、何も指定しない場合 (したがって、NormalHardening パラメーターに移動する必要があります)、何も返されません。
powershell - Powershell のデフォルト パラメータ セットが機能しない。エラー
パラメータ セットを使用しようとしていますが、デフォルトのパラメータ セットを使用しています。しかし、デフォルトのパラメーター セットは機能しないようです。どんな助けでも大歓迎です。デフォルトのアクションで検証セットを簡単に使用できますが、ここで何が間違っているのか知りたいです。
Test-Script : 指定された名前付きパラメーターを使用してパラメーター セットを解決できません。
行:1 文字:1
+ Test-Script -Source "c:\somedirectory" -DestinationPath "c:\someotherdirectory"
+ ~~~~~~~~~~~~~~~~~~~~~~ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ ~~~~~~~
+ CategoryInfo : InvalidArgument: (:) [テスト スクリプト]、ParameterBindingException
+ FullyQualifiedErrorId : AmbiguousParameterSet、テスト スクリプト
function - パラメータ セット - デフォルトを機能させるにはどうすればよいですか?
DNS ゾーンを更新するパペット スクリプトによって取得される *.CSV ファイルを更新する関数を作成しています。実際の.CSV ファイルを壊したくないので、ダミー ファイルを追加しました。この関数を開発している間、 、 、 の 3 つのパラメーター セットがReset
ありAdd
ますRemove
。これらのパラメーターは、ダミー ファイルを現在の正規の .CSV ファイルで上書きし、レコードを追加し、レコードを削除します。メイン スクリプトは、これらのスイッチの 2 つまたは 3 つすべてがアクティブな状態で関数を呼び出すことはありません。
スクリプトのパラメーター ブロックをどのようにコーディングしたかを次に示します。
スクリプトの下部ではswitch ($psCmdlet.ParameterSetName)
、スイッチのさまざまな機能を処理するために使用します。を実行するGet-Help Update-DNS
と、期待される出力が表示されます。
関数を呼び出して-Reset
パラメーターを指定すると、スクリプトは期待どおりに実行されますが、パラメーターを指定せずに呼び出すと、デフォルトが有効にならず1
、 、$true
、true
、またはEnterキーを押して、デフォルト-Reset
パラメーターのように見えるものを常に受け入れます。赤いエラー メッセージをスローします。
-Reset
関数を呼び出すコードがパラメーターを提供しない場合、関数がスイッチのデフォルトを取得する方法について誰か提案がありますか?
powershell - [string] vs [hashtable] vs [pscustomobject] に基づいてパラメーター セットを解決できないのはなぜですか?
この関数を考えてみましょう:
配管[pscustomobject]
は期待どおりに動作します。
ただし、パイピング[string]
は例外をスローします。
そう[hashtable]
です:
DefaultParameterSetName='hastable'
原因を追加しますが、正しく解決し[hashtable]
ません。[string]
Trace-Command からの出力を解釈する経験がありません。[string]
の出力に次の行が含まれていることに気付きました。
arg [string] を param [PsCustomObject] にバインド成功
PowerShell[string]
が[PsCustomObject]
. しかし、'string' -is [pscustomobject]
評価すると$false
.
これにより、次の質問が残ります。
[string]
PowerShell が aと a の型の違いに基づいてパラメーター セットを選択できないのはなぜ[pscustomobject]
ですか?- その理由は、PowerShell が a
[string]
をa と見なすため[pscustomobject]
ですか? もしそうなら、それはなぜですか? - 異なるタイプを使用して異なるパラメーター セットを選択できるようにする回避策はありますか?
powershell - PowerShell は、使用中のパラメーター セットを特定できません
4 つのパラメーターを持つ関数があり、そのうちの 2 つを設定するかどうかを指定できます。パラメーター セットを使用して、設定されているパラメーターを特定しようとしていますが、パラメーター セットの解決に問題が発生しています。これらは 4 つの可能なパラメータ セットです -
- どちらのエラーオブジェクトまたは SplunkData
- 両方のエラー オブジェクトと SplunkData
- OnlyErrorObject
- SplunkData のみ
以下のサンプル コードを使用して 4 つのパラメーター セットすべてをテストすると、エラー オブジェクトのみと一部の Splunk データのみのテストが両方とも次のエラーで失敗します -
Test-ParameterSets : 指定された名前付きパラメーターを使用してパラメーター セットを解決できません。
私の調査によると、これは失敗するようです。これは、PowerSehll がパラメーター セットを/にする必要があるBothErrorObjectAndSplunkData
かどうかを判断できないためです。これは理解できます。OnlyErrorObject
OnlySplunkData
上記のどのパラメータ セットが使用されているかを判断するためにコードを変更するにはどうすればよいですか? パラメータ セットでは不可能な場合、他にどのように目標を達成できますか?
サンプルコード
コード出力例
エラー オブジェクトでも Splunk データでもない -
-- パラメータ セット: NoneErrorObjectOrSplunkDataTest-ParameterSets : 指定された名前付きパラメーターを使用してパラメーター セットを解決できません。
行:31 文字:1
+ Test-ParameterSets -Message "Only an error object" -ErrorObject (New- ...
+ ~~~~~~~~~~~~~~~~~~~~~ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+ CategoryInfo : InvalidArgument: (:) [Test-ParameterSets]、ParameterBindingException
+ FullyQualifiedErrorId : AmbiguousParameterSet,Test-ParameterSetsTest-ParameterSets : 指定された名前付きパラメーターを使用してパラメーター セットを解決できません。
行:32 文字:1
+ Test-ParameterSets -Message "Only some Splunk data" -SplunkData "Test ...
+ ~~~~~~~~~~~~~~~~~~~~~~~ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+ CategoryInfo : InvalidArgument : (:) [Test-ParameterSets]、ParameterBindingException
+ FullyQualifiedErrorId : AmbiguousParameterSet、Test-ParameterSetsエラー オブジェクトと Splunk データの両方 -
-- パラメータ セット: BothErrorObjectAndSplunkData