gpt4 book ai didi

powershell - 为什么将true分配给变量it不会得出true?

转载 作者:行者123 更新时间:2023-12-02 23:07:31 27 4
gpt4 key购买 nike

$test = true
if($test) {
Write-Output "true"
} else {
Write-Output "false"
}

输出为“false”,但是为什么呢?我将 truefalse分配给COM对象属性,它似乎正常工作...我在做错什么吗?什么时候在PowerShell中使用 true$true

编辑:一些用户提到我应该看到一个错误,但是我没有。我已经在PowerShell 2.0(Windows 7)和PowerShell 4.0(Windows 8.1)中进行了尝试。 truefalse确实会像我所说的那样更改COM属性。

编辑:事实证明,正在发生的是我们将 true分配给COM属性,但实际上它们是错误的。我们的程序中有gnuwin32程序,其中两个程序为true和false:
C:\gnuwin32\bin\true.EXE
C:\gnuwin32\bin\false.EXE

因此,在那些计算机上,类似$x = true的命令将运行C:\gnuwin32\bin\true.EXE命令,该命令没有输出,并且$x为null。没人能弄清楚,要设置为true的com属性实际上并不是那样设置的。

标记为正确的答案说明“真实”,并且该值实际上是空值,这正是帮助我弄清楚它的原因。

最佳答案

问题是为什么会发生,让我在答案中深入研究
if($test)检查是否为真。基本上,它将表达式的结果转换为 bool(boolean) 值,然后检查其是对还是错。您可以阅读有关此in that answer的更多信息。

在您的情况下,像Martin Brandl mentioned in his helpful answer一样,尝试分配$test = true(在大多数情况下)会导致异常,但会继续执行

NOTE: The statement in bold is not always true as it depends on $ErrorActionPreferrence but in your case it's true as you mentioned that you receive the output.



分配失败后, $test的值为 $null-您可以通过以下方法进行检查:
$test -eq $null
$null是falsey值,因此 if()中的表达式的计算结果为 $false,并且执行了 else关键字后的代码,因此输出中的 False

关于powershell - 为什么将true分配给变量it不会得出true?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58298486/

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