PowerShell Prüfsumme von Dateien ermitteln
Wer eine Datei von Punkt A zu Punkt B kopieren möchte, dem kann eine Prüfsumme hilfreich sein. Damit kann man nachprüfen, ob es sich bei der kopierten Datei um ein und die selbe handelt. Ist der Hash.Wert der gleiche, ist die Datei auch identisch. Ist der Hash-Wert nicht der selbe, muss man die Datei neu kopieren.
Ab PowerShell Version 4, die seit Windows 8 / Windows Server 2012 mit dabei ist, gibt es auch einen eigenen cmdlet namens "Get-Filehash". Mittels "-Algorithm" lässt sich auch noch den gewünschten Algorithmus wählen.
Auch interessant:
- Windows 11 News im Blog - Windows 11 neu clean installieren Tipps und Tricks
- Windows 11 Startmenü und die Einstellungen - Taskleiste einrichten Tipps und Tricks
- Windows 11 auch ohne TPM und Secure Boot installieren
- Windows 11 ISO : 23H2 (22631), 24H2 (26100)
- Windows 11 Patchday (Sicherheitsupdate des Monats)
- Win 11 24H2: 8.04.2025 KB5055523 26100.3775
- Win 11 23H2: 8.04.2025 KB5055528 22631.5189
- Windows 11 Insider ISO:
- Neu installieren: Windows 10 neu installieren - Tipps und Tricks
- Unterschied Cloud Download Lokale Neuinstallation und Inplace Upgrade Windows 10
- Windows 10 ISO Final : 22H2 19045 ISO
- Windows 10 Patchday 8.04.2025 KB5055518 Windows 10 19045.5737
- Funktionsupdate auf Windows 10 22H2 (19045) KB5015684 Enablement Package - Download
- Intel Microcode Updates für Windows 10 20H2 / 2004 bis 1507 (27.01.2021)
- PowerShell in die Suche der Taskleiste eingeben und starten
- Man kann auch die Eingabeaufforderung (Administrator) nutzen. Hier gibt man einfach powershell ein und kann die Eingaben hier genau so vornehmen.
-Algorithm
Gibt die kryptografische Hashfunktion an, die zum Berechnen des Hashwertes des Inhalts der angegebenen Datei verwendet wird. Eine kryptografische Hashfunktion enthält die Eigenschaft, dass es nicht möglich ist, zwei verschiedene Eingaben zu finden, die dieselben Hashwerte erzeugen. Hash-Funktionen werden häufig mit digitalen Signaturen und für Datenintegrität verwendet. Die zulässigen Werte für diesen Parameter sind:
- - SHA1
- - SHA256
- - SHA384
- - SHA512
- - MACTripleDES
- - MD5
- - RIPEMD160
Aus Sicherheitsgründen sollten MD5 und SHA1, die nicht mehr als sicher betrachtet werden, nur für eine einfache Änderungsvalidierung verwendet werden und sollten nicht verwendet werden, um Hashwerte für Dateien zu erzeugen, die Schutz vor Angriffen oder Manipulationen erfordern.
Als Beispiel werde ich hier den Hash einer Windows 10 Iso Datei berechnen.
PS C:\WINDOWS\system32> get-filehash C:\Users\lem0th\Desktop\Windows.iso -Algorithm SHA384 | Format-List Algorithm : SHA384 Hash : 555073E147487CDC5428EED6FF18CEB3973F7322C461FF9AF0629A37ECF7CDF98912F931641C2C46C10F7F9E3E29B50A Path : C:\Users\lem0th\Desktop\Windows.iso
Dieser Befehl verwendet das Cmdlet Get-FileHash und den SHA384-Algorithmus, um den Hashwert für eine ISO-Datei zu berechnen, die ich aus dem Internet heruntergeladen hat. Die Ausgabe wird zum Format-List-Cmdlet geleitet, um die Ausgabe als Liste zu formatieren.
Als zweites Beispiel werde ich den Hash der PowerShell.exe berechnen:
PS C:\WINDOWS\system32> get-filehash $pshome\powershell.exe | Format-List Algorithm : SHA256 Hash : BA4038FD20E474C047BE8AAD5BFACDB1BFC1DDBE12F803F473B7918D8D819436 Path : C:\Windows\System32\WindowsPowerShell\v1.0\powershell.exe
Dieser Befehl verwendet wieder das Cmdlet Get-FileHash und den Standard SHA256-Algorithmus, um den Hashwert der PowerShell.exe zu berechnen.
Um nun als weiteres Beispiel den Hash einer .7z (7zip eigenes Archiv) zu berechnen, geht man folgendermaßen vor:
PS C:\WINDOWS\system32> get-filehash -path C:\Users\lem0th\Desktop\Tuts.7z -Algorithm SHA256 Algorithm Hash Path --------- ---- ---- SHA256 38F3B3F4800A6E59C5DFCBC222ADB6ED6987087E9A90E25D39E1C0CCD3EAEA97 C:\Users\lem0th\Desktop\Tuts.7z
-Path
Gibt den Pfad zu einer oder mehreren Dateien als Array an. Platzhalterzeichen sind zulässig.
Type: String[] Parameter Sets: Path Aliases: Required: True Position: 0 Default value: None Accept pipeline input: False Accept wildcard characters: False
Um nun die Prüfsumme zu vergleichen, muss man folgenden Befehl eingeben:
Get-FileHash -Path C:\DateiName -Algorithm SHA256| Compare-Object -ReferenceObject "2F9296722Cd04054566D98F97649B09E" -DifferenceObject {$_.Hash}
Wo die "2F9296722Cd04054566D98F97649B09E" steht, muss der jeweilige Hash-Code von der Datei rein, welche Überprüft werden soll.
Als Beispiel verwende ich mein Tut.7z Archiv auf dem Desktop.
PS C:\WINDOWS\system32> Get-FileHash -Path C:\Users\lem0th\Desktop\Tuts.7z -Algorithm SHA256 | Compare-Object -Reference Object "38F3B3F4800A6E59C5DFCBC222ADB6ED6987087E9A90E25D39E1C0CCD3EAEA9" -DifferenceObject {$_.Hash} InputObject SideIndicator ----------- ------------- 38F3B3F4800A6E59C5DFCBC222ADB6ED6987087E9A90E25D39E1C0CCD3EAEA97 => 38F3B3F4800A6E59C5DFCBC222ADB6ED6987087E9A90E25D39E1C0CCD3EAEA9 <=
Hier kann man sehen, dass die Werte nicht übereinstimmen mit dem Orginal.
Sollte keine solche Ausgabe erscheinen, heißt dies, dass die Hashes übereinstimmen.
Sollte man eine PowerShell haben, welche nicht die Version 4 besitzt, habe ich auf diesem Blog ein nützliches Skript gefunden, welches quasi das cmdlet Get-FileHash ersetzt:
param ( [Parameter(Mandatory=$true)] [String] $Path, [ValidateSet("MD5", "SHA1", "SHA256", "SHA512")] $Algorithm = "MD5", [Parameter(Mandatory=$true)] [String] $Hash ) # Calculate hash of given file with given algorithm $algo = [System.Security.Cryptography.HashAlgorithm]::Create("$Algorithm") $stream = New-Object System.IO.FileStream($path, [System.IO.FileMode]::Open) $StringBuilder = New-Object System.Text.StringBuilder $algo.ComputeHash($stream) | % { [void] $StringBuilder.Append($_.ToString("x2")) } $fileHash = $StringBuilder.ToString() $stream.Dispose() # Case insensitive comparison. If variable $compared is 0 the hashes are equal. $compared = [string]::Compare($fileHash, $Hash, $True) Write-Host "" Write-Host Algorithm : $Algorithm Write-Host File Hash : $fileHash Write-Host Given Hash: $Hash # Check if hashes are equal if ($compared -eq "0"){ Write-Host "The hashes are equal." -ForegroundColor Green} else{ Write-Warning "The hashes are NOT equal."} Write-Host ""
Dieses Script muss man sich kopieren und in eine Textdatei einfügen, welche man dann mit der Dateiendung .ps1 abspeichern tut.
Um dieses Skript dann noch laden zu können, müssen wir die Sicherheitsstufe der PowerShell runterschalten, da dies Skript nicht signiert ist, und mit der Standard-Sicherheitsstufe eine Fehlermeldung kommt.
Ich empfehle, diese Sicherheitsstufe:
Set-ExecutionPolicy RemoteSigned
Damit werden nur lokale Skripte ausgeführt, die von einem Vertrauenswürdigem Autor stammen.
Man kann es auch wieder so umändern, dass nur Skripte ausgeführt werden sollen, welche digital signiert sind:
Set-ExecutionPolicy AllSigned
Um dann das Script auszuführen, macht man folgendes:
PS C:\users\lem0th\desktop> .\script.ps1 -Path E:\Test.7z -Algorithm SHA256 -Hash 5E1D060360A9C2B50FC767B77E3F78 FF1A6141CCCACCA13FC55D305143760C2B Algorithm : SHA256 File Hash : 5e1d060360a9c2b50fc767b77e3f78ff1a6141cccacca13fc55d305143760c2b Given Hash: 5E1D060360A9C2B50FC767B77E3F78FF1A6141CCCACCA13FC55D305143760C2B The hashes are equal.
Sollte der Wert nicht übereinstimmen, kommt folgendes:
PS C:\users\lem0th\desktop> .\script.ps1 -Path E:\Test.7z -Algorithm SHA256 -Hash 5E1D060360A9C2B50FC767B77E3F78 FF1A6141CCCACCA13FC55D305143760C2 Algorithm : SHA256 File Hash : 5e1d060360a9c2b50fc767b77e3f78ff1a6141cccacca13fc55d305143760c2b Given Hash: 5E1D060360A9C2B50FC767B77E3F78FF1A6141CCCACCA13FC55D305143760C2 WARNUNG: The hashes are NOT equal.
Danke an Lem0th für das Tutorial
Fragen zu Windows 11?
Du hast Fragen oder benötigst Hilfe? Dann nutze bitte unser Forum und nicht die Tipp-Box! Auch Gäste (ohne Registrierung) können bei uns Fragen stellen oder Fragen beantworten. - Link zum Forum | Forum Windows 11
Neue und interessante Tutorials für Windows 11 |
|
|
|
|
Fragen zu Windows 10?
Du hast Fragen oder benötigst Hilfe? Dann nutze bitte unser Forum und nicht die Tipp-Box! Auch Gäste (ohne Registrierung) können bei uns Fragen stellen oder Fragen beantworten. - Link zum Forum | Forum Windows 10
Neue Tutorials für Windows 10 | Top 10 der Tutorials für Windows 10 | |