czwartek, 17 grudnia 2020

PowerShell: Poszukiwanie pliku według zadanej sumy kontrolnej

Mawia się, że potrzeba matką wynalazków, tak więc potrzebą moją było znalezienie na dysku pewnego pliku o określonej sumie kontrolnej. Pewnie są do tego narzędzia, pewnie nawet za darmo, ale jakoś tak bardzo nie chciało mi się szukać po Internecie, że napisałem sobie jednolinijkowca w PowerShellu. 

Wygląda jak poniżej:

Get-Childitem -File -Recurse -LiteralPath "c:\Windows\System32" -Force -ErrorAction SilentlyContinue | ForEach {if ((get-filehash -path $_.FullName -Algorithm MD5 -ErrorAction SilentlyContinue).Hash -eq "5DA8C98136D98DFEC4716EDD79C7145F") {Write-Host "This file has searched control sum:" $_.FullName}}

Miejsca zaznaczone na czerwono można dopasować do własnych potrzeb, czyli: 

  • ścieżkę folderu do przeszukania (działa rekursywnie). Można też podać cały dysk, ale wtedy będzie odpowiednio dłużej. 
  • algorytm. W powyższym przykładzie jest to MD5, ale można wybrać jeden z poniższych: 
    • SHA1, 
    • SHA256, 
    • SHA384, 
    • SHA512,
  • suma kontrolna poszukiwanego pliku.
Ważne!
Powyższy kawałek kodu nie sprawdzi plików, które są otworzone, bądź zablokowane.
Tak więc, kto zgadnie jaki plik powinna zwrócić powyższa komenda? :)

2 komentarze:

Bardzo proszę o zachowanie netykiety.