我目前有这个管道:
Get-R53HostedZones | where {$_.Name -eq 'myval'} | %{ Get-R53ResourceRecordSet -HostedZoneId $_.Id } | %{ $_.ResourceRecordSets | where {$_.Name.StartsWith("myval")} }
这很好用,它给了我期望的结果。我难倒的地方是我接下来需要做的......如果这会产生一个或多个结果,我需要设置一个变量true
,如果它是空的,我需要设置false
。
答案 0 :(得分:3)
将其分配给变量,并使用if
语句进行检查:
$MyRecords = @(Get-R53HostedZones | where {$_.Name -eq 'myval'} | %{ Get-R53ResourceRecordSet -HostedZoneId $_.Id } | %{ $_.ResourceRecordSets | where {$_.Name.StartsWith("myval")} })
if($MyRecords.Count -gt 0) { $true } else { $false }
数组子表达式运算符(@()
)确保返回一个数组,即使结果只是一个项目。否则,早期版本的PowerShell
Count
属性不会失败
你也可以这样做:
if ($MyRecords) { $true } else { $false }
但是第一种方法可以更清楚地表明您实际测试的内容,并且还可以在表达式可能返回值$false