我需要将数组中的值与可能结果的列表进行比较,然后根据列表是否匹配,在变量中返回值。
即我有一个名为$ErroredBackup
的数组,其列为“ status”
我需要将每个$ErroredBackup.Status
与可能的数字列表进行比较,如果匹配,请将$ output变量设置为Error。如果不匹配,请将$output
变量保留不变(我将其设置为Pass开头)
我尝试使用-contain
,但这似乎是另一回事-比较具有单个值的数组,而不是将单个值与列表进行比较。
这适用于单个值:
$Output="Pass"
$ErroredBackups = Import-Csv C:\temp\NetBackupJobs_GS.csv
foreach ($ErroredBackup in $ErroredBackups) {If ($ErroredBackup.status -eq 26) {$Output="Error"}}
但是我需要一个值范围:
$Output="Pass"
$ErroredBackups = Import-Csv C:\temp\NetBackupJobs_GS.csv
foreach ($ErroredBackup in $ErroredBackups) {If ($ErroredBackup.status -eq 2,26,50,48,2820,4239) {$Output="Error"}}
我想要的是foreach
循环遍历数组,如果它在.status列中找到任何列出的值,它将$output
的值更改为“ Error” ,否则将其保留为“通过”。最终的结果是将“通过”或“错误”写入文本文件,然后使用我们的网络监视工具解析该文件,并在发现错误时发出警报。
答案 0 :(得分:0)
根据情况使用-OR
语句。
$ErroredBackups = Import-Csv "C:\temp\NetBackupJobs_GS.csv"
foreach ($ErroredBackup in $ErroredBackups.status) {
If (@($ErroredBackup -eq "2" -OR $ErroredBackup -eq "26" -OR $ErroredBackup -eq "50" -OR $ErroredBackup -eq "48" -OR $ErroredBackup -eq "2820" -OR $ErroredBackup -eq "4239")) {
$Output="Error"
write-host $Output
} else{
$Output="Pass"
write-host $Output
}
}
-或-
您可以使用-match
$errorArr = "2","26","50","48","282","4239"
$ErroredBackups = Import-Csv "C:\temp\NetBackupJobs_GS.csv"
foreach ($ErroredBackup in $ErroredBackups.status) {
if ($errorArr -match $ErroredBackup){$Output="Error"}else{$Output="Pass"}
write-host $Output
}
-或-
使用compare-object
,然后在SideIndicator上进行条件检查
$errorArr = "2","26","50","48","2820","4239"
$ErroredBackups = Import-Csv "C:\temp\NetBackupJobs_GS.csv"
foreach ($ErroredBackup in $ErroredBackups.status) {
$Output = compare-object $errorArr $ErroredBackup
IF ($Output.SideIndicator -eq '=>'){write-host 'Pass'}else{write-host 'Error'}
}
答案 1 :(得分:0)
正如Lee_Dailey所说,in
运算符是您所需要的。下面是一个简化的示例
$errors = 1,2,3,5,6
$ErroredBackup = 4
if ($ErroredBackup -in $errors) { "Error" } else { "Pass" }
由于{{1}中的4
是不是,因此它将返回$errors
Pass
由于$errors = 1,2,3,5,6
$ErroredBackup = 5
if ($ErroredBackup -in $errors) { "Error" } else { "Pass" }
中的5
是,它将返回$errors