Delen via


Get-FileHash

Berekent de hashwaarde voor een bestand met behulp van een opgegeven hash-algoritme.

Syntaxis

Get-FileHash
   [-Path] <String[]>
   [-Algorithm <String>]
   [<CommonParameters>]
Get-FileHash
   -LiteralPath <String[]>
   [-Algorithm <String>]
   [<CommonParameters>]
Get-FileHash
   -InputStream <Stream>
   [-Algorithm <String>]
   [<CommonParameters>]

Description

De Get-FileHash cmdlet berekent de hash-waarde voor een bestand met behulp van een opgegeven hash-algoritme. Een hashwaarde is een unieke waarde die overeenkomt met de inhoud van het bestand. In plaats van de inhoud van een bestand te identificeren op basis van de bestandsnaam, extensie of andere aanduiding, wijst een hash een unieke waarde toe aan de inhoud van een bestand. Bestandsnamen en -extensies kunnen worden gewijzigd zonder de inhoud van het bestand te wijzigen en zonder de hashwaarde te wijzigen. Op dezelfde manier kan de inhoud van het bestand worden gewijzigd zonder de naam of extensie te wijzigen. Als u echter zelfs één teken wijzigt in de inhoud van een bestand, wordt de hashwaarde van het bestand gewijzigd.

Het doel van hashwaarden is om een cryptografisch veilige manier te bieden om te controleren of de inhoud van een bestand niet is gewijzigd. Hoewel sommige hash-algoritmen, waaronder MD5 en SHA1, niet langer als veilig worden beschouwd tegen aanvallen, is het doel van een beveiligd hash-algoritme om het onmogelijk te maken om de inhoud van een bestand per ongeluk te wijzigen, of door kwaadwillende of niet-geautoriseerde pogingen om dezelfde hash-waarde te behouden. U kunt ook hashwaarden gebruiken om te bepalen of twee verschillende bestanden exact dezelfde inhoud hebben. Als de hashwaarden van twee bestanden identiek zijn, is de inhoud van de bestanden ook identiek.

De cmdlet Get-FileHash maakt standaard gebruik van het SHA256-algoritme, hoewel elk hash-algoritme dat wordt ondersteund door het doelbesturingssysteem kan worden gebruikt.

Voorbeelden

Voorbeeld 1: De hashwaarde berekenen voor een PowerShell.exe-bestand

PS C:\> Get-FileHash $pshome\powershell.exe | Format-List
Algorithm : SHA256
Hash      : 6A785ADC0263238DAB3EB37F4C185C8FBA7FEB5D425D034CA9864F1BE1C1B473
Path      : C:\Windows\System32\WindowsPowerShell\v1.0\powershell.exe

Met deze opdracht wordt de cmdlet Get-FileHash gebruikt om de hash-waarde voor het Powershell.exe-bestand te berekenen. Het gebruikte hash-algoritme is de standaard SHA256. De uitvoer wordt doorgesluisd naar de Format-List cmdlet om de uitvoer als een lijst op te maken.

Voorbeeld 2: De hashwaarde berekenen voor een ISO-bestand

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

Met deze opdracht wordt de cmdlet Get-FileHash en het SHA384-algoritme gebruikt om de hash-waarde te berekenen voor een ISO-bestand dat een beheerder van internet heeft gedownload. De uitvoer wordt doorgesluisd naar de Format-List cmdlet om de uitvoer als een lijst op te maken.

Voorbeeld 3: De hashwaarde van een stream berekenen en de procedure vergelijken met het rechtstreeks ophalen van de hash uit het bestand

# 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

Parameters

-Algorithm

Hiermee geeft u de cryptografische hash-functie die moet worden gebruikt voor het berekenen van de hash-waarde van de inhoud van het opgegeven bestand. Een cryptografische hash-functie bevat de eigenschap dat het niet mogelijk is om twee afzonderlijke invoer te vinden die dezelfde hash-waarden genereren. Hash-functies worden vaak gebruikt met digitale handtekeningen en voor gegevensintegriteit. De acceptabele waarden voor deze parameter zijn:

  • SHA1
  • SHA256
  • SHA384
  • SHA512
  • MACTripleDES
  • MD5
  • RIPEMD160

Als er geen waarde is opgegeven of als de parameter wordt weggelaten, is de standaardwaarde SHA256.

Om veiligheidsredenen mogen MD5 en SHA1, die niet langer als veilig worden beschouwd, alleen worden gebruikt voor eenvoudige wijzigingsvalidatie en mogen ze niet worden gebruikt voor het genereren van hash-waarden voor bestanden die bescherming vereisen tegen aanvallen of manipulatie.

Type:String
Geaccepteerde waarden:SHA1, SHA256, SHA384, SHA512, MACTripleDES, MD5, RIPEMD160
Position:Named
Default value:None
Vereist:False
Pijplijninvoer accepteren:False
Jokertekens accepteren:False

-InputStream

Hiermee geeft u de invoerstroom.

Type:Stream
Position:Named
Default value:None
Vereist:True
Pijplijninvoer accepteren:False
Jokertekens accepteren:False

-LiteralPath

Hiermee geeft u het pad naar een bestand. In tegenstelling tot de parameter Path, wordt de waarde van de parameter LiteralPath exact gebruikt zoals deze is getypt. Er worden geen tekens geïnterpreteerd als jokertekens. Als het pad escapetekens bevat, plaatst u het pad tussen enkele aanhalingstekens. Met enkele aanhalingstekens wordt PowerShell geïnstrueerd om tekens niet te interpreteren als escapereeksen.

Type:String[]
Aliassen:PSPath
Position:Named
Default value:None
Vereist:True
Pijplijninvoer accepteren:True
Jokertekens accepteren:False

-Path

Hiermee geeft u het pad naar een of meer bestanden als een matrix. Jokertekens zijn toegestaan.

Type:String[]
Position:0
Default value:None
Vereist:True
Pijplijninvoer accepteren:False
Jokertekens accepteren:True

Invoerwaarden

String

U kunt een tekenreeks doorsluisen naar de Get-FileHash-cmdlet die een pad naar een of meer bestanden bevat.

Uitvoerwaarden

Microsoft.PowerShell.Utility.FileHash

Get-FileHash- retourneert een object dat het pad naar het opgegeven bestand vertegenwoordigt, de waarde van de berekende hash en het algoritme dat wordt gebruikt om de hash te berekenen.