Get-FileHash
指定したハッシュ アルゴリズムを使用して、ファイルのハッシュ値を計算します。
構文
Get-FileHash
[-Path] <String[]>
[-Algorithm <String>]
[<CommonParameters>]
Get-FileHash
-LiteralPath <String[]>
[-Algorithm <String>]
[<CommonParameters>]
Get-FileHash
-InputStream <Stream>
[-Algorithm <String>]
[<CommonParameters>]
説明
Get-FileHash コマンドレットは、指定されたハッシュ アルゴリズムを使用してファイルのハッシュ値を計算します。 ハッシュ値は、ファイルの内容に対応する一意の値です。 ハッシュは、ファイルの内容をファイル名、拡張子、またはその他の指定で識別するのではなく、ファイルの内容に一意の値を割り当てます。 ファイル名と拡張子は、ファイルの内容を変更せず、ハッシュ値を変更せずに変更できます。 同様に、ファイルの内容は名前や拡張子を変更せずに変更できます。 ただし、ファイルの内容で 1 文字でも変更すると、ファイルのハッシュ値が変更されます。
ハッシュ値の目的は、ファイルの内容が変更されていないことを確認するための暗号で安全な方法を提供することです。 MD5 や SHA1 などの一部のハッシュ アルゴリズムは、攻撃に対して安全であるとは見なされなくなりましたが、安全なハッシュ アルゴリズムの目標は、ファイルの内容を誤って、または悪意のある、または許可されていない試みによって変更できなくし、同じハッシュ値を維持することです。 ハッシュ値を使用して、2 つの異なるファイルの内容がまったく同じかどうかを判断することもできます。 2 つのファイルのハッシュ値が同一の場合、ファイルの内容も同じです。
既定では、 Get-FileHash コマンドレットは SHA256 アルゴリズムを使用しますが、ターゲット オペレーティング システムでサポートされている任意のハッシュ アルゴリズムを使用できます。
例
例 1: PowerShell.exe ファイルのハッシュ値を計算する
PS C:\> Get-FileHash $pshome\powershell.exe | Format-List
Algorithm : SHA256
Hash : 6A785ADC0263238DAB3EB37F4C185C8FBA7FEB5D425D034CA9864F1BE1C1B473
Path : C:\Windows\System32\WindowsPowerShell\v1.0\powershell.exe
このコマンドでは、 Get-FileHash コマンドレットを使用して、Powershell.exe ファイルのハッシュ値を計算します。 使用されるハッシュ アルゴリズムは既定の SHA256 です。 出力は Format-List コマンドレットにパイプ処理され、出力がリストとして書式設定されます。
例 2: 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
このコマンドは、 Get-FileHash コマンドレットと SHA384 アルゴリズムを使用して、管理者がインターネットからダウンロードした ISO ファイルのハッシュ値を計算します。 出力は Format-List コマンドレットにパイプ処理され、出力がリストとして書式設定されます。
例 3: ストリームのハッシュ値を計算し、プロシージャをファイルから直接ハッシュを取得する方法と比較します
# 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
パラメーター
-Algorithm
指定したファイルの内容のハッシュ値を計算するために使用する暗号化ハッシュ関数を指定します。 暗号化ハッシュ関数には、同じハッシュ値を生成する 2 つの異なる入力を見つけることができないというプロパティが含まれています。 ハッシュ関数は、一般的にデジタル署名と共に使用され、データの整合性のために使用されます。 このパラメーターに使用できる値は次のとおりです。
- SHA1
- SHA256
- SHA384
- SHA512
- MACTripleDESの
- MD5
- RIPEMD160
値が指定されていない場合、またはパラメーターを省略した場合、既定値は SHA256 です。
セキュリティ上の理由から、MD5 と SHA1 はセキュリティで保護されなくなったため、単純な変更検証にのみ使用する必要があり、攻撃や改ざんからの保護を必要とするファイルのハッシュ値を生成するために使用しないでください。
型: | String |
指定可能な値: | SHA1, SHA256, SHA384, SHA512, MACTripleDES, MD5, RIPEMD160 |
配置: | Named |
規定値: | None |
必須: | False |
パイプライン入力を受け取る: | False |
ワイルドカード文字を受け取る: | False |
-InputStream
入力ストリームを指定します。
型: | Stream |
配置: | Named |
規定値: | None |
必須: | True |
パイプライン入力を受け取る: | False |
ワイルドカード文字を受け取る: | False |
-LiteralPath
ファイルへのパスを指定します。 Path パラメーターとは異なり、LiteralPath パラメーターの値は、型指定されたとおりに使用されます。 ワイルドカード文字として解釈される文字はありません。 パスにエスケープ文字が含まれている場合は、パスを単一引用符で囲みます。 単一引用符は、文字をエスケープ シーケンスとして解釈しないように PowerShell に指示します。
型: | String[] |
Aliases: | PSPath |
配置: | Named |
規定値: | None |
必須: | True |
パイプライン入力を受け取る: | True |
ワイルドカード文字を受け取る: | False |
-Path
1 つ以上のファイルへのパスを配列として指定します。 ワイルドカード文字を使用できます。
型: | String[] |
配置: | 0 |
規定値: | None |
必須: | True |
パイプライン入力を受け取る: | False |
ワイルドカード文字を受け取る: | True |
入力
1 つ以上のファイルへのパスを含む Get-FileHash コマンドレットに文字列をパイプ処理できます。
出力
Microsoft.PowerShell.Utility.FileHash
Get-FileHash は、指定されたファイルへのパス、計算されたハッシュの値、およびハッシュの計算に使用されたアルゴリズムを表すオブジェクトを返します。