次のコマンドレットを検討してください (usings は削除されています)。
public class Foo : Cmdlet
{
[Parameter(Mandatory = true, ParameterSetName = "Foo"]
public string A { get; set; }
[Parameter(Mandatory = true, ParameterSetName = "Bar"]
public string B { get; set; }
[Parameter(Mandatory = true, ParameterSetName = "Bar"]
public string C { get; set; }
protected override void ProcessRecord()
{
/* magic goes here */
}
}
このコマンドレットを実行する方法は次のとおりです。
# like this
Foo
# or
Foo -A "test"
# or
Foo -B "test" -C "test"
A と B を使用しても機能せず、B のみを使用しても機能しません (C が必要です)。
それで問題ありませんが、入力するだけでコマンドレットを実行できないようにしたいのでFoo
、コードで確認できるようになりましたが、Powershell は非常に優れているため、ランタイムを通じてこれを強制する方法はありますか?