首页 > 解决方案 > Powershell - 显示清理(get-filehash 生成 .txt 文件)

问题描述

这是一个清理/显示类型的问题。我的小 powershell 脚本获取文件夹中的任何 .exe 文件,为每个条目找到多个哈希值,并将其输出到 .txt 文件。我的问题是文件中的格式。这是我用来生成这些结果的循环。

$output = foreach($file in $table){
  $File.Name
  get-filehash -path $file.FullName
  get-filehash -path $file.FullName -Algorithm SHA1
  get-filehash -path $file.FullName -Algorithm MD5
}
$output | Out-File C:\filepath\file.txt

输出看起来像这样:

Name.exe

Algorithm           Hash           Path
----------          ----           -----
SHA256              Value           C:\Path\Name.exe
SHA1                Value           C:\Path\Name.exe
MD5                 Value           C:\Path\Name.exe
NextFile.exe
SHA256              Value           C:\Path\NextFile.exe
SHA1                Value           C:\Path\NextFile.exe
MD5                 Value           C:\Path\NextFile.exe

有没有办法在 foreach 循环中清理它?我知道它很挑剔,但是有没有办法将第一个文件的名称移动到列名下方,或者在每个文件名之后创建一个中断并使用新的列名?

标签: powershell

解决方案


丢弃单独的文件名输出,管道到Format-Table并使用-GroupBy参数对文件路径上的表进行分组:

$output = foreach($file in $table){
  Get-FileHash -Path $file.FullName
  Get-FileHash -Path $file.FullName -Algorithm SHA1
  Get-FileHash -Path $file.FullName -Algorithm MD5
}

$output |Format-Table -GroupBy Path |Out-File C:\filepath\file.txt

现在,您的输出将按连续文件路径分组到单独的表中:


   Path: C:\path\to\Name.exe

Algorithm       Hash       Path
---------       ----       ----
SHA256          Value      C:\path\to\Name.exe
SHA1            Value      C:\path\to\Name.exe
MD5             Value      C:\path\to\Name.exe


   Path: C:\path\to\NextFile.exe

Algorithm       Hash       Path
---------       ----       ----
SHA256          Value      C:\path\to\NextFile.exe
SHA1            Value      C:\path\to\NextFile.exe
MD5             Value      C:\path\to\NextFile.exe


-GroupBy支持计算的属性表达式,所以如果你只需要Name文件的,那也是可行的:

$output |Format-Table -GroupBy @{Name='Name';Expression={[System.IO.Path]::GetFileName($_.Path)}} |Out-File C:\filepath\file.txt

...导致这样的事情:


   Name: Name.exe

Algorithm       Hash       Path
---------       ----       ----
SHA256          Value      C:\path\to\Name.exe
SHA1            Value      C:\path\to\Name.exe
MD5             Value      C:\path\to\Name.exe


   Name: NextFile.exe

Algorithm       Hash       Path
---------       ----       ----
SHA256          Value      C:\path\to\NextFile.exe
SHA1            Value      C:\path\to\NextFile.exe
MD5             Value      C:\path\to\NextFile.exe


推荐阅读