具有Get-Content的Where-Object无法正常工作

时间:2017-12-08 05:08:00

标签: powershell

我有一个文件,说a.txt,内容如下:

STATUS
-----
Pending

我正在运行以下查询:

Get-Content a.txt | Where-Object Status -Match 'Pending'

以上查询不返回任何内容。

添加到我的要求:

  • 我需要在变量中获取内容,例如

    $contentOfFile = Get-Content a.txt

  • 此变量将传递给验证其是否具有匹配项的函数

    $contentOfFile | **Where-Object Status -Match 'Pending'**

注意:Where-Object Status -Match 'Pending'无法更改为Select-String,因为该功能已被多个来源使用。

FIX:

$contentOfFile = ConvertFrom-Csv (Get-Content a.txt)
$contentOfFile | Where-Object Status -Match 'Pending'

1 个答案:

答案 0 :(得分:2)

使用Get-Content时,文本文件中的STATUS将以纯文本格式存储,而不是属性。如果您打算使用Get-Content,则可以使用Select-String cmdlet,如

Get-Content a.txt | Select-String -pattern 'Pending'

但是如果你想获得你想要的输出,你可以使用Import-Csv。它会做什么,它会使您的STATUS成为-Header属性,然后您可以使用之前使用过的where-object。毕竟,csv文件是一个文本文件,只是逗号分隔。以下对我有用: -

Import-Csv a.txt | Where-Object Status -Match 'Pending'