当前位置:网站首页 > 更多 > 玩电脑 > 正文

[玩转系统] PowerShell 布尔值 |布尔类型在 PowerShell 中如何工作?

作者:精品下载站 日期:2024-12-14 04:57:52 浏览:15 分类:玩电脑

PowerShell 布尔值 |布尔类型在 PowerShell 中如何工作?


[玩转系统] PowerShell 布尔值 |布尔类型在 PowerShell 中如何工作?

PowerShell 布尔值的定义

PowerShell 布尔运算符是 $true$false,它们提到任何条件、操作或表达式输出是否为 true 或 false,并且此时 $true 和 $false 输出分别返回,有时布尔运算符也被视为 1 表示 True,0 表示 false。

语法:

布尔类型是输出的形式,它的输出是True或False,但对于语法来说,它使用比较和条件运算符来比较两个或多个值。

<Value1> -eq <Value2>
<Value1> -ne <Value2>

还有其他基于命令和条件的语法。示例中显示了哪些内容。

布尔类型在 PowerShell 中如何工作?

计算布尔表达式时,它会将值的左侧与值的右侧进行比较。如果左侧的值等于右侧的值,则评估为 true,否则评估为 false,如下所示。

"Hello" -eq "hello"

输出:

[玩转系统] PowerShell 布尔值 |布尔类型在 PowerShell 中如何工作?

这取决于我们申请的条件。例如,上面的运算符不区分大小写。如果我们使用区分大小写的运算符,那么输出将为 false。例如,

"Hello" -ceq "hello"

输出:

[玩转系统] PowerShell 布尔值 |布尔类型在 PowerShell 中如何工作?

在布尔类型中,1 被视为$true0 被视为$false。例如,

1 -eq $true
0 -eq $false
$true -eq 1
$false -eq 0
-not 1
-not 0

输出:

[玩转系统] PowerShell 布尔值 |布尔类型在 PowerShell 中如何工作?

在上面的示例中,我们已经看到在 -EQ 运算符中将对象的左侧与对象的右侧进行比较,但让我们计算以下表达式。

$true -eq 2
2 -eq $true

输出:

[玩转系统] PowerShell 布尔值 |布尔类型在 PowerShell 中如何工作?

在上面的例子中,第一个为 true,但第二个为 false。因此,当第一个示例为 true 时,其相反的情况也应该为 true,但布尔运算符并不是这样工作的。它适用于类型转换,对象类型的左侧在这里起主要作用。在第一个示例中,2 自动类型转换为布尔值,而在第二个示例中,$true 类型转换为整数,如下所示。

[bool]$true -eq [bool]2
[int]2 -eq [int]$true

输出:

[玩转系统] PowerShell 布尔值 |布尔类型在 PowerShell 中如何工作?

IF/Else 等条件也使用布尔输出。如果条件为真,则使用“IF”块,否则执行 else 块。例如,

if(5 -gt 6){"5 is greater than 6"}
else{"5 is less than 6"}

在上面的示例中,如果条件检查表达式是 true 还是 false,并且这是一个布尔值,并且基于它,脚本将执行该块。

很少有命令还直接返回布尔值,例如 Test-Path、Test-Connection 等。

Test-Path C:\Tempvms.csv

输出:

[玩转系统] PowerShell 布尔值 |布尔类型在 PowerShell 中如何工作?

虽然Test-Connection默认情况下不会产生布尔输出,但当我们添加-Quiet参数时,它会产生布尔输出。

Test-Connection google123.com -Count 2 -Quiet

输出:

[玩转系统] PowerShell 布尔值 |布尔类型在 PowerShell 中如何工作?

Dollar + QuestionMark 语法 ($?) 也会生成布尔输出。它检查最后一个命令运行是成功还是失败,并给出相应的输出。

Get-Service notexist
$?

输出:

[玩转系统] PowerShell 布尔值 |布尔类型在 PowerShell 中如何工作?

示例

让我们讨论 PowerShell 布尔值的示例。

示例#1:使用比较运算符检查布尔值。

10 -eq 10
10 -gt 20
20 -gt 10
10 -lt 20
10 -le 11
10 -le 10
10 -ge 8
10 -ge 11

输出:

[玩转系统] PowerShell 布尔值 |布尔类型在 PowerShell 中如何工作?

对于字符串对象,

"abc" -eq "def"
"abc" -eq "abc"
"abc" -eq "abc","def"
"abc" -ne "abc"

输出:

[玩转系统] PowerShell 布尔值 |布尔类型在 PowerShell 中如何工作?

示例 #2:使用 cmdlet

使用返回输出布尔类型的 cmdlet。例如,

  • 测试路径命令。

该命令根据路径是否存在直接返回布尔值。例如,

Test-Path C:\Temp22
Test-Path C:\Temp

输出:

[玩转系统] PowerShell 布尔值 |布尔类型在 PowerShell 中如何工作?

  • 测试连接命令。

有些命令返回值而不是布尔值,但它们支持返回布尔值的参数。例如,Test-Connection 命令使用-Quiet 参数返回布尔值。

Test-Connection www.google.com -Count 2 -Quiet

输出:

[玩转系统] PowerShell 布尔值 |布尔类型在 PowerShell 中如何工作?

将上述命令与 If 条件一起使用,

If(Test-Connection google.com -count 2 -Quiet -EA Ignore){
Write-Output "Connection reachable"
}
else{
Write-Output "Connection is not reachable"
}

输出:

[玩转系统] PowerShell 布尔值 |布尔类型在 PowerShell 中如何工作?

示例 #3:不支持布尔输出参数的命令

有些命令不支持以 true 或 false 值作为输出的输出,在这种情况下,我们可以在 IF/else 条件内使用这些命令来处理布尔输出。

if(Get-Service WinRm -EA Ignore){
Write-Output "WINRM service is exist"
}
else{
Write-Output "WinRM service doesn't exist"
}

输出:

[玩转系统] PowerShell 布尔值 |布尔类型在 PowerShell 中如何工作?

您还可以在管道后面使用Where块来评估输出是真还是假。例如,

If(Get-Process | where{$_.Name -eq "Wrong Process"} -EA Ignore){
Write-Output "Process exist"
}
else{
Write-Output "Process Doesn't Exist"
}

输出:

[玩转系统] PowerShell 布尔值 |布尔类型在 PowerShell 中如何工作?

在上面的例子中,如果进程不存在,它会产生输出 false 并执行 else 条件。否则,输出 true 并执行 IF 条件。

示例#4:多个条件的布尔类型输出

当使用多个条件时,输出将如下所示。

- 并且将检查两个条件是否都为真,则输出为 True,否则为 False。

-OR 将检查任何条件是否为真,则输出为 True,否则为 False。

(5 -lt 6) -and (4 -lt 5)
(5 -lt 6) -and (5 -lt 4)
(5 -lt 6) -or (5 -gt 4)
(5 -lt 6) -or (4 -gt 5)
(6 -lt 5) -or (4 -gt 5)

输出:

[玩转系统] PowerShell 布尔值 |布尔类型在 PowerShell 中如何工作?

结论

布尔类型(True 和 False)在使用脚本时非常有用。在编写脚本时,程序员需要评估先前的输出,并根据正确或错误转移到下一个命令。它还有助于为脚本正确创建流程图。

您需要 登录账户 后才能发表评论

取消回复欢迎 发表评论:

关灯