如何在Powershell中将开关参数标记为必需参数
我很确定,除了我所发现的以外,我没有其他选择,但我想选择集体互联网大脑 在向自定义函数传递布尔值时,我更喜欢使用[switch]参数。但是,在一些情况下,我希望将switch参数标记为强制参数。这可以选择通过参数上的[参数(强制=$true)]实现。然而,我真的不喜欢出现的UI提示。我更喜欢抛出异常 但是,开关可以是true或false,“IsPresent”属性没有区别。如果我将开关参数传递为-example:$false,开关将报告$example.IsPresent为false 我求助于使用[bool]。例如:如何在Powershell中将开关参数标记为必需参数,powershell,parameters,switch-statement,Powershell,Parameters,Switch Statement,我很确定,除了我所发现的以外,我没有其他选择,但我想选择集体互联网大脑 在向自定义函数传递布尔值时,我更喜欢使用[switch]参数。但是,在一些情况下,我希望将switch参数标记为强制参数。这可以选择通过参数上的[参数(强制=$true)]实现。然而,我真的不喜欢出现的UI提示。我更喜欢抛出异常 但是,开关可以是true或false,“IsPresent”属性没有区别。如果我将开关参数传递为-example:$false,开关将报告$example.IsPresent为false 我求助于使
param
(
[bool]$theValue = $(throw('You didn't specify the value!'))
);
我还可以玩其他把戏吗?在某种程度上,
开关
参数始终是必需的。如果不指定它,它将得到一个值false。如果您指定它(-var
),它将获得一个值true,如果您也指定该值(-var:$false
),它将获得指定的值
我真的想不出强制指定开关的情况。如果不指定,则为false。就这么简单
我想你想要的是特别提到param的值是真是假?如果是这样的话,您提到的bool
版本就是我想要的,尽管它与开关的工作方式相同:
param([switch]$a = $(throw "You didn't specify the value"))
还有关于$example.IsPresent
-我知道这不是直观的/错误的,但它与开关变量本身的值相同。这就是开关参数
的构造函数的定义方式,它唯一的属性是IsPresent
:
创建包含布尔值的新SwitchParameter对象
它标识开关是否存在
如果异常消息是困扰您的问题,那么这是您将得到的最好消息。哎呀!我错误地得出结论,在参数列表中使用“开关”时抛出错误将不起作用。我又试了一次,看起来很好。manojlds的回答既准确又详细。-var:$false是我要找的。谢谢为什么没有两个开关<代码>示例
和示例关闭
。然后,当两个都不显示时,抛出一个错误。