1

我正在尝试使用从排序的哈希表中提取某些值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
}
4

2 回答 2

0

我认为你得到的是空值,因为对于每个项目,你都在做一个 Select-String,它有时会返回一个值,但在其他时候什么都没有——这些空值就是空行。

尝试使用 Where-Object 的类似方法:

$fruits.Values | Sort-Object | Where-Object { $_ -match "ap" }
于 2013-04-04T16:14:46.043 回答
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 打印到主机。这是我的假设(假设)。

奇怪……好问题。

于 2013-04-05T16:56:48.310 回答