使用powershell筛选CSV文件
我是新来的powershell。。。我正在尝试根据特定值过滤我的扫描结果(.csv),我可以对简单的csv文件进行过滤。但是,自动扫描结果似乎是嵌套的 我需要过滤列“F”,其中的值是“Vuln”(添加图像),并写入一个新的CSV文件 谁能给我一些线索吗 我尝试了一些简单的句子,比如:(但是我没有得到任何结果) 导入CSV-Path“C:\test.CSV”|其中对象{$\类型-ey“Vuln”}使用powershell筛选CSV文件,powershell,csv,Powershell,Csv,我是新来的powershell。。。我正在尝试根据特定值过滤我的扫描结果(.csv),我可以对简单的csv文件进行过滤。但是,自动扫描结果似乎是嵌套的 我需要过滤列“F”,其中的值是“Vuln”(添加图像),并写入一个新的CSV文件 谁能给我一些线索吗 我尝试了一些简单的句子,比如:(但是我没有得到任何结果) 导入CSV-Path“C:\test.CSV”|其中对象{$\类型-ey“Vuln”} 您大部分时间都在那里,问题似乎来自.CSV文件 坦率地说,它不是一个真正有效的csv文件,因为它不
您大部分时间都在那里,问题似乎来自
.CSV
文件
坦率地说,它不是一个真正有效的csv文件,因为它不仅仅是一个简单的逗号分隔的值表,而是有多种类型的数据
但是,它看起来像是从第6行开始的一个真正的.CSV,所以我们需要做的是跳过文件的前几行,然后尝试从.CSV转换。我制作了自己的.csv,就像你的一样
我可以读取文件并跳过前五行,如下所示:
Get-Content C:\temp\input.csv | Select-Object -Skip 5 | ConvertFrom-Csv
HostName OS Type
-------- -- ----
SomePC123 WinXp Vuln
SomePC234 Win7 Vuln
SomePc345 Win10 Patched
然后使用以下命令向下筛选到类型的项目
Vuln
:
Get-Content C:\temp\input.csv | Select-Object -Skip 5 | ConvertFrom-Csv | Where-Object Type -eq 'Vuln'
HostName OS Type
-------- -- ----
SomePC123 WinXp Vuln
SomePC234 Win7 Vuln
要使用它,只需倒计时行数,直到电子表格在.CSV
中开始,然后编辑-Skip
参数以匹配
如果要保留标题信息,可以使用如下方法:
$crap = Get-Content C:\temp\input.csv | Select-Object -First 5
$OnlyVulns = Get-Content C:\temp\input.csv | Select-Object -Skip 5 | ConvertFrom-Csv | Where-Object Type -eq 'Vuln'
$CrapAndOnlyVulns = $crap + $OnlyVulns
$CrapAndOnlyVulns > C:\pathTo\NewFile.csv
这是最后的脚本:)
$import=获取内容。\Scan.csv$import1=$import |选择对象-前7个 $import | Select Object-Skip 7 | ConvertFrom Csv |其中Object{$|Type-eq“Vuln”}| Export Csv Output1.Csv-NoClobber-NoTypeInformation
$import1+(获取内容输出1.csv)|设置内容输出2.csv
-这也适用于所有类型的样本数据。。。而且您的代码中有一个输入错误
-ey
->-eq
,如果您的数据无效,您就不能指望Powershell优雅地处理它。您必须转换源数据以满足您的需要。谢谢,伙计。。。它成功了…我可以对数据进行排序。。。。但是,新创建的CSV(输出)不包含跳过的数据。。。。我们有没有办法在处理后也将其包括在内?只是检查一下可能性。谢谢。。它工作了,但是输出csv被置乱了(第二部分,合并成单行和列),我做了一些修改。。现在它是完美的。。。非常感谢……)