powershell - 使用 If 语句设置变量,但如果不满足条件则不更改它?
问题描述
我正在尝试从 IF 语句设置输出变量,但仅在满足条件时才设置,但如果不满足条件,则保持变量不变。出于某种原因,即使不满足条件,IF 语句也会更改变量。如果条件失败,我如何告诉 IF 语句什么都不做?
我最初从 IF 语句开始,在它的脚本块中设置 $Output = "Error",但这只是将它设置为失败,即使它不应该。
$Output = "Pass"
$ErrorCodes = 2, 26, 50, 48, 2820, 4239
$ErroredBackups = Import-Csv C:\temp\NetBackupJobs_GS.csv
foreach ($ErroredBackup in $ErroredBackups) {
$Output = if ($ErroredBackup.status -in $ErrorCodes) {
"Error"
}
}
$Output
CSV 样本:
jobid,开始,状态 334382,17/07/2019 16:35,0
当它应该是“错误”或“通过”时,我一直将 $Output 设为空白
解决方案
在块内移动赋值 ( $Output = ...
) if
:
if ($ErroredBackup.status -in $ErrorCodes) {
$Output = "Error"
}
另一种可能更符合 PowerShell 习惯的方法是利用Where-Object
查找“真正失败”的备份:
$ErrorCodes = 2, 26, 50, 48, 2820, 4239
$ErroredBackups = Import-Csv C:\temp\NetBackupJobs_GS.csv
if($ErroredBackups |Where-Object status -in $ErrorCodes){
# At least one backup job must have had a terrible error code
"Error"
}
else{
# None found, pass
"Pass"
}
推荐阅读
- python-3.x - Pytorch:重新缩放后RGB值范围为0-1,如何标准化图像?
- prolog - 如何使用谓词逻辑表示以下语句?
- bash - GIT_ASKPASS 不止回声
- mongodb - 如何使用 $lookup 获取 mongodb 中外部字段的计数?
- angular9 - Angular 9 ng-bootstrap 6.1 模态组件打开方法不起作用
- python - python中具有许多参数的函数
- bash - Bash 计数未注释的行并使用文件名写入输出
- firebase - 如何使用颤振将我在firestore中的所有文档返回到列表中
- c# - 箭头键输入与专注于对象
- python - 在python中将列表变成数组数组