Powershell関数-パラメーターは、ある場合には必須であり、別の場合はオプションである必要があります

ラカ

私はこの機能を持っています:

function AlwaysRunAtLogon {
    [CmdletBinding()]
    param (
        [Parameter(Mandatory=$true)]
        [System.String]$NomTache,
        [Parameter(Mandatory = $true)]
        [System.String]$Script,
        [switch]$retrait

    )

...
}

ユースケース#1は次のとおりです。

AlwaysRunAtLogon -NomTache AnyName C:\temp\script.ps1

何かを追加するコードを実行します。これは正常に機能しています。最初のパラメーター(NomTache)の値に基づいて何かを削除できるように、関数にSWITCHパラメーターを追加したいと思います。

したがって、ユースケース#2は次のようになります。

AlwaysRunAtLogon -NomTache AnyName -Retrait

ここに問題があります。ケース#1の場合、ユーザーがスクリプトファイルを提供する必要があるように、$ Scriptを必須のままにしておきます。ただし、ケース#2の場合、削除操作は最初のパラメーターのみが機能する必要があるため、$ Scriptはオプションになりました(NomTache)

ケース1と2の両方を使用できるように、この関数をどのように適応させるのですか?おそらくどこかに論理的な問題があります。私は関数が初めてなので、あなたの助けに感謝します。私はどんな再設計にもオープンです。

「RemoveAlwaysRunAtLogon」などの別の関数を実行して、このように実行する方がよいでしょうか。

RemoveAlwaysRunAtLogon -NomTache AnyName
vrdse

で問題を解決できますParameterSets

私があなたの要件を完全に理解したかどうかわからないので、これは単なる例です。しかし、モデルは明確だと思います。

function AlwaysRunAtLogon {
    [CmdletBinding()]
    param (
        [Parameter(
            ParameterSetName='Name1',
            Mandatory=$true
        )]
        [Parameter(
            ParameterSetName='Name2',
            Mandatory=$true
        )]
        [System.String]$NomTache,
        [Parameter(
            ParameterSetName='Name1',
            Mandatory = $true
        )]
        [System.String]$Script,
        [Parameter(
            ParameterSetName='Name2'
        )]
        [switch]$retrait

    )

...
}

この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。

侵害の場合は、連絡してください[email protected]

編集
0

コメントを追加

0

関連記事

分類Dev

関数がconstの場合、パラメーターもconstである必要がありますか?

分類Dev

TypeScript:string |を使用する場合、インデックス署名パラメータは「string」または「number」である必要があります。数

分類Dev

関数内のパラメーター、それらのいくつかはオプションであり、いくつかは必須です

分類Dev

nilが特定のデフォルト値を返す必要がある場合に、関数パラメーターでオプションを使用する最もクリーンな方法は何ですか?

分類Dev

constではないメンバー関数は、C ++ 14以降の場合にのみconstexprである必要があります

分類Dev

エラー 'カスタムプラグインPhonegap3.0を追加する場合、path.joinへの引数は文字列である必要があります'

分類Dev

あるプロシージャを別のプロシージャから呼び出す場合:エラー:プロシージャパラメータ「...」は出力パラメータですが、対応する引数は書き込み可能ではありません

分類Dev

別のパッケージの関数にパラメーターとして渡された場合、構造体はタイプではありません

分類Dev

定義内にパラメータがあるが実際の関数にはパラメータがない場合があるのはなぜですか?

分類Dev

非型パラメーターのテンプレート引数は式である必要があります

分類Dev

内部リターン関数から戻る場合、パイプは関数ではありません

分類Dev

データフレームに関数を適用する場合、dim(X)は正の長さである必要があります

分類Dev

関数(JavaScript、jQuery)をトリガーする場合、それは単純である必要があります

分類Dev

関数パラメーターで使用する場合、インクルードは関数ではありません

分類Dev

変数をオプション値として宣言する場合、Swiftenumには「rawValue」という名前のメンバーがありません

分類Dev

変数をオプション値として宣言する場合、Swiftenumには「rawValue」という名前のメンバーがありません

分類Dev

関数の戻り値がオプションの場合、「returnnil」ステートメントを指定する必要がありますか?

分類Dev

GraphQLクエリ/ミューテーションを作成する場合、変数はどのデータ型にする必要がありますか?

分類Dev

別の無関係な関数がコードにある場合の「関数ではありません」エラー

分類Dev

C ++の `for`ループは、複数ある必要がある場合に1回だけ繰り返します

分類Dev

イールドを使用するcdefまたはcpdef関数がある場合、どのタイプにする必要がありますか?

分類Dev

どのような場合にデフォルトは関数である必要がありますか?

分類Dev

gccではあるがClangではテンプレート関数の未使用パラメーターに関する警告はありません

分類Dev

基本クラスがメンバー関数のパラメーター型である場合、基本クラスのテンプレート引数を指定する必要がありますか?

分類Dev

.hide()は、ループから実行する場合の関数エラーではありません

分類Dev

テンプレート化された関数を特殊化して、引数の型がポインターである場合とそうでない場合を区別する方法はありますか?

分類Dev

個別のモデルではなく、複数のパラメーターでPOSTメソッドを使用する必要がある場合

分類Dev

フルカレンダーeventElement.draggableは関数ではありません「編集可能:true」オプションを使用する場合

分類Dev

caseステートメントを使用する場合は、PostgreSQL列をGROUP BY句に含めるか、集計関数で使用する必要があります

Related 関連記事

  1. 1

    関数がconstの場合、パラメーターもconstである必要がありますか?

  2. 2

    TypeScript:string |を使用する場合、インデックス署名パラメータは「string」または「number」である必要があります。数

  3. 3

    関数内のパラメーター、それらのいくつかはオプションであり、いくつかは必須です

  4. 4

    nilが特定のデフォルト値を返す必要がある場合に、関数パラメーターでオプションを使用する最もクリーンな方法は何ですか?

  5. 5

    constではないメンバー関数は、C ++ 14以降の場合にのみconstexprである必要があります

  6. 6

    エラー 'カスタムプラグインPhonegap3.0を追加する場合、path.joinへの引数は文字列である必要があります'

  7. 7

    あるプロシージャを別のプロシージャから呼び出す場合:エラー:プロシージャパラメータ「...」は出力パラメータですが、対応する引数は書き込み可能ではありません

  8. 8

    別のパッケージの関数にパラメーターとして渡された場合、構造体はタイプではありません

  9. 9

    定義内にパラメータがあるが実際の関数にはパラメータがない場合があるのはなぜですか?

  10. 10

    非型パラメーターのテンプレート引数は式である必要があります

  11. 11

    内部リターン関数から戻る場合、パイプは関数ではありません

  12. 12

    データフレームに関数を適用する場合、dim(X)は正の長さである必要があります

  13. 13

    関数(JavaScript、jQuery)をトリガーする場合、それは単純である必要があります

  14. 14

    関数パラメーターで使用する場合、インクルードは関数ではありません

  15. 15

    変数をオプション値として宣言する場合、Swiftenumには「rawValue」という名前のメンバーがありません

  16. 16

    変数をオプション値として宣言する場合、Swiftenumには「rawValue」という名前のメンバーがありません

  17. 17

    関数の戻り値がオプションの場合、「returnnil」ステートメントを指定する必要がありますか?

  18. 18

    GraphQLクエリ/ミューテーションを作成する場合、変数はどのデータ型にする必要がありますか?

  19. 19

    別の無関係な関数がコードにある場合の「関数ではありません」エラー

  20. 20

    C ++の `for`ループは、複数ある必要がある場合に1回だけ繰り返します

  21. 21

    イールドを使用するcdefまたはcpdef関数がある場合、どのタイプにする必要がありますか?

  22. 22

    どのような場合にデフォルトは関数である必要がありますか?

  23. 23

    gccではあるがClangではテンプレート関数の未使用パラメーターに関する警告はありません

  24. 24

    基本クラスがメンバー関数のパラメーター型である場合、基本クラスのテンプレート引数を指定する必要がありますか?

  25. 25

    .hide()は、ループから実行する場合の関数エラーではありません

  26. 26

    テンプレート化された関数を特殊化して、引数の型がポインターである場合とそうでない場合を区別する方法はありますか?

  27. 27

    個別のモデルではなく、複数のパラメーターでPOSTメソッドを使用する必要がある場合

  28. 28

    フルカレンダーeventElement.draggableは関数ではありません「編集可能:true」オプションを使用する場合

  29. 29

    caseステートメントを使用する場合は、PostgreSQL列をGROUP BY句に含めるか、集計関数で使用する必要があります

ホットタグ

アーカイブ