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
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
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.