当前位置:网站首页 > 更多 > 玩电脑 > 正文

[玩转系统] 如何在 PowerShell 中获取文件的 MD5 哈希值?

作者:精品下载站 日期:2024-12-14 05:11:44 浏览:14 分类:玩电脑

如何在 PowerShell 中获取文件的 MD5 哈希值?


MD5 代表消息摘要算法 5,可为给定数据集生成唯一的 128 位哈希值。虽然由于存在漏洞,MD5 不再推荐用于加密目的,但它仍然广泛用于文件完整性检查。 PowerShell 可以轻松计算文件的 MD5 哈希值。在这篇 PowerShell 文章中,我将向您展示使用 PowerShell 获取文件的 MD5 哈希值的各种方法。

要在 PowerShell 中生成文件的 MD5 哈希值,您可以使用 Get-FileHash cmdlet。只需执行 Get-FileHash -Algorithm MD5 -Path “C:\MyFolder\file.txt” 即可获取哈希值。对于早期版本的 PowerShell 或更详细的脚本编写,您可以利用 .NET Framework 的 System.Security.Cryptography.MD5CryptoServiceProvider 类以编程方式计算哈希值。

使用 Get-FileHash Cmdlet 获取文件的 MD5 哈希值

要在 PowerShell 中获取文件的 MD5 哈希值,请使用 Get-FileHash cmdlet。此 cmdlet 在 PowerShell 版本 4.0 及更高版本中可用,它支持不同的哈希算法,包括 MD5。

这是一个例子。

Get-FileHash -Algorithm MD5 -Path "C:\MyFolder\Users.txt"

这是完整的 PowerShell 脚本。

# Define the file path
$filePath = "C:\MyFolder\Users.txt"

# Compute the hash value
$hash = Get-FileHash -Algorithm MD5 -Path $filePath

# Output the hash value
$hash.Hash

通过将此脚本保存为 .ps1 文件,您可以轻松运行它,通过将 $filePath 变量替换为目标文件的路径来获取任何文件的 MD5 哈希值。

使用 vs code 执行 PowerShell 脚本后,您可以在下面的屏幕截图中看到输出。

[玩转系统] 如何在 PowerShell 中获取文件的 MD5 哈希值?

使用 .NET Framework 类在 PowerShell 中获取文件的 MD5 哈希值

如果您使用旧版本的 PowerShell 或者更喜欢更具编程性的方法,则可以使用 .NET Framework 来计算 MD5 哈希值。

以下是在 PowerShell.NET 框架类中获取文件哈希的完整示例。

# Load the necessary .NET Framework class
[System.Reflection.Assembly]::LoadWithPartialName("System.Security.Cryptography")

# Create an MD5 Crypto Service Provider object
$md5 = New-Object System.Security.Cryptography.MD5CryptoServiceProvider

# Compute the hash value for the file
$hash = [System.BitConverter]::ToString($md5.ComputeHash([System.IO.File]::ReadAllBytes("C:\MyFolder\file.txt")))

# Output the hash value
$hash -replace '-', ''

此脚本使用 MD5CryptoServiceProvider 类来计算哈希值,并使用 BitConverter 类将其格式化为可读字符串。

编写可重用函数来获取文件的 MD5 哈希值

您可以编写一个完整的函数,可以重复使用该函数来使用 PowerShell 获取文件的 MD5 哈希值。

这是一个完整的例子。

function Get-MD5Hash {
    param (
        [string]$filePath
    )
    try {
        $hash = Get-FileHash -Algorithm MD5 -Path $filePath
        return $hash.Hash
    }
    catch {
        Write-Error "An error occurred: $_"
    }
}

# Usage
Get-MD5Hash -filePath "C:\MyFolder\file.txt"

该函数封装了Get-FileHash cmdlet,可以通过不同的文件路径调用来获取MD5哈希值。

使用 PowerShell 对多个文件进行 MD5 哈希检查

如果要使用 PowerShell 检查多个文件的 MD5 哈希检查,可以使用可迭代目录中文件的自定义函数来自动化该过程。

这是一个包含完整脚本的示例。

# Directory path
$directoryPath = "C:\MyFolder"

# Get all files in the directory
$files = Get-ChildItem -Path $directoryPath

# Iterate through each file and compute the hash
foreach ($file in $files) {
    $hash = Get-FileHash -Algorithm MD5 -Path $file.FullName
    Write-Host "File: $($file.Name) - MD5 Hash: $($hash.Hash)"
}

该脚本将输出指定目录中每个文件的 MD5 哈希值。

结论

我希望这个实用方法教程将帮助您学习如何使用各种方法在 PowerShell 中获取文件的 MD5 哈希值。喜欢:

  • 使用 Get-FileHash Cmdlet
  • 使用 .NET Framework 类

我还解释了如何创建一个可重复使用的函数,以在 PowerShell 中获取多个文件的 MD5 哈希值。

您需要 登录账户 后才能发表评论

取消回复欢迎 发表评论:

关灯