我有一堆CSV文件,其中包含来自各种计算机的文件数据。它包括诸如文件哈希 - SHA1,MD5等信息。
集管
* MD5,SHA-1,SHA-256 *
示例数据 的 ecfc9af8d1a6e16223e1b17ea732fa08 ,1db05a7a663a0de3b4913bf57f55e81d2b7e3663,bf74e48e2f14dcba257473fccec3e512c7283335610205e3b84cb16449e86335
我的挑战是如何将0x附加到CSV文件中的每个SHA-1条目。我尝试过几件事,但似乎没什么用。我想要解决的另一个小问题是,一旦我将数据重新导出回CSV,数据就会在每个文件哈希中添加双引号。通常这不是问题,但在这种情况下,我想采用这些文件哈希并将它们从SQL DB中弹回。这就是我需要为每个条目添加0x以使其与现有哈希DB兼容的原因。
提前感谢您的任何帮助。
答案 0 :(得分:0)
Import-Csv将为您提供一些方法:
Import-Csv .\samplehash.csv -Header MD5,SHA1,SHA256
产生如下输出:
MD5 SHA1 SHA256
--- ----- -------
ecfc9af8d1a6e16223e1b17ea732fa08 1db05a7a663a0de3b4913bf57f55e81d2b7e3663 bf74e48e2f14dcba257473fccec3e512c7283335610205e3b84...
ecfc9af8d1a6e16223e1b17ea732fa08 1db05a7a663a0de3b4913bf57f55e81d2b7e3663 bf74e48e2f14dcba257473fccec3e512c7283335610205e3b84...
现在将结果传递给foreach(%)以创建SQL字符串。
Import-Csv .\samplehash.csv -Header MD5,SHA1,SHA256 |
%{ "insert into hashes(md5,sha1,sha256) values('0x{0}','0x{1}','0x{2}')" -f $_.MD5,$_.SHA1,$_.SHA256 }
现在使用Invoke-SqlCmd或类似字符串(取决于数据库系统)来插入行。
答案 1 :(得分:0)
使用Import-CSV导入CSV:
$csv = Import-CSV import.csv;
将0x添加到每个SHA-1:
$csv | %{ $_.{SHA-1} += '0x' };
使用第一个数据行的属性名创建标题行:
$header = @(,$csv[0].psobject.properties | %{,$_.name});
将条目转换为值数组而不是行对象:
$data = ($csv | %{,($_.psobject.properties | select -expand value)});
手动输出没有带引号字段的基本CSV:
( $header+$data | %{ $_ -join ',' }) -join "`r`n" | sc import.csv