我很确定除了我发现的内容之外我没有其他任何选择,但我想选择集体网络大脑。
在将布尔值传递给自定义函数时,我更喜欢使用 [switch] 参数。但是,我有几种情况需要将switch参数标记为必需。这可以通过参数上的 [参数(Mandatory = $ true)] 来完成。但是,我真的不喜欢出现的UI提示。我更喜欢抛出异常。
但是,一个开关可以是true或false,而“IsPresent”属性没有区别。如果我将开关参数作为 -example:$ false 传递,则交换机会报告 $ example.IsPresent为false !
我已经使用了[bool]。例如:
param
(
[bool]$theValue = $(throw('You didn't specify the value!'))
);
我还有其他技巧吗?
答案 0 :(得分:20)
在某种程度上,switch
参数始终是必需的。如果未指定它,则其值为false。如果你指定它(-var
),它会得到一个值,如果你指定了值(-var:$false
),它也会得到指定的值。
我无法想到必须指定一个开关的情况。如果您未指定,则为false。就这么简单。
我认为你想要的是特别提到参数的价值是真还是假?如果是这种情况,您提到的bool
版本就是我想要的版本,尽管它与switch
的工作方式相同:
param([switch]$a = $(throw "You didn't specify the value"))
关于$example.IsPresent
- 我知道它不直观/坏,但它与switch变量本身的值相同。这就是定义Switch Paramater
的构造函数的方式,它唯一的属性是IsPresent
:
创建一个包含布尔值的新SwitchParameter对象 用于识别交换机是否存在。