Powershell查看搜索关键字的所有列

时间:2015-04-09 22:10:20

标签: powershell csv search

使用powershell,假设我有一个包含

的csv文件
fname,lname,id,etc..

有没有办法使用where-object查看所有列而不只是一列。

例如,而不是:

Import-csv location |where-Object {$_.fname -eq "hi"}

下一行:

Import-csv location |where-Object {$_.lname -eq "hi"} and so on.

这将是:

Import-csv location |where-Object {ANY -eq "hi"}

2 个答案:

答案 0 :(得分:0)

是的,您可以迭代$_.psobject.Properties来检查每一列,如果其中一列匹配,则返回$true

Import-Csv document.csv |Where-Object {
    foreach($p in ($_.psobject.Properties |? {$_.MemberType -eq 'NoteProperty'})) {
        if($p.Value -match "hi"){ $true }
    }
}

答案 1 :(得分:0)

由于列标题/属性名称无关紧要,您关心的只是值,您可以将其作为文本处理:

Get-Content c:\somedir\somefile.csv |
Where {$_ -like '*"hi"*'}

如果您只是在计算之后,您可以只计算比赛数。如果需要对象,可以通过convertfrom-csv运行匹配的行。