PowerShell Get-FileHash избавляемся от пустых строк

У меня есть цикл foreach, который проходит через файл, получает путь и заменяет его в команде для получения хэшей:

$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
}

Проблема, с которой я столкнулся, заключается в том, что у меня есть 2 пустые строки в начале файла и 4 пустые строки в конце файла, вот результат:



Algorithm : MD5
Hash      : xxx
Path      : xxx

Algorithm : SHA256
Hash      : xxx
Path      : xxx

Algorithm : SHA512
Hash      : xxx
Path      : xxx




Как мне избавиться от пустых строк в начале и в конце файла?

1 ответ

Решение

Вы можете отформатировать весь вывод за один шаг, а затем обрезать его перед записью в файл:

($lines | foreach {
      foreach ($alg in ('MD5','SHA256','SHA512')) {
          Get-FileHash $_ -Algorithm $alg
      }
} | format-list | out-string).trim() | Out-File 'hash.txt' -Encoding ascii
Другие вопросы по тегам