gpt4 book ai didi

powershell - PowerShell中的多个参数集

转载 作者:行者123 更新时间:2023-12-03 01:16:59 27 4
gpt4 key购买 nike

是否可以使用多组参数使两组参数互斥,而使另外两组参数互斥呢?例如,假设我有四个参数:

param(
$param1,
$param2,
$param3,
$param4,
)

参数1和2互斥,但可以调用3或4来调用。同样,param3和param3互斥,但是可以调用1还是2来调用。这些是可以一起调用的参数集:
./MyScript.ps1 -param1 -param3
./MyScript.ps1 -param1 -param4
./MyScript.ps1 -param2 -param3
./MyScript.ps1 -param2 -param4

这些不应同时调用:
./MyScript.ps1 -param1 -param2
./MyScript.ps1 -param1 -param3 -param4
./MyScript.ps1 -param2 -param3 -param4
./MyScript.ps1 -param3 -param1 -param2
./MyScript.ps1 -param4 -param1 -param2
./MyScript.ps1 -param3 -param4

我已经尝试了一些方法,但是所有这些方法似乎都导致奇怪的输出,并且仍然允许我调用我认为是“非法”的参数集。这是我设置参数集的示例:
[Parameter(ParameterSetName="onethree",Mandatory=$true,HelpMessage="a or b")]
[Parameter(ParameterSetName="onefour",Mandatory=$true,HelpMessage="a or b")]
[ValidateSet("a","b")]
[string]$one,
[Parameter(ParameterSetName="twothree",Mandatory=$true)]
[Parameter(ParameterSetName="twofour",Mandatory=$true)]
[switch]$two,
[Parameter(ParameterSetName="onethree")]
[Parameter(ParameterSetName="twothree")]
[string[]]$PropertyClass,
[Parameter(ParameterSetName="onefour")]
[Parameter(ParameterSetName="twofour")]
[string[]]$PropertyName

该脚本已执行,但未正确完成(如果我用$ two调用它,它将尝试用$ one做某事,并导致脚本失败)。如果我浏览可能的参数,我看不到$ two。但是,如果我键入 -t并点击[tab],它将自动完成为 -two。任何想法可能是什么原因造成的?有可能做我想要的吗?

最佳答案

使用Get-Help
查看参数集是什么的最好方法是使用Get-Help My-Function。我使用给定的Test-Sets块创建了一个名为param()的函数,这是Get-Help的输出:

SYNTAX
Test-Sets -one <string> {a | b} [-PropertyName <string[]>] [<CommonParameters>]

Test-Sets -one <string> {a | b} [-PropertyClass <string[]>] [<CommonParameters>]

Test-Sets -two [-PropertyName <string[]>] [<CommonParameters>]

Test-Sets -two [-PropertyClass <string[]>] [<CommonParameters>]

除非您始终需要2个参数,否则这似乎满足您的要求,在这种情况下,我认为您唯一需要做的就是在其2个参数集中分别使 $PropertyClass$PropertyName为必需。

如果我在这里缺少任何内容,请按照@mike z的要求进行澄清并包含失败的命令。

关于powershell - PowerShell中的多个参数集,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27452741/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com