PowerShell 中的 Get-FileHash 一般性用法

date
Jan 1, 2024
slug
get-filehash-general-usage-in-powershell
status
Published
tags
片段
PowerShell
summary
孩子的文件太多了, 一下要我写一万个文件的校验和清单. 还好 PowerShell 自带 Get-FileHash 组件, 妈妈再也不用担心我算个校验和还要配环境了.
type
Post
url
Get-FileHash 是 PowerShell 中 Microsoft.PowerShell.Utility 模块里的组件, 如其模块名, 这部分是提供计算文件哈希的实用程序.

通过和其他格式化输出的组件搭配使用, 可以适应大部分用于计算和输出校验和的使用场景:
Get-FileHash -Path ./*.jpg -Algorithm SHA256 | Format-List | Out-String -Width 4096 | Write-Output
notion image
算法支持 SHA1, SHA256, SHA384, SHA512 和 MD5.
除去 Get-FileHash 部分最基本的 PathAlgorithm 输入, 其后的管道符间隔内的用意:
  1. Format-Table: 将 Get-FileHash 传入格式化为表格, 并且自动调整表格尺寸. 其实 Get-FileHash 的输出本来就是表格, 这部分的主要目的是格式化表格的尺寸. 同时也能使用其他形式的格式化, 比如 Format-List:
    1. notion image
  1. Out-String: 将从 Format-Table 传入转换为字串符, 并且设定最大宽度为 4096 个字符(考虑当输入的文件名或路径名过长时).
  1. Write-Output: 将 Out-String 传入打印出来.
当然一般制作出 checksum 清单, 还要用 > 将打印的结果输出到文本文件里.

多路径的情况下, 可能希望在一次性输出同一个 checksum 清单, 可以在 Get-FileHashPath 选项中输入多个路径(使用逗号分隔路径), 比如:
Get-FileHash -Path 'D:\Temp\工作区\图片\*.jpg', 'D:\Temp\工作区\视频\*.mkv' -Algorithm SHA256 | Format-List | Out-String -Width 4096 | Write-Output
notion image

如果只想要输出其中的几个属性, 比如不需要 Algorithm(算法)一列, 可以用 Select-Object 在格式化前选择对象:
Get-FileHash -Path 'D:\Temp\工作区\图片\*.jpg', 'D:\Temp\工作区\视频\*.mkv' -Algorithm SHA256 | Select-Object Hash, Path | Format-List | Out-String -Width 4096 | Write-Output
notion image

 

© CXPLAY 2024