Public/strings/Get-FileHash.ps1

function Get-FileHash {
    <#
.SYNOPSIS
Returns hash from a file
 
.DESCRIPTION
Returns hash from a file using given hash algorithm.
Default algorithm is: 'MD5'
 
.PARAMETER FileName
 Name/path of the file to be hashed
 
.PARAMETER HashName
Hash algorithm name
 
.EXAMPLE
Get-FileHash README.md
Returns hash from "README.md" file, which is located in the current directory
 
.EXAMPLE
Get-FileHash "C:\README.md"
Returns hash from "README.md" file, which is location is "C:\README.md"
 
.EXAMPLE
Get-FileHash README.md -HashName "sha256"
Returns hash from "README.md" file, which is located in the current directory using 'sha256' algorithm
 
#>


    [CmdletBinding()]
    param(
        [Parameter(Mandatory = $true, Position = 0)]
        [String]$FileName,
        [Parameter(Mandatory = $false, Position = 1)]
        [String]$HashName = "MD5"
    )

    process {
        if (!(Test-Path $FileName)) {
            $curLoc = Get-Location
            $FileName = Join-Path $curLoc $FileName
        }
        if (!(Test-Path $FileName)) {
            Write-Error "Could not find file $FileName"
            exit
        }
        $FileName = Get-Item -Path $FileName
        $FileStream = New-Object System.IO.FileStream($FileName, [System.IO.FileMode]::Open)
        $StringBuilder = New-Object System.Text.StringBuilder
        [System.Security.Cryptography.HashAlgorithm]::Create($HashName).ComputeHash($FileStream) | % { [Void]$StringBuilder.Append($_.ToString("x2")) }
        $FileStream.Close()
        $FileStream.Dispose()
        $StringBuilder.ToString()
    }
}