我有一个文件,说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'
答案 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'