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
算法支持 SHA1, SHA256, SHA384, SHA512 和 MD5.
除去
Get-FileHash
部分最基本的 Path
和 Algorithm
输入, 其后的管道符间隔内的用意:Format-Table
: 将Get-FileHash
传入格式化为表格, 并且自动调整表格尺寸. 其实Get-FileHash
的输出本来就是表格, 这部分的主要目的是格式化表格的尺寸. 同时也能使用其他形式的格式化, 比如Format-List
:
Out-String
: 将从Format-Table
传入转换为字串符, 并且设定最大宽度为 4096 个字符(考虑当输入的文件名或路径名过长时).
Write-Output
: 将Out-String
传入打印出来.
当然一般制作出 checksum 清单, 还要用
>
将打印的结果输出到文本文件里.多路径的情况下, 可能希望在一次性输出同一个 checksum 清单, 可以在
Get-FileHash
的 Path
选项中输入多个路径(使用逗号分隔路径), 比如:Get-FileHash -Path 'D:\Temp\工作区\图片\*.jpg', 'D:\Temp\工作区\视频\*.mkv' -Algorithm SHA256 | Format-List | Out-String -Width 4096 | Write-Output
如果只想要输出其中的几个属性, 比如不需要
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