Checksum.ps1
|
Function Get-ChecksumFilePath { Param( [Parameter(Position=1, Mandatory=$True)][String] $Folder, [Parameter(Position=2, Mandatory=$True)][ValidateSet('MD5', 'SHA1', 'SHA256', 'SHA512')][String] $Algorithm ) $ChecksumFolder = Join-Path -Path $Folder -ChildPath 'metadata' $ChecksumFile = Join-Path -Path $ChecksumFolder -ChildPath "checksum.$($Algorithm.ToLower())" return $ChecksumFile } Function Get-ChecksumsForFiles { Param( [Parameter(Position=1, Mandatory=$True)][String] $Folder, [Parameter(Position=2, Mandatory=$True)][Object[]] $FilesToChecksum, [Parameter(Position=3, Mandatory=$True)][ValidateSet('MD5', 'SHA1', 'SHA256', 'SHA512')][String] $Algorithm ) $Checksums = [Collections.ArrayList]@() $ResolvedFolder = (Resolve-Path $Folder).Path.TrimEnd('\') ForEach ($File in $FilesToChecksum) { $ResolvedPath = Resolve-Path $File $Path = $ResolvedPath.Path.Replace($ResolvedFolder, '.').Replace('.\', '').Replace('\', '/') Write-Verbose "Creating $Algorithm checksum for $Path" $Hash = (Get-FileHash -Path $File -Algorithm $Algorithm).Hash.ToLower() $Checksums.Add("$Hash $Path") | Out-Null } return $Checksums } |