[研究]PowerShell 檢查電腦中是否有檔案符合某些 SHA256 的 hash 值
2025-07-03
環境:Windows Server 2019 +Visual Studio 2022 + ASP.NET + WebForm + Web Application + C# + SQL Server 2019 + SQL Server Management Studio (SSMS) 19
********************************************************************************
顯示 PowerShell 版本,為 5.1
PS C:\temp2> $PSVersionTable.PSVersion Major Minor Build Revision ----- ----- ----- -------- 5 1 17763 7434 PS C:\temp2> |
C.ps1 內容 (請用「記事本 (Notepad)」存檔 (ANSI 或 UniCode 編碼存檔都可),不要用 Notepad++ 預設編碼存檔,否則執行會亂碼
# 適用 PowerShell 5.1
# 放最前面
$OutputEncoding = [Console]::OutputEncoding = [System.Text.Encoding]::UTF8
# 定義多個要比對的 SHA256 雜湊值
$targetHashes = @(
"F6E0A1E2AC41945A9AA7FF8A8AAA0CEBC12A3BCC981A929AD5CF810A090E11AE",
"CC399D73903F06EE694032AB0538F05634FF7E1CE5E8E50AC330A871484F34CF",
"3333333333333333333333333333333333333333333333333333333333333333"
)
# 指定起始搜尋路徑
$searchPath = "C:\Temp2"
# 建立 HashSet 結構
$hashSet = New-Object 'System.Collections.Generic.HashSet[string]' ([System.StringComparer]::OrdinalIgnoreCase)
foreach ($h in $targetHashes) {
$hashSet.Add($h) | Out-Null
}
# 搜尋檔案並計算 SHA256
Get-ChildItem -Path $searchPath -Recurse -File -ErrorAction SilentlyContinue | ForEach-Object {
try {
$hash = Get-FileHash -Path $_.FullName -Algorithm SHA256 -ErrorAction Stop
if ($hashSet.Contains($hash.Hash)) {
Write-Output "找到檔案: $($_.FullName) ,SHA256: $($hash.Hash)"
}
} catch {
# 忽略權限不足或鎖定錯誤
}
}
|
顯示目前輸出訊息邊碼
PS C:\temp2> [Console]::OutputEncoding BodyName : big5 EncodingName : 繁體中文 (Big5) HeaderName : big5 WebName : big5 WindowsCodePage : 950 IsBrowserDisplay : True IsBrowserSave : True IsMailNewsDisplay : True IsMailNewsSave : True IsSingleByte : False EncoderFallback : System.Text.InternalEncoderBestFitFallback DecoderFallback : System.Text.InternalDecoderBestFitFallback IsReadOnly : True CodePage : 950 PS C:\temp2> |
執行結果
PS C:\temp2> .\c.ps1 ?曉瑼?: C:\Temp2\1.txt 嚗HA256: F6E0A1E2AC41945A9AA7FF8A8AAA0CEBC12A3BCC981A929AD5CF810A090E11AE ?曉瑼?: C:\Temp2\2.txt 嚗HA256: CC399D73903F06EE694032AB0538F05634FF7E1CE5E8E50AC330A871484F34CF PS C:\temp2> .\C_Ansi.ps1 找到檔案: C:\Temp2\1.txt ,SHA256: F6E0A1E2AC41945A9AA7FF8A8AAA0CEBC12A3BCC981A929AD5CF810A090E11AE 找到檔案: C:\Temp2\2.txt ,SHA256: CC399D73903F06EE694032AB0538F05634FF7E1CE5E8E50AC330A871484F34CF PS C:\temp2> .\C_Unicode.ps1 找到檔案: C:\Temp2\1.txt ,SHA256: F6E0A1E2AC41945A9AA7FF8A8AAA0CEBC12A3BCC981A929AD5CF810A090E11AE 找到檔案: C:\Temp2\2.txt ,SHA256: CC399D73903F06EE694032AB0538F05634FF7E1CE5E8E50AC330A871484F34CF PS C:\temp2> |
計算檔案 SHA256 值
PS C:\Users\Administrator> Get-FileHash -Path "C:\Temp2\1.txt" -Algorithm SHA256 Algorithm Hash Path --------- ---- ---- SHA256 F6E0A1E2AC41945A9AA7FF8A8AAA0CEBC12A3BCC981A929AD5CF810A090E11AE C:\Temp2\1.txt PS C:\Users\Administrator> |
(完)
相關
沒有留言:
張貼留言