PowerShell Get-FileHash摆脱空行

问题描述

我有foreach循环,遍历文件获取路径并将其替换为用于获取哈希的命令:

thread2

我面临的问题是我在文件的开头有2个空行,在文件的末尾有4个空行,这是输出

$hash = @{}
...
defining variables here
...
foreach($line in $lines)
{
    Get-filehash $line -Algorithm md5 | format-list | Where { $_ } |  Out-File -Width 200 'hash.txt' -Encoding ascii -Append
    Get-filehash $line -Algorithm sha256 | format-list | Where { $_ } |  Out-File -Width 200 'hash.txt' -Encoding ascii -Append
    Get-filehash $line -Algorithm sha512 | format-list | Where { $_ } | Out-File -Width 200 'hash.txt' -Encoding ascii -Append
    @('MD5','SHA256','SHA512') | % { Get-filehash -Algorithm $_ $line } |  export-csv hash.csv -Delimiter "," -Append
}

我应该如何消除文件开头和结尾的空行?

解决方法

您可以一步格式化所有输出,然后在写入文件之前对其进行修剪:

($lines | foreach {
      foreach ($alg in ('MD5','SHA256','SHA512')) {
          Get-FileHash $_ -Algorithm $alg
      }
} | format-list | out-string).trim() | Out-File 'hash.txt' -Encoding ascii