Dela via


Get-FileHash

Beräknar hash-värdet för en fil med hjälp av en angiven hash-algoritm.

Syntax

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

Description

Cmdleten Get-FileHash beräknar hash-värdet för en fil med hjälp av en angiven hashalgoritm. Ett hash-värde är ett unikt värde som motsvarar innehållet i filen. I stället för att identifiera innehållet i en fil med dess filnamn, filnamnstillägg eller annan beteckning tilldelar en hash ett unikt värde till innehållet i en fil. Filnamn och filnamnstillägg kan ändras utan att innehållet i filen ändras och utan att hash-värdet ändras. På samma sätt kan filens innehåll ändras utan att ändra namnet eller tillägget. Men om du ändrar ett enda tecken i innehållet i en fil ändras filens hash-värde.

Syftet med hash-värden är att tillhandahålla ett kryptografiskt säkert sätt att kontrollera att innehållet i en fil inte har ändrats. Även om vissa hash-algoritmer, inklusive MD5 och SHA1, inte längre anses vara säkra mot angrepp, är målet med en säker hashalgoritm att göra det omöjligt att ändra innehållet i en fil, antingen av misstag eller genom skadligt eller obehörigt försök att behålla samma hashvärde. Du kan också använda hash-värden för att avgöra om två olika filer har exakt samma innehåll. Om hash-värdena för två filer är identiska är även innehållet i filerna identiskt.

Som standard använder cmdleten Get-FileHash SHA256-algoritmen, även om alla hash-algoritmer som stöds av måloperativsystemet kan användas.

Exempel

Exempel 1: Beräkna hashvärdet för en PowerShell.exe fil

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

Det här kommandot använder cmdleten Get-FileHash för att beräkna hash-värdet för Powershell.exe-filen. Den hash-algoritm som används är standardvärdet SHA256. Utdata skickas till cmdleten Format-List för att formatera utdata som en lista.

Exempel 2: Beräkna hashvärdet för en ISO-fil

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

Det här kommandot använder cmdleten Get-FileHash och SHA384-algoritmen för att beräkna hashvärdet för en ISO-fil som en administratör har laddat ned från Internet. Utdata skickas till cmdleten Format-List för att formatera utdata som en lista.

Exempel 3: Beräkna hashvärdet för en dataström och jämför proceduren med att hämta hashen direkt från filen

# 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

Parametrar

-Algorithm

Anger den kryptografiska hash-funktion som ska användas för att beräkna hash-värdet för innehållet i den angivna filen. En kryptografisk hash-funktion innehåller egenskapen att det inte går att hitta två distinkta indata som genererar samma hash-värden. Hash-funktioner används ofta med digitala signaturer och för dataintegritet. De godtagbara värdena för den här parametern är:

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

Om inget värde anges, eller om parametern utelämnas, är standardvärdet SHA256.

Av säkerhetsskäl bör MD5 och SHA1, som inte längre anses vara säkra, endast användas för enkel ändringsverifiering och bör inte användas för att generera hash-värden för filer som kräver skydd mot angrepp eller manipulering.

Typ:String
Godkända värden:SHA1, SHA256, SHA384, SHA512, MACTripleDES, MD5, RIPEMD160
Position:Named
Standardvärde:None
Obligatorisk:False
Godkänn pipeline-indata:False
Godkänn jokertecken:False

-InputStream

Anger indataströmmen.

Typ:Stream
Position:Named
Standardvärde:None
Obligatorisk:True
Godkänn pipeline-indata:False
Godkänn jokertecken:False

-LiteralPath

Anger sökvägen till en fil. Till skillnad från parametern Path används värdet för parametern LiteralPath precis som det skrivs. Inga tecken tolkas som jokertecken. Om sökvägen innehåller escape-tecken omger du sökvägen inom enkla citattecken. Enkla citattecken instruerar PowerShell att inte tolka tecken som escape-sekvenser.

Typ:String[]
Alias:PSPath
Position:Named
Standardvärde:None
Obligatorisk:True
Godkänn pipeline-indata:True
Godkänn jokertecken:False

-Path

Anger sökvägen till en eller flera filer som en matris. Jokertecken tillåts.

Typ:String[]
Position:0
Standardvärde:None
Obligatorisk:True
Godkänn pipeline-indata:False
Godkänn jokertecken:True

Indata

String

Du kan skicka en sträng till cmdleten Get-FileHash som innehåller en sökväg till en eller flera filer.

Utdata

Microsoft.PowerShell.Utility.FileHash

Get-FileHash- returnerar ett objekt som representerar sökvägen till den angivna filen, värdet för den beräknade hashen och algoritmen som används för att beräkna hashen.