![如何修复 SHA256 递归文件列表中截断的 PowerShell 输出?](https://linux22.com/image/1605558/%E5%A6%82%E4%BD%95%E4%BF%AE%E5%A4%8D%20SHA256%20%E9%80%92%E5%BD%92%E6%96%87%E4%BB%B6%E5%88%97%E8%A1%A8%E4%B8%AD%E6%88%AA%E6%96%AD%E7%9A%84%20PowerShell%20%E8%BE%93%E5%87%BA%EF%BC%9F.png)
我正在尝试使用以下 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”的值。
答案2
重定向('>') 和输出文件两者都重新显示已为控制台格式化的输出(因此被截断了……)。使用设置内容反而:
最容易看出差异的是气相色谱:
gci > gci.txt
然而:
gci > set-content
此外,也没有必要每一个,获取文件信息接受管道输入。因此“更干净”的代码将是:
(gci -file -name) | Get-FileHash | set-content hasn.txt
仅当输出文件与正在处理的文件位于同一位置时,括号才是必需的。否则,当获取文件哈希尝试访问输出文件。