Cha*_*les 7 powershell conditional if-statement
我有一个脚本,它通过解析日志文件来检查电脑的健康状况,以寻找妥协指标。如果脚本找到某个事件 id,它会返回一条规范化的消息。最终目标是对这些回报进行数学运算——这将为该 PC 生成一个健康评分。
我需要知道的是,如果找到事件 id,如何设置变量(比如 X 的值为 1),如果找不到事件 id,则如何设置相同的变量(比如 X 的值为 2)。如果我只是在脚本中设置两个变量 - 在它们各自的 if/else 块中,无论条件如何,最后一个变量是否总是覆盖第一个变量?
不幸的是,PowerShell 没有像 Perl ( $var = (<condition>) ? 1 : 2;)这样的条件赋值语句,但是您可以将if语句的输出分配给变量:
$var = if (<condition>) { 1 } else { 2 }
Run Code Online (Sandbox Code Playgroud)
当然,您也可以采用“经典”方法并直接在各自的分支中分配变量:
if (<condition>) {
$var = 1
} else {
$var = 2
}
Run Code Online (Sandbox Code Playgroud)
第二个赋值不会取代第一个赋值,因为根据条件的结果,只有其中一个被实际执行。
另一种选择(具有更多的 hack 值)是根据条件的布尔结果计算值。否定布尔值,将其转换为 int 并将其加 1:
$var = [int](-not (<condition>)) + 1
Run Code Online (Sandbox Code Playgroud)
小智 8
在 Powershell 7 中,您可以使用三元运算符:
$x = $true ? 1 : 2
echo $x
Run Code Online (Sandbox Code Playgroud)
显示1.
然而,您可能想要的是switch,例如,
$in = 'test2'
$x = switch ($in) {
'test1' {1}
'test2' {2}
'test3' {4}
}
echo $x
Run Code Online (Sandbox Code Playgroud)
显示2.
| 归档时间: |
|
| 查看次数: |
23861 次 |
| 最近记录: |