PFCore-Security.ps1
#($Directory, $Certificate, $Include) function Invoke-SignChildren { Param( [Parameter(Position=0)] $Directory, [Parameter(Position=1)] $Certificate = $(throw "The parameter -Certificate is required."), [Parameter(Position=2)] $Include ) Push-Location $PWD if(!$Directory) { $Directory = $PSScriptRoot } if(!$Include) { $Include = @("*.ps1","*.psm1","*.psd1","*.ps1xml") } $files = @(Get-ChildItem -Path "$Directory" -Include $Include -Recurse) foreach($file in $files) { $filePath = Resolve-Path $file.DirectoryName $fileIsInCurrentFolder = $filePath.ToString() -eq $PWD.ToString() if(-not $fileIsInCurrentFolder) { Set-Location $filePath } $fileSig = (Get-AuthenticodeSignature -FilePath $file) if($fileSig.Status -ne [System.Management.Automation.SignatureStatus]::Valid) { Write-Host -Foreground "Yellow" "File $file signature needs updating" Set-AuthenticodeSignature -FilePath $file -Certificate $Certificate } else { Write-Host -Foreground "Green" "File $file has a valid signature" } } Pop-Location } Export-ModuleMember -function Invoke-SignChildren |