Powershell 使用Select字符串在排序的哈希表上迭代是否包含空行?

Powershell 使用Select字符串在排序的哈希表上迭代是否包含空行?,powershell,hashtable,Powershell,Hashtable,我试图使用selectstring从排序的哈希表中提取某些值 这是可行的,但为什么输出中有额外的空行 cls $fruits = @{"1" = "apple"; "2" = "lemon"; "3" = "orange"; "4" = "apricot"} foreach ($fruit in $fruits.GetEnumerator() | Sort-Object Value) { $fruit.Value | Select-String -pattern "ap" -Simp

我试图使用
selectstring
从排序的哈希表中提取某些值

这是可行的,但为什么输出中有额外的空行

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
}

我认为你得到了空值,因为对于每一个项目,你正在做一个选择字符串,它有时会返回一个值,但在其他时间没有返回值。 尝试使用Where对象执行以下操作:

$fruits.Values | Sort-Object | Where-Object { $_ -match "ap" }

我正在使用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打印到主机。这是我的假设


有意思的是,如果有至少一个匹配,空白行就在那里。我认为这可能是前上下文和后上下文。奇怪的是,即使在数组中的所有项都匹配时,空行也出现了,例如:“代码> $水果=@ { 1”=“Apple”;“2”=“杏”}。@MrKWatkins感谢
Where Object
的建议,该建议如预期般有效;问题现在标记为已回答。不过,我还是对那些空行感到好奇。奇怪,哎呀,忘了分类了<代码>$fruits.Values-如“ap*”|排序