【发布时间】:2020-06-14 02:01:06
【问题描述】:
如果参数一设置为 bbb,那么我想强制参数二。是否可以以某种方式使用参数集来做到这一点,还是我只需将此逻辑添加到脚本本身?
我需要的示例:
param (
[Parameter(Mandatory, ParameterSetName = 'default')]
[ValidateSet(“aaa”, ”bbb”, ”ccc”, "ddd")]
[String]
$One,
[Parameter(ParameterSetName = 'default')]
[ValidateScript( { $One -eq 'bbb'; THEN MAKE THIS PARAM MANDATORY! })]
[String]
$Two
)
$One 的值似乎尚未设置,因为我尝试这样做并且 one.txt 为空
[ValidateScript( { $One > One.txt; $true })]
编辑
虽然有 DynamicParam{},但只有在您进行了开始、处理、结束等设置时才看起来像它。这是一个简单的功能,我不想添加它。此外,DynamicParam 似乎需要大量的样板代码才能工作
编辑
看起来 DynamicParam 是唯一的方法,但我认为它很疯狂。这很奇怪且不可读,但我仍然更喜欢 Powershell 为我处理验证。
自己做还是很简单的:
if ($One -eq 'bbb' -and -not $Two) {
ThrowError Param Two required when One set to $One
}
【问题讨论】:
-
看起来 DynamicParam 需要 PROCESS 虽然我不想使用
-
没有进程块它会工作。查看答案。
标签: function powershell parameters