我有一个脚本,该脚本可循环访问文件夹中的文件,并使用代码签名证书对所有.dll和.exe文件进行签名。
我的问题是,在30个左右的文件中,其中有2个文件是.exe,所有文件均已正确签名,并且签名有效,但其中一个已被选中但报告了证书错误。当我在其上执行Get-AuthenticodeSignature
时,返回值为HashMismatch
。
然后,如果我手动执行Set-AuthenticodeSignature
,它将对文件签名,并且没有HashMismatch
。
我尝试了几种遍历文件夹广告签名文件的方式,但问题仍然存在,无论何时我尝试通过脚本对特定文件进行签名,它总是返回HashMismatch
。
脚本是
foreach ($file in $files)
{$signed = Get-AuthenticodeSignature $file
if($signed -ne "Valid" )
{
$result = Set-AuthenticodeSignature -FilePath $file.FullName -Certificate $Cert -IncludeChain "All" -HashAlgorithm "sha256" -TimeStampServer "http://timestamp.verisign.com/scripts/timstamp.dll"
if($result.Status -eq "Valid") {
{Write-Host "$file success"}
}
else
{ Write-Host "$file $result.StatusMessage "}
}
}