gpt4 book ai didi

powershell - 检查函数中是否存在参数

转载 作者:行者123 更新时间:2023-12-03 11:47:34 26 4
gpt4 key购买 nike

我有一个功能如下:

function T
{
Param
(
[switch] $IsValueNameRegularExpression
)

..
}

通常要确定参数是否存在,您可以执行 if ($Param) ,只看到这是一个 [switch] , 如果函数被调用为 T -IsValueNameRegularExpression:$false将在 if ($IsValueNameRegularExpression) 上返回 false ,即使参数存在 - 即调用者为可选参数指定了一个值。

如果我从 [switch] 更改参数类型至 [bool]显然,同样的事情会发生。

在我的函数代码中,我调用了一些 .NET 方法,这些方法包含我的 [bool] 的默认设置。 `[switch]` 参数,所以除非用户指定了一个值(是真还是假),否则我不想将它传递给 .NET 方法。

我可以为参数分配默认值以匹配 .NET 方法的默认值,但这是假设 .NET 方法的默认值永远不会改变,这可能不是真的......

那么,有没有更优雅的方式来做到这一点?

最佳答案

使用 $PSBoundParameters.ContainsKey()为了检查参数是否存在:

function T
{
Param
(
[switch] $IsValueNameRegularExpression
)

$PSBoundParameters.ContainsKey('IsValueNameRegularExpression')
}

T
T -IsValueNameRegularExpression
T -IsValueNameRegularExpression:$false

输出:
False
True
True

关于powershell - 检查函数中是否存在参数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25326732/

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