Get-FileHash -Path "D:\test\sha\xiaoban.exe"
Get-FileHash -Path "D:\test\sha\xiaoban.exe" -Algorithm MD5
Get-FileHash -Path "D:\test\sha\xiaoban.exe" -Algorithm SHA1
# 设置PowerShell控制台输出为UTF-8编码 $OutputEncoding = [System.Text.Encoding]::UTF8 # 获取脚本所在目录 $scriptDirectory = Split-Path -Path $MyInvocation.MyCommand.Definition -Parent # 获取脚本自身的完整路径 $currentScriptPath = $MyInvocation.MyCommand.Definition $batFilePath = Join-Path -Path $scriptDirectory -ChildPath "Run-Hashes.bat" # 获取当前目录下所有文件,并排除脚本文件自身和批处理文件 $files = Get-ChildItem -Path $scriptDirectory -File | Where-Object { $_.FullName -notin @($currentScriptPath, $batFilePath) } # 遍历所有文件并生成哈希值 foreach ($file in $files) { try { # 获取MD5, SHA1和SHA256哈希值 $md5 = Get-FileHash -Path $file.FullName -Algorithm MD5 $sha1 = Get-FileHash -Path $file.FullName -Algorithm SHA1 $sha256 = Get-FileHash -Path $file.FullName -Algorithm SHA256 # 构造输出内容 $output = @" 文件路径: $($file.FullName) MD5: $($md5.Hash) SHA1: $($sha1.Hash) SHA256: $($sha256.Hash) "@ # 将结果保存到文本文件,使用UTF-8编码 $outputFile = Join-Path -Path $scriptDirectory -ChildPath "$($file.BaseName)_Hashes.txt" $output | Out-File -FilePath $outputFile -Encoding utf8 Write-Host "哈希值已保存到 $outputFile" } catch { Write-Host "处理文件 $($file.FullName) 时出错:" -ForegroundColor Red Write-Host $_.Exception.Message -ForegroundColor Yellow } } Write-Host "所有文件处理完成。" -ForegroundColor Green
@echo off powershell -NoProfile -ExecutionPolicy Bypass -File "%~dp0Generate-Hashes.ps1" exit
然后把2个文件放到同一个文件夹,把要计算的文件放到这个文件之后,双击Run-Hashes.bat就行。
我提供的脚本常见问题:
Set-ExecutionPolicy -Scope CurrentUser -ExecutionPolicy RemoteSigned
-
允许本地脚本运行,远程脚本需要签名。
Set-ExecutionPolicy -Scope CurrentUser -ExecutionPolicy Restricted