使用PowerShell为每个对象创建CSV

时间:2018-01-05 21:21:03

标签: powershell

我正在运行漏洞扫描,并且我有一个导入的原始CSV文件。我从文件中删除 Risk = None ,然后提取我需要的信息(名称的漏洞,主机风险 CVE 说明解决方案另请参阅)。

我想做的是将文件更多地删除并创建

  1. 根据漏洞名称分隔CSV文件。实际文件名不一定是它可以保持静态的漏洞名称V001,V002,......
  2. 根据每个漏洞名称(主机,风险,CVE,说明等),使用结果填充单独的文件。因此,在文件V001中,V001漏洞的所有受影响主机都将填充在该文件中,依此类推。

    $all = Import-Csv c:\scan.csv
    $all_with_none_removed = $all | Where-Object {$_.Risk -ne "None"}
    $Sumary_By_Vuln = $all_with_none_removed |
                      select Name, Host, Risk, CVSS, CVE, Description, Solution, 'See Also' |
                      Sort-Object Name
    $Sumary_By_Vuln | Export-Csv C:\final.csv
    

2 个答案:

答案 0 :(得分:1)

您可以按名称对输入进行分组,并将每个组导出到单独的文件中:

$all_with_none_removed |
    Select-Object Name, Host, Risk, CVSS, CVE, Description, Solution, 'See Also' |
    Group-Object Name |
    ForEach-Object { $_.Group | Export-Csv ($_.Name + '.csv') }

答案 1 :(得分:0)

提示:您可以先从数据中提取所有不同的名称:

$Names = $all_with_none_removed | Select-Object Name -Unique

然后循环使用这些名称的代码foreach(提示提示),过滤掉您发现的结果,方法与删除无风险结果的方式类似。

很抱歉没有提供完整的解决方案,但您在这里学习正确吗?