gpt4 book ai didi

PowerShell boolean 值接受所有数字

转载 作者:行者123 更新时间:2023-12-02 23:44:38 29 4
gpt4 key购买 nike

我想我在这里遗漏了一些明显的东西。据我了解 Boolean只能是 0 , $False , 1$True .但是当我尝试其他整数时,它们也被接受为 $True .

当使用其他整数时,01该函数应该抛出一个错误,指出它不是 Boolean .或者是否应该通过使用 ValidateSet 添加错误处理来解决此问题?对于这 4 种不同的输入选项?

示例:

Function Test-Bar {
[CmdletBinding()]
Param(
[Parameter(Mandatory=$True,Position=0)]
[Bool]$Var
)
Write-Host "Yes, you entered a valid boolean: $Var" -ForegroundColor Yellow
}

[INT]$Number = '0'
Test-Bar -Var $Number

[INT]$Number = '1'
Test-Bar -Var $Number

[INT]$Number = '10'
Test-Bar -Var $Number # Incorrect, ten is not a boolean

[INT]$Number = '22'
Test-Bar -Var $Number # Incorrect, twenty two is not a boolean

感谢您的帮助。

最佳答案

我猜 [bool] type 隐式转换任何不是 $null , $false , 0或空字符串为 $true

> [bool]$true
True
> [bool]'foo'
True
> [bool]$false
False
> [bool]''
False
> [bool]$null
False

我本以为在你的情况下,使用 SwitchParameter在您的 cmdletbinding将是合适的:

Function Test-Bar {
[CmdletBinding()]
Param(
[Parameter(Mandatory=$True,Position=0)]
[Switch]$Var
)
Write-Host "Yes, you entered a valid boolean: $Var" -ForegroundColor Yellow
}

并调用:

> Test-Bar -var
Yes, you entered a valid boolean: True
> Test-Bar -var:$false
Yes, you entered a valid boolean: False

您可能还想查看答案 on this question如果你真的需要,它讨论了测试/转换为 boolean 值的方法。

关于PowerShell boolean 值接受所有数字,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28455929/

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