Get-FileHash
Calcula el valor hash de un archivo mediante un algoritmo hash especificado.
Sintaxis
Path (valor predeterminado)
Get-FileHash
[-Path] <String[]>
[-Algorithm <String>]
[<CommonParameters>]
LiteralPath
Get-FileHash
-LiteralPath <String[]>
[-Algorithm <String>]
[<CommonParameters>]
Stream
Get-FileHash
-InputStream <Stream>
[-Algorithm <String>]
[<CommonParameters>]
Description
El cmdlet Get-FileHash calcula el valor hash de un archivo mediante un algoritmo hash especificado. Un valor hash es un valor único que corresponde al contenido del archivo. En lugar de identificar el contenido de un archivo por su nombre de archivo, extensión u otra designación, un hash asigna un valor único al contenido de un archivo. Los nombres de archivo y las extensiones se pueden cambiar sin modificar el contenido del archivo y sin cambiar el valor hash. Del mismo modo, el contenido del archivo se puede cambiar sin cambiar el nombre o la extensión. Sin embargo, cambiar incluso un solo carácter en el contenido de un archivo cambia el valor hash del archivo.
El propósito de los valores hash es proporcionar una manera criptográficamente segura de comprobar que no se ha cambiado el contenido de un archivo. Aunque algunos algoritmos hash, incluidos MD5 y SHA1, ya no se consideran seguros contra ataques, el objetivo de un algoritmo hash seguro es hacer imposible cambiar el contenido de un archivo por accidente o por intentos malintencionados o no autorizados y mantener el mismo valor hash. También puede usar valores hash para determinar si dos archivos diferentes tienen exactamente el mismo contenido. Si los valores hash de dos archivos son idénticos, el contenido de los archivos también es idéntico.
De forma predeterminada, el cmdlet Get-FileHash usa el algoritmo SHA256, aunque se puede usar cualquier algoritmo hash compatible con el sistema operativo de destino.
Ejemplos
Ejemplo 1: Calcular el valor hash de un archivo PowerShell.exe
PS C:\> Get-FileHash $pshome\powershell.exe | Format-List
Algorithm : SHA256
Hash : 6A785ADC0263238DAB3EB37F4C185C8FBA7FEB5D425D034CA9864F1BE1C1B473
Path : C:\Windows\System32\WindowsPowerShell\v1.0\powershell.exe
Este comando usa el cmdlet Get-FileHash para calcular el valor hash del archivo Powershell.exe. El algoritmo hash usado es el valor predeterminado, SHA256. La salida se canaliza al cmdlet Format-List para dar formato a la salida como una lista.
Ejemplo 2: Calcular el valor hash de un archivo 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
Este comando usa el cmdlet Get-FileHash y el algoritmo SHA384 para calcular el valor hash de un archivo ISO que un administrador ha descargado de Internet. La salida se canaliza al cmdlet Format-List para dar formato a la salida como una lista.
Ejemplo 3: Calcular el valor hash de una secuencia y comparar el procedimiento con la obtención del hash del archivo directamente
# 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
Parámetros
-Algorithm
Especifica la función hash criptográfica que se va a usar para calcular el valor hash del contenido del archivo especificado. Una función hash criptográfica incluye la propiedad que no es posible encontrar dos entradas distintas que generen los mismos valores hash. Las funciones hash se usan normalmente con firmas digitales y para la integridad de los datos. Los valores aceptables para este parámetro son:
- SHA1
- SHA256
- SHA384
- SHA512
- MACTripleDES
- MD5
- RIPEMD160
Si no se especifica ningún valor o si se omite el parámetro, el valor predeterminado es SHA256.
Por motivos de seguridad, MD5 y SHA1, que ya no se consideran seguros, solo deben usarse para la validación de cambios simple y no deben usarse para generar valores hash para los archivos que requieren protección contra ataques o alteraciones.
Propiedades de parámetro
| Tipo: | String |
| Valor predeterminado: | None |
| Valores aceptados: | SHA1, SHA256, SHA384, SHA512, MACTripleDES, MD5, RIPEMD160 |
| Admite caracteres comodín: | False |
| DontShow: | False |
Conjuntos de parámetros
(All)
| Posición: | Named |
| Obligatorio: | False |
| Valor de la canalización: | False |
| Valor de la canalización por nombre de propiedad: | False |
| Valor de los argumentos restantes: | False |
-InputStream
Especifica el flujo de entrada.
Propiedades de parámetro
| Tipo: | Stream |
| Valor predeterminado: | None |
| Admite caracteres comodín: | False |
| DontShow: | False |
Conjuntos de parámetros
Stream
| Posición: | Named |
| Obligatorio: | True |
| Valor de la canalización: | False |
| Valor de la canalización por nombre de propiedad: | False |
| Valor de los argumentos restantes: | False |
-LiteralPath
Especifica la ruta de acceso a un archivo. A diferencia del parámetro Path, el valor del parámetro LiteralPath se usa exactamente como se escribe. Ningún carácter se interpreta como carácter comodín. Si la ruta de acceso incluye caracteres de escape, incluya la ruta de acceso entre comillas simples. Las comillas simples indican a PowerShell que no interprete caracteres como secuencias de escape.
Propiedades de parámetro
| Tipo: | String[] |
| Valor predeterminado: | None |
| Admite caracteres comodín: | False |
| DontShow: | False |
| Alias: | PSPath |
Conjuntos de parámetros
LiteralPath
| Posición: | Named |
| Obligatorio: | True |
| Valor de la canalización: | False |
| Valor de la canalización por nombre de propiedad: | True |
| Valor de los argumentos restantes: | False |
-Path
Especifica la ruta de acceso a uno o varios archivos como una matriz. Se permite el uso de caracteres comodín.
Propiedades de parámetro
| Tipo: | String[] |
| Valor predeterminado: | None |
| Admite caracteres comodín: | True |
| DontShow: | False |
Conjuntos de parámetros
Path
| Posición: | 0 |
| Obligatorio: | True |
| Valor de la canalización: | False |
| Valor de la canalización por nombre de propiedad: | False |
| Valor de los argumentos restantes: | False |
CommonParameters
Este cmdlet admite los parámetros comunes: -Debug, -ErrorAction, -ErrorVariable, -InformationAction, -InformationVariable, -OutBuffer, -OutVariable, -PipelineVariable, -ProgressAction, -Verbose, -WarningAction y -WarningVariable. Para obtener más información, vea about_CommonParameters.
Entradas
String
Puede canalizar una cadena al cmdlet Get-FileHash que contiene una ruta de acceso a uno o varios archivos.
Salidas
Microsoft.PowerShell.Utility.FileHash
Get-FileHash devuelve un objeto que representa la ruta de acceso al archivo especificado, el valor del hash calculado y el algoritmo usado para calcular el hash.