如何修复 SHA256 递归文件列表中截断的 PowerShell 输出?

如何修复 SHA256 递归文件列表中截断的 PowerShell 输出?

我正在尝试使用以下 PowerShell 脚本获取特定文件夹的递归文件列表,其中包含各个文件的 SHA256 哈希值

Get-ChildItem "." -File -Recurse -Name | Foreach-Object { Get-FileHash -Path $($_) -Algorithm SHA256 } > sha256.txt

但是,sha256.txt 中的输出在 185 个字符处被截断。我该如何扩展它以使输出不被截断?

谢谢!

答案1

SELECT对于此查询,Powershell 将输出到表中,就像从命令行执行 SQL 一样。即使重定向到输出文件或使用,表也受到控制台窗口大小的限制(我认为) Out-File。我们需要告诉 Powershell 使用更长的行长度,并自动调整列以获得更好的效果。试试这个:

Get-ChildItem "." -File -Recurse -Name | Foreach-Object { Get-FileHash -Path $($_) -Algorithm SHA256 } | Format-Table -AutoSize | Out-File -FilePath sha256.txt -Width 300

根据需要调整“300”的值。

信用:https://superuser.com/a/1049648/332540

答案2

重定向('>') 和输出文件两者都重新显示已为控制台格式化的输出(因此被截断了……)。使用设置内容反而:

最容易看出差异的是气相色谱

gci > gci.txt

生成: 在此处输入图片描述

然而:

gci > set-content

生成: 在此处输入图片描述

此外,也没有必要每一个获取文件信息接受管道输入。因此“更干净”的代码将是:

(gci -file -name) | Get-FileHash | set-content hasn.txt

仅当输出文件与正在处理的文件位于同一位置时,括号才是必需的。否则,当获取文件哈希尝试访问输出文件。

相关内容