Udostępnij za pośrednictwem


Get-FileHash

Oblicza wartość skrótu dla pliku przy użyciu określonego algorytmu skrótu.

Składnia

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

Opis

Polecenie cmdlet Get-FileHash oblicza wartość skrótu dla pliku przy użyciu określonego algorytmu skrótu. Wartość skrótu to unikatowa wartość odpowiadająca zawartości pliku. Zamiast identyfikować zawartość pliku według nazwy pliku, rozszerzenia lub innego oznaczenia, skrót przypisuje unikatową wartość do zawartości pliku. Nazwy plików i rozszerzenia można zmienić bez zmiany zawartości pliku i bez zmiany wartości skrótu. Podobnie zawartość pliku można zmienić bez zmiany nazwy lub rozszerzenia. Jednak zmiana nawet pojedynczego znaku w zawartości pliku zmienia wartość skrótu pliku.

Celem wartości skrótu jest zapewnienie kryptograficznie bezpiecznego sposobu sprawdzania, czy zawartość pliku nie została zmieniona. Chociaż niektóre algorytmy wyznaczania wartości skrótu, w tym MD5 i SHA1, nie są już uważane za bezpieczne przed atakiem, celem bezpiecznego algorytmu wyznaczania wartości skrótu jest uniemożliwienie zmiany zawartości pliku albo przez przypadek, albo przez złośliwą lub nieautoryzowaną próbę i utrzymanie tej samej wartości skrótu. Możesz również użyć wartości skrótu, aby określić, czy dwa różne pliki mają dokładnie tę samą zawartość. Jeśli wartości skrótu dwóch plików są identyczne, zawartość plików jest również taka sama.

Domyślnie polecenie cmdlet Get-FileHash używa algorytmu SHA256, chociaż można użyć dowolnego algorytmu wyznaczania wartości skrótu obsługiwanego przez docelowy system operacyjny.

Przykłady

Przykład 1. Obliczanie wartości skrótu dla pliku PowerShell.exe

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

To polecenie używa polecenia cmdlet Get-FileHash do obliczenia wartości skrótu dla pliku Powershell.exe. Używany algorytm wyznaczania wartości skrótu jest domyślnym algorytmem SHA256. Dane wyjściowe są przesyłane potokiem do polecenia cmdlet Format-List w celu sformatowania danych wyjściowych jako listy.

Przykład 2. Obliczanie wartości skrótu dla pliku ISO

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

To polecenie używa polecenia cmdlet Get-FileHash i algorytmu SHA384 do obliczenia wartości skrótu dla pliku ISO pobranego przez administratora z Internetu. Dane wyjściowe są przesyłane potokiem do polecenia cmdlet Format-List w celu sformatowania danych wyjściowych jako listy.

Przykład 3. Oblicz wartość skrótu strumienia i porównaj procedurę z bezpośrednim pobraniem skrótu z pliku

# 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

Parametry

-Algorithm

Określa funkcję skrótu kryptograficznego, która ma być używana do obliczania wartości skrótu zawartości określonego pliku. Funkcja skrótu kryptograficznego zawiera właściwość, która nie jest możliwa do znalezienia dwóch odrębnych danych wejściowych, które generują te same wartości skrótu. Funkcje skrótu są często używane z podpisami cyfrowymi i integralnością danych. Dopuszczalne wartości tego parametru to:

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

Jeśli nie określono żadnej wartości lub jeśli parametr zostanie pominięty, wartość domyślna to SHA256.

Ze względów bezpieczeństwa, MD5 i SHA1, które nie są już uważane za bezpieczne, powinny być używane tylko do prostej weryfikacji zmian i nie należy ich używać do generowania wartości skrótu dla plików wymagających ochrony przed atakiem lub manipulowaniem.

Typ:String
Dopuszczalne wartości:SHA1, SHA256, SHA384, SHA512, MACTripleDES, MD5, RIPEMD160
Position:Named
Domyślna wartość:None
Wymagane:False
Akceptowanie danych wejściowych potoku:False
Akceptowanie symboli wieloznacznych:False

-InputStream

Określa strumień wejściowy.

Typ:Stream
Position:Named
Domyślna wartość:None
Wymagane:True
Akceptowanie danych wejściowych potoku:False
Akceptowanie symboli wieloznacznych:False

-LiteralPath

Określa ścieżkę do pliku. W przeciwieństwie do parametru Path wartość parametru LiteralPath jest używana dokładnie tak, jak jest typowana. Znaki nie są interpretowane jako symbole wieloznaczne. Jeśli ścieżka zawiera znaki ucieczki, należy ująć ścieżkę w pojedynczy cudzysłów. Znaki pojedynczego cudzysłowu instruują program PowerShell, aby nie interpretował znaków jako sekwencji ucieczki.

Typ:String[]
Aliasy:PSPath
Position:Named
Domyślna wartość:None
Wymagane:True
Akceptowanie danych wejściowych potoku:True
Akceptowanie symboli wieloznacznych:False

-Path

Określa ścieżkę do co najmniej jednego pliku jako tablicy. Dozwolone są symbole wieloznaczne.

Typ:String[]
Position:0
Domyślna wartość:None
Wymagane:True
Akceptowanie danych wejściowych potoku:False
Akceptowanie symboli wieloznacznych:True

Dane wejściowe

String

Możesz przekazać ciąg do polecenia cmdlet Get-FileHash zawierającego ścieżkę do co najmniej jednego pliku.

Dane wyjściowe

Microsoft.PowerShell.Utility.FileHash

Get-FileHash zwraca obiekt reprezentujący ścieżkę do określonego pliku, wartość obliczonego skrótu i algorytm używany do obliczenia skrótu.