使用Select-String迭代排序的哈希表包括空行?

时间:2013-04-04 15:58:11

标签: powershell hashtable

我正在尝试使用Select-String从排序的哈希表中提取某些值。

这有效,但为什么输出中还有额外的空白行?

cls

$fruits = @{"1" = "apple"; "2" = "lemon"; "3" = "orange"; "4" = "apricot"}

foreach ($fruit in $fruits.GetEnumerator() | Sort-Object Value) {
    $fruit.Value | Select-String -pattern "ap" -SimpleMatch
}

2 个答案:

答案 0 :(得分:0)

我认为你得到的是空值,因为对于每个你正在做一个Select-String的项目,有时会返回一个值,但在其他时候没有任何值 - 那些不是空行。

尝试使用Where-Object:

的类似内容
$fruits.Values | Sort-Object | Where-Object { $_ -match "ap" }

答案 1 :(得分:0)

我正在使用PowerShell 3.0。

我做了两行代码

PS C:\> $fruits = @{"1" = "apple"; "2" = "lemon"; "3" = "orange"; "4" = "apricot"}
PS C:\> $fruits.Values -like 'ap*'
apricot
apple
PS C:\>

进一步调查

似乎是当没有匹配时它返回NULL。

foreach($key in $fruits.Keys){(Select-String -Pattern 'ap' -SimpleMatch -InputObject $fruits[$key]) -eq $NULL}

由于它没有重定向到变量,所以它只向主机打印NULL。这是我的假设(假设)。

奇怪......好问题。