如果管道为空,则设置powershell变量

时间:2015-10-26 23:29:03

标签: powershell

我目前有这个管道:

Get-R53HostedZones | where {$_.Name -eq 'myval'} | %{ Get-R53ResourceRecordSet -HostedZoneId $_.Id } | %{ $_.ResourceRecordSets | where {$_.Name.StartsWith("myval")} }

这很好用,它给了我期望的结果。我难倒的地方是我接下来需要做的......如果这会产生一个或多个结果,我需要设置一个变量true,如果它是空的,我需要设置false

1 个答案:

答案 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

的情况下工作