Lig*_*ack 4 directory powershell checksum md5
我正在尝试使用 powershell 为整个目录生成 MD5 校验和。\n在 Linux 上,有一个非常有效的 1-liner,如下所示:
\n$ tar -cf - 某个目录 | md5和
\n我了解到“tar”现在是 Windows10 的一部分,并且可以在 PowerShell 中对其进行寻址。\n所以我尝试了以下操作:
\ntar -cf - C:\\数据 | Get-FileHash -MD5 算法
\n我从 PowerShell 得到的是这样的:
\ntar.exe:从成员名称中删除前导驱动器号
\nGet-FileHash:输入对象无法绑定到命令的任何参数,因为该命令不接受管道输入或输入及其属性与接受管道输入
我的 Shell 设置为德语,因此我通过翻译机(https://www.translator.eu/#)运行德语错误文本。
\n我想知道为什么我收到这个特定的错误消息,因为 Get-FileHash 能够处理管道输入,例如:
\nLS | Get-FileHash -MD5 算法
\n这个命令就像一个魅力,但它为我提供了每个文件的校验和。\n我想要的是完整给定目录的 1 个校验和。
\n所以,我可能搞砸了一些东西\xe2\x80\xa6 - 有什么想法吗?
\n编辑:这是一种即使所有文件都移动/复制到另一个位置也是一致的替代方法。这个使用所有文件的哈希来创建“主哈希”。由于显而易见的原因,它需要更长的时间运行,但会更可靠。
$HashString = (Get-ChildItem C:\Temp -Recurse | Get-FileHash -Algorithm MD5).Hash | Out-String
Get-FileHash -InputStream ([IO.MemoryStream]::new([char[]]$HashString))
Run Code Online (Sandbox Code Playgroud)
原始的、更快但不太稳健的方法:
$HashString = Get-ChildItem C:\script\test\TestFolders -Recurse | Out-String
Get-FileHash -InputStream ([IO.MemoryStream]::new([char[]]$HashString))
Run Code Online (Sandbox Code Playgroud)
如果需要的话可以压缩成一行,尽管它开始变得越来越难以阅读:
Get-FileHash -InputStream ([IO.MemoryStream]::new([char[]]"$(Get-ChildItem C:\script\test\TestFolders -Recurse|Out-String)"))
Run Code Online (Sandbox Code Playgroud)
基本上,它使用来自 的信息创建一个内存流Get-ChildItem
并将其传递给Get-FileHash
。
不确定这是否是一种很好的方法,但这是一种方法:-)
归档时间: |
|
查看次数: |
16206 次 |
最近记录: |