【发布时间】:2021-11-09 20:26:59
【问题描述】:
我正在我们的 linux 机器上执行一些非常简单的校验和,但我现在需要为我们的 Windows 用户重新创建类似的东西。为了给我一个校验和,我只运行:
md5sum *.txt | awk '{ print $1 }' | md5sum
我正在努力在 Windows 中使用批处理文件或 Powershell 重新创建它。我得到的最接近的是:
Get-ChildItem $path -Filter *.txt |
Foreach-Object {
$hash = Get-FileHash -Algorithm MD5 -Path ($path + "\" + $_) | Select -ExpandProperty "Hash"
$hash = $hash.tolower() #Get-FileHash returns checksums in uppercase, linux in lower case (!)
Write-host $hash
}
这会将每个文件的校验和结果打印到控制台,就像 linux 命令一样,但是通过管道将其返回到 Get-FileHash 以获得与 linux 等效项匹配的单个输出,这让我望而却步。写入文件让我陷入了回车差异
作为字符串流回 Get-FileHash 不会返回相同的校验和:
$String = Get-FileHash -Algorithm MD5 -Path (Get-ChildItem -path $files -Recurse) | Select -ExpandProperty "Hash"
$stringAsStream = [System.IO.MemoryStream]::new()
$writer = [System.IO.StreamWriter]::new($stringAsStream)
$writer.write($stringAsStream)
Get-FileHash -Algorithm MD5 -InputStream $stringAsStream
我是否过度设计了这个?我相信这不应该这么复杂! TIA
【问题讨论】:
-
Get-FileHash -Algorithm MD5 -Path ($_.FullName) -
感谢您的回复。除非我误解了,否则它将返回单个文件的校验和。这是我正在努力解决的“校验和的校验和”。谢谢。
标签: powershell md5sum get-filehash