是否有一种简单的方法可以让参数集允许A或B但不能同时指定两者?
E.G。我的脚本将接受:
.\SimpleScript.ps1 -A "str1" -X 1 -Y 2 -Z 3
或
.\SimpleScript.ps1 -B "str2" -X 1 -Y 2 -Z 3
但不是:
.\SimpleScript.ps1 -A "str1" -B "str2" -X 1 -Y 2 -Z 3
答案 0 :(得分:7)
您可以编写CmdLet并使用Parameter sets。
查看About Functions Advanced Parameters
上的基础文档Param
(
[parameter(Mandatory=$true,
ParameterSetName="WithA")]
[String]
$A,
[parameter(Mandatory=$true,
ParameterSetName="WithB")]
[String]
$B,
[parameter(Mandatory=$true)]
[Int]
$X
...
)
答案 1 :(得分:3)
您想使用Parameter Sets。通过在一个参数集中将-A
作为必需参数并在另一个参数集中强制使用-B
,同时提供-A
和-B
将导致PowerShell无法解析哪个参数设置你想要的,并拒绝命令(错误表明它无法解析参数集)。请查看this Scripting Guy column以获取示例。