我有一个更改注册表项值的 PowerShell 函数。代码:
param(
[Parameter()] [switch]$CreateNewChild,
[Parameter(Mandatory=$true)] [string]$PropertyType
)
它有一个参数“CreateNewChild”,如果设置了该标志,该函数将创建 key 属性,即使它没有找到。参数“PropertyType”必须是强制性的,但前提是已设置“CreateNewChild”标志。
问题是,如何使一个参数成为强制性参数,但前提是已指定另一个参数?
好的,我一直在玩它。这确实有效:
param(
[Parameter(ParameterSetName="one")]
[switch]$DoNotCreateNewChild,
[string]$KeyPath,
[string]$Name,
[string]$NewValue,
[Parameter(ParameterSetName="two")]
[switch]$CreateNewChild,
[Parameter(ParameterSetName="two",Mandatory=$true)]
[string]$PropertyType
)
但是,这意味着 $KeyPath、$Name 和 $NewValue 不再是强制性的。将“一个”参数集设置为强制会破坏代码(“参数集无法解析”错误)。这些参数集令人困惑。我确定有办法,但我不知道该怎么做。