我不确定这是否存在或不可能,或者最好只使用两个参数来实现,我不确定使用通用上下文或更具体的示例是否会更清楚,所以我'已经提供了两个:
更通用
我有一种情况,我更喜欢 PowerShell 函数的三种不同行为之一,基于参数。它的行为有点像一个开关参数,$false
如果没有提供,则具有一个值 ( ),如果提供,则具有不同的值 ( $true
)。如果提供了一个值 (a [string]
),第三个选项将做出更具体的行为,这将使它更像一个完整的参数。
更详细
具体来说,我正在考虑这样一种情况,即可以返回的对象可能有多种独特的方式,以及多种过滤和组合它们的方式。我想将这三种类型的行为组合到“Get-Stuff”Cmdlet 的过滤类型参数中,我想将其称为“唯一”。
- 如果未提供(例如
Get-Stuff
),则不会为输出对象提供“唯一”类型的过滤 - 所有对象都将返回/通过管道传输到输出。 - 如果要提供参数,但没有值(例如
Get-Stuff -unique
),我希望参数的默认值指定属性的名称,也许Name
,其中每个返回的结果都将确保具有唯一的名称,(也许是第一个找到的,或者不确定的) - 如果为参数提供了一个值(例如组合)。每个返回/管道对象将具有命名属性的唯一(组合)值
Get-Stuff -unique "Context","ID"
无论此信息的具体用途如何...
抛开实际功能不谈,有没有办法以这种方式将信息传递给 Cmdlet?我想我可以组合一个参数和一个开关(也许-unique
用-indexFields
),或者让一个参数覆盖一个开关等,但是是否可以只使用一个参数而不是两个?