PowerShell Get-FileHash
最后修改:2025 年 2 月 15 日
在本文中,我们将介绍 PowerShell 中的 Get-FileHash
cmdlet。此 cmdlet 计算文件的加密哈希值。
哈希基础知识
哈希是由哈希算法生成的固定大小的字符串。它唯一地表示文件内容。常见的哈希算法包括 SHA1、SHA256 和 MD5。哈希用于验证文件完整性并检测更改。
Get-FileHash 基本用法
使用 Get-FileHash
的最简单方法是仅提供文件路径。它默认为 SHA256 算法。输出包括哈希值和所使用的算法。这对于快速文件验证很有用。
Get-FileHash -Path "C:\Windows\explorer.exe"
此命令计算 explorer.exe 的 SHA256 哈希。输出显示哈希值、算法和文件路径。
指定哈希算法
您可以使用 -Algorithm 参数指定不同的哈希算法。支持的算法包括 SHA1、SHA256、SHA384、SHA512 和 MD5。每种算法会产生不同的哈希长度。
Get-FileHash -Path "C:\Windows\explorer.exe" -Algorithm SHA512
此命令计算 explorer.exe 的 SHA512 哈希。SHA512 比 SHA256 产生更长的哈希,以增强安全性。
PS C:\> .\hash2.ps1 Algorithm Hash Path --------- ---- ---- SHA512 E3B0C44298FC1C149AFBF4C8996FB92427AE41E4649B934CA495991B7852B855... C:\Windows\explorer.exe
哈希多个文件
您可以通过使用通配符或管道文件对象来哈希多个文件。这对于批量处理很有用。输出分别显示每个文件的哈希。您可以一次验证多个文件。
Get-ChildItem -Path "C:\Windows\*.exe" | Get-FileHash -Algorithm MD5
此命令计算 C:\Windows 中所有 .exe 文件的 MD5 哈希。输出中会显示每个文件的哈希。
比较文件哈希
您可以比较文件哈希以验证完整性。存储原始哈希并与新计算的哈希进行比较。匹配的哈希表示文件未更改。不同的哈希意味着文件已被修改。
$originalHash = "A94A8FE5CCB19BA61C4C0873D391E987982FBBD3" $currentHash = (Get-FileHash -Path "file.txt" -Algorithm SHA1).Hash $originalHash -eq $currentHash
此脚本将存储的 SHA1 哈希与当前文件哈希进行比较。如果哈希匹配,则返回 True,否则返回 False。
用于哈希的流输入
您可以哈希流中的数据而不是文件。将 -InputStream 参数与流对象一起使用。这对于哈希动态数据很有用。该过程类似于文件哈希。
$data = [System.Text.Encoding]::UTF8.GetBytes("Hello World") $stream = [System.IO.MemoryStream]::new($data) Get-FileHash -InputStream $stream -Algorithm SHA256
此命令将字符串 "Hello World" 作为流进行哈希。输出显示输入数据的 SHA256 哈希。
带进度显示的哈希
对于大文件,您可以在哈希过程中显示进度。使用 -Verbose 参数显示进度信息。这有助于监视长时间运行的操作。哈希计算将在后台继续。
Get-FileHash -Path "largefile.iso" -Algorithm SHA256 -Verbose
此命令在显示进度的同时对大文件进行哈希。详细输出指示正在进行的操作状态。
导出哈希结果
您可以将哈希结果导出到文件以进行文档记录。使用标准输出重定向或 Export-Csv cmdlet。这会创建文件哈希的永久记录。这对于安全审计很有用。
Get-FileHash -Path "important.dll" | Export-Csv -Path "hashes.csv" -NoTypeInformation
此命令将 important.dll 的哈希保存到 CSV 文件。输出文件可用于将来的验证。
来源
在本文中,我们介绍了 PowerShell 中的 Get-FileHash cmdlet。
作者
列出 所有 PowerShell 教程。