我正在构建一个构建哈希表的 PowerShell 函数。我正在寻找一种方法,可以使用开关参数将其指定为不存在、true 或 false。我怎样才能确定这一点?
我可以通过使用 [boolean] 参数来解决这个问题,但我发现这不是一个优雅的解决方案。或者我也可以使用两个开关参数。
function Invoke-API {
param(
[switch]$AddHash
)
$requestparams = @{'header'='yes'}
if ($AddHash) {
$requestparams.Code = $true
}
当指定 false 时如何让它显示 false,而未指定 switch 参数时不显示任何内容?
要检查参数是否由调用者传入,请检查$PSBoundParameters
自动变量:
if($PSBoundParameters.ContainsKey('AddHash')) {
# switch parameter was explicitly passed by the caller
# grab its value
$requestparams.Code = $AddHash.IsPresent
}
else {
# parameter was absent from the invocation, don't add it to the request
}
如果您想要传递多个开关参数,请迭代中的条目$PSBoundParameters
并测试每个值的类型:
param(
[switch]$AddHash,
[switch]$AddOtherStuff,
[switch]$Yolo
)
$requestParams = @{ header = 'value' }
$PSBoundParameters.GetEnumerator() |ForEach-Object {
$value = $_.Value
if($value -is [switch]){
$value = $value.IsPresent
}
$requestParams[$_.Key] = $value
}
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)