私はこの機能を持っています:
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
で問題を解決できます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]
コメントを追加