PowerShell参数集:需要设置A或B.

时间:2017-07-25 12:41:25

标签: powershell parameters

是否有一种简单的方法可以让参数集允许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

2 个答案:

答案 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以获取示例。