Public/Test-ModuleHash.ps1
<#
.SYNOPSIS Validate module files .DESCRIPTION Validate all module files against the cryptographic hash created when the module was published. A file containing all hashes will be downloaded from the GitHub release and compared to the module files currently in use. .EXAMPLE Test-ModuleHash .INPUTS None .OUTPUTS Boolean #> function Test-ModuleHash { [CmdletBinding()] [OutputType([Boolean])] param ( ) try { Invoke-webrequest -Uri "https://github.com/gdbarron/VenafiPS/releases/download/v$ModuleVersion/hash.json" -OutFile ('{0}/hash.json' -f $env:TEMP) -UseBasicParsing $json = (Get-Content -Path ('{0}/hash.json' -f $env:TEMP) -Raw) | ConvertFrom-Json } catch { Write-Error "Unable to download and process hash.json, $_" return $false } $hashFailed = $json | ForEach-Object { Write-Verbose ('Checking {0}' -f $_.File) $thisHash = Get-ChildItem -Path ('{0}/../{1}' -f $PSScriptRoot, $_.File) | Get-FileHash -Algorithm SHA256 if ( $thisHash.Hash -ne $_.Hash ) { $thisHash.Path } } if ( $hashFailed ) { Write-Error ('hash check failed for the following files: {0}' -f ($hashFailed -join ', ')) } -not $hashFailed } |