Get-FileHash
Berechnet den Hashwert für eine Datei mithilfe eines angegebenen Hashalgorithmus.
Syntax
Path (Standard)
Get-FileHash
[-Path] <String[]>
[-Algorithm <String>]
[<CommonParameters>]
LiteralPath
Get-FileHash
-LiteralPath <String[]>
[-Algorithm <String>]
[<CommonParameters>]
Stream
Get-FileHash
-InputStream <Stream>
[-Algorithm <String>]
[<CommonParameters>]
Beschreibung
Das Cmdlet Get-FileHash berechnet den Hashwert für eine Datei mithilfe eines angegebenen Hashalgorithmus. Ein Hashwert ist ein eindeutiger Wert, der dem Inhalt der Datei entspricht. Anstatt den Inhalt einer Datei anhand des Dateinamens, der Erweiterung oder einer anderen Bezeichnung zu identifizieren, weist ein Hash dem Inhalt einer Datei einen eindeutigen Wert zu. Dateinamen und Erweiterungen können geändert werden, ohne den Inhalt der Datei zu ändern, und ohne den Hashwert zu ändern. Ebenso kann der Inhalt der Datei geändert werden, ohne den Namen oder die Erweiterung zu ändern. Das Ändern eines einzelnen Zeichens im Inhalt einer Datei ändert jedoch den Hashwert der Datei.
Der Zweck von Hashwerten besteht darin, eine kryptografisch sichere Möglichkeit bereitzustellen, um zu überprüfen, ob der Inhalt einer Datei nicht geändert wurde. Während einige Hash-Algorithmen, einschließlich MD5 und SHA1, nicht mehr als sicher gegen Angriffe gelten, besteht das Ziel eines sicheren Hash-Algorithmus darin, es unmöglich zu machen, den Inhalt einer Datei zu ändern - entweder versehentlich oder durch böswillige oder nicht autorisierte Versuche - und denselben Hash-Wert beizubehalten. Sie können auch Hashwerte verwenden, um zu ermitteln, ob zwei verschiedene Dateien genau denselben Inhalt aufweisen. Wenn die Hashwerte zweier Dateien identisch sind, sind die Inhalte der Dateien ebenfalls identisch.
Standardmäßig verwendet das Cmdlet Get-FileHash den SHA256-Algorithmus, obwohl jeder Hashalgorithmus, der vom Zielbetriebssystem unterstützt wird, verwendet werden kann.
Beispiele
Beispiel 1: Berechnen des Hashwerts für eine PowerShell.exe Datei
PS C:\> Get-FileHash $pshome\powershell.exe | Format-List
Algorithm : SHA256
Hash : 6A785ADC0263238DAB3EB37F4C185C8FBA7FEB5D425D034CA9864F1BE1C1B473
Path : C:\Windows\System32\WindowsPowerShell\v1.0\powershell.exe
Mit diesem Befehl wird das Cmdlet Get-FileHash verwendet, um den Hashwert für die Powershell.exe Datei zu berechnen. Der verwendete Hashalgorithmus ist die Standardeinstellung SHA256. Die Ausgabe wird an das Cmdlet Format-List weitergeleitet, um die Ausgabe als Liste zu formatieren.
Beispiel 2: Berechnen des Hashwerts für eine ISO-Datei
PS C:\> Get-FileHash C:\Users\Andris\Downloads\Contoso8_1_ENT.iso -Algorithm SHA384 | Format-List
Algorithm : SHA384
Hash : 20AB1C2EE19FC96A7C66E33917D191A24E3CE9DAC99DB7C786ACCE31E559144FEAFC695C58E508E2EBBC9D3C96F21FA3
Path : C:\Users\Andris\Downloads\Contoso8_1_ENT.iso
Dieser Befehl verwendet das Cmdlet Get-FileHash und den SHA384-Algorithmus, um den Hashwert für eine ISO-Datei zu berechnen, die ein Administrator aus dem Internet heruntergeladen hat. Die Ausgabe wird an das Cmdlet Format-List weitergeleitet, um die Ausgabe als Liste zu formatieren.
Beispiel 3: Berechnen des Hash-Werts eines Streams und Vergleichen der Prozedur mit dem direkten Abrufen des Hashs aus der Datei
# Path of Microsoft.PowerShell.Utility.psd1
$file = (Get-Module Microsoft.PowerShell.Utility).Path
$hashFromFile = Get-FileHash -Path $file -Algorithm MD5
# Open $file as a stream
$stream = [System.IO.File]::OpenRead($file)
$hashFromStream = Get-FileHash -InputStream $stream -Algorithm MD5
$stream.Close()
Write-Host '### Hash from File ###' -NoNewline
$hashFromFile | Format-List
Write-Host '### Hash from Stream ###' -NoNewline
$hashFromStream | Format-List
# Check both hashes are the same
if ($hashFromFile.Hash -eq $hashFromStream.Hash) {
Write-Host 'Get-FileHash results are consistent' -ForegroundColor Green
} else {
Write-Host 'Get-FileHash results are inconsistent!!' -ForegroundColor Red
}
### Hash from File ###
Algorithm : MD5
Hash : 593D6592BD9B7F9174711AB136F5E751
Path : C:\WINDOWS\System32\WindowsPowerShell\v1.0\Modules\Microsoft.Powe
rShell.Utility\Microsoft.PowerShell.Utility.psd1
### Hash from Stream ###
Algorithm : MD5
Hash : 593D6592BD9B7F9174711AB136F5E751
Path :
Get-FileHash results are consistent
Parameter
-Algorithm
Gibt die kryptografische Hash-Funktion an, die zum Berechnen des Hash-Werts des Inhalts der angegebenen Datei verwendet werden soll. Eine kryptografische Hash-Funktion beinhaltet die Eigenschaft, dass es nicht möglich ist, zwei unterschiedliche Eingaben zu finden, die dieselben Hash-Werte generieren. Hashfunktionen werden häufig mit digitalen Signaturen und für die Datenintegrität verwendet. Die zulässigen Werte für diesen Parameter sind:
- SHA1
- SHA256
- SHA384
- SHA512
- MACTripleDES
- MD5
- RIPEMD160
Wenn kein Wert angegeben wird oder der Parameter nicht angegeben wird, lautet der Standardwert SHA256.
Aus Sicherheitsgründen sollten MD5 und SHA1, die nicht mehr als sicher gelten, nur für die einfache Änderungsüberprüfung verwendet werden und nicht verwendet werden, um Hashwerte für Dateien zu generieren, die Schutz vor Angriffen oder Manipulationen erfordern.
Parametereigenschaften
| Typ: | String |
| Standardwert: | None |
| Zulässige Werte: | SHA1, SHA256, SHA384, SHA512, MACTripleDES, MD5, RIPEMD160 |
| Unterstützt Platzhalter: | False |
| Nicht anzeigen: | False |
Parametersätze
(All)
| Position: | Named |
| Obligatorisch: | False |
| Wert aus Pipeline: | False |
| Wert aus Pipeline nach dem Eigenschaftsnamen: | False |
| Wert aus verbleibenden Argumenten: | False |
-InputStream
Gibt den Eingabedatenstrom an.
Parametereigenschaften
| Typ: | Stream |
| Standardwert: | None |
| Unterstützt Platzhalter: | False |
| Nicht anzeigen: | False |
Parametersätze
Stream
| Position: | Named |
| Obligatorisch: | True |
| Wert aus Pipeline: | False |
| Wert aus Pipeline nach dem Eigenschaftsnamen: | False |
| Wert aus verbleibenden Argumenten: | False |
-LiteralPath
Gibt den Pfad zu einer Datei an. Anders als die Pfad wird der Wert des Parameters LiteralPath Parameter wird genau so verwendet, wie er eingegeben wurde. Es werden keine Zeichen als Wildcardzeichen interpretiert. Wenn der Pfad Escapezeichen enthält, schließen Sie den Pfad in einfache Anführungszeichen ein. Einfache Anführungszeichen weisen PowerShell an, Zeichen nicht als Escapesequenzen zu interpretieren.
Parametereigenschaften
| Typ: | String[] |
| Standardwert: | None |
| Unterstützt Platzhalter: | False |
| Nicht anzeigen: | False |
| Aliase: | PSPath |
Parametersätze
LiteralPath
| Position: | Named |
| Obligatorisch: | True |
| Wert aus Pipeline: | False |
| Wert aus Pipeline nach dem Eigenschaftsnamen: | True |
| Wert aus verbleibenden Argumenten: | False |
-Path
Gibt den Pfad zu einer oder mehreren Dateien als Array an. Platzhalterzeichen sind zulässig.
Parametereigenschaften
| Typ: | String[] |
| Standardwert: | None |
| Unterstützt Platzhalter: | True |
| Nicht anzeigen: | False |
Parametersätze
Path
| Position: | 0 |
| Obligatorisch: | True |
| Wert aus Pipeline: | False |
| Wert aus Pipeline nach dem Eigenschaftsnamen: | False |
| Wert aus verbleibenden Argumenten: | False |
CommonParameters
Dieses Cmdlet unterstützt die allgemeinen Parameter -Debug, -ErrorAction, -ErrorVariable, -InformationAction, -InformationVariable, -OutBuffer, -OutVariable, -PipelineVariable, -ProgressAction, -Verbose, -WarningAction und -WarningVariable. Weitere Informationen findest du unter about_CommonParameters.
Eingaben
String
Sie können eine Zeichenfolge über die Pipeline an das Cmdlet Get-FileHash übergeben, die einen Pfad zu einer oder mehreren Dateien enthält.
Ausgaben
Microsoft.PowerShell.Utility.FileHash
Get-FileHash gibt ein Objekt zurück, das den Pfad zur angegebenen Datei, den Wert des berechneten Hashs und den zum Berechnen des Hashs verwendeten Algorithmus darstellt.