2012-06-15 302 views
2

我是Powershell的新手,并且有一个简短的问题。 我正在玩的输出来自以CSV格式的sysinternals.com autorunsc工具。 该脚本的用途是在CSV中搜索某些二进制名称。将CSV数据导入CSV

进口都按预期,但我不能把它写我的过滤信息

$IOCFiles = "es.dll", "null.sys" 

$data = import-csv "D:\autoruns.csv" -header("Entry_Location","Entry","Enabled","Category","Description","Publisher","Image_Path","Launch_String","MD5","SHA-1","SHA-256") 

foreach ($K in $data) 
{ 
    foreach($element in $IOCFiles) 
    { 
     if ($k.Image_Path -match $element) 
     { 
      $hits = $k.Entry + "   " + $K.Publisher + "   " + $K.Image_Path 
      $hits | export-csv -Path c:\HITS.csv -NoTypeInformation 
     } 
    } 
} 

以上不会产生在CSV的实际数据,但信息上的值的长度。 有一些很好的导入/导出的例子,但我没有看到一个导入列。由于我正在玩类似的东西,我必须使用列导入方法。

谢谢!

回答

4

Powershell的做这样的事情很简单:

Import-csv "D:\autoruns.csv" -header("Entry_Location","Entry","Enabled","Category" | 
    Where-Object{($IOCFiles -match $_.Image_Path) -ne $null} | 
    Select-Object Entry, Publisher, Image_Path | 
    Export-CSV -Path c:\HITS.csv -NoTypeInformation 

我没有来测试,现在这样可能会有一些问题,它的时间,但是这是它的要点。

+0

谢谢。看起来我正在试图做到这一点。似乎这可能会起作用。我将不得不调整它。似乎不想填充发布者和图片路径列。 – user1373685

+0

我错过了代码上的滚动条。只需添加您拥有的所有标题,即可清除它。 – EBGreen

+0

没问题!我喜欢你的时间。 下面的代码以我想要的方式构建CSV。现在唯一的问题是我想为-match“null.sys”创建一个条目数组。 Import-csv“D:\ autoruns.csv”-header(“Entry_Location”,“Entry”,“Enabled”,“Category”,“Description”,“Publisher”,“ImagePath”,“Launch_String”,“MD5 ”, “SHA-1”, “SHA-256”)| Where-Object {($ _。ImagePath -match“null.sys”)} | 选择对象条目,发布者,ImagePath | Export-CSV -Path c:\ HITS.csv -NoTypeInformation $ IOCFiles =“Explorer.exe”,“Notepad.exe” – user1373685