0

我有一堆 CSV 文件,其中包含来自各种机器的文件数据。它包括诸如文件哈希之类的信息 - SHA1、MD5 等。

标头
* MD5、SHA-1、SHA-256 *

示例数据 ecfc9af8d1a6e16223e1b17ea732fa08 ,1db05a7a663a0de3b4913bf57f55e81d2b7e3663,bf74e48e2f14dcba257473fccec3e512c7283335610205e3b365cb16449e

我的挑战是如何将 0x 附加到 CSV 文件中的每个 SHA-1 条目。我尝试了几件事,但似乎没有任何效果。我想克服的另一个小问题是,一旦我将数据重新导出回 CSV,数据就会在每个文件哈希中添加双引号。通常这不是问题,但在这种情况下,我想获取这些文件哈希并将它们从 SQL DB 中反弹出来。这就是为什么我需要为每个条目添加 0x 以使其与现有的哈希数据库兼容。

提前感谢您的任何帮助。

4

2 回答 2

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 或类似(取决于数据库系统)一起使用来插入行。

于 2013-02-21T20:05:46.550 回答
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
于 2013-02-21T20:46:58.083 回答