gpt4 book ai didi

powershell - 如何在Powershell中将开关参数标记为必选

转载 作者:行者123 更新时间:2023-12-04 00:49:40 27 4
gpt4 key购买 nike

我敢肯定,除了发现的问题之外,我没有其他选择,但我想选拔集体的互联网人才。

将 bool 值传递给自定义函数时,我更喜欢使用 [switch] 参数。但是,在某些情况下,我想将switch参数标记为强制性的。可以选择通过参数上的 [parameter(Mandatory = $ true)] 完成此操作。但是,我真的不喜欢显示的UI提示。我更喜欢抛出一个异常。

但是,开关可以是true或false,并且“IsPresent”属性没有区别。如果我将开关参数传递为 -example:$ false ,则该开关将报告$ example.IsPresent为false!

我求助于使用[bool]。例如:

param
(
[bool]$theValue = $(throw('You didn't specify the value!'))
);

我还有其他技巧可以拉吗?

最佳答案

在某种程度上,switch参数始终是必需的。如果未指定,则它的值为false。如果您指定它(-var),它将得到一个true值;如果您也指定了它的值(-var:$false),那么它将得到指定的值。

我真的无法想到必须指定开关的情况。如果未指定,则为false。就那么简单。

我认为您要具体提及参数的值是对还是错?如果是这种情况,您提到的bool版本就是我想要的版本,尽管它也与switch相同:

param([switch]$a  = $(throw "You didn't specify the value"))

还有关于 $example.IsPresent的问题-我知道它不是直观的/破损的,但它与switch变量本身的值相同。这就是 Switch Paramater的构造函数的定义方式,它唯一的属性就是 IsPresent:

Creates a new SwitchParameter object that includes a Boolean value that identifies whether the switch is present.



http://msdn.microsoft.com/en-us/library/system.management.automation.switchparameter.ctor%28v=vs.85%29.aspx

关于powershell - 如何在Powershell中将开关参数标记为必选,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7235203/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com