如何在PowerShell的If条件中检测signtool签名操作是否成功
解决signtool签名失败时脚本退出的问题
要实现signtool签名失败时脚本退出的需求,只需在签名命令执行后检查外部命令的退出码即可(signtool作为外部程序,执行结果会存在PowerShell的$LASTEXITCODE变量中,非0值代表执行失败)。修改后的完整脚本如下:
If (Test-Path -Path "$env:DigiCertificate"){ # 执行签名操作 signtool sign /f $env:DigiCertificate /fd SHA256 /p $env:DigicertsPassword $MediaFolderPath\scripts\*.ps1 $MediaFolderPath\tools\*.exe # 检查签名是否成功 if ($LASTEXITCODE -ne 0) { Write-Host "##[error]数字签名执行失败,退出码:$LASTEXITCODE" -ForegroundColor Red exit 1 } } Else { Write-Host "##[warning]数字签名所需的证书文件未找到" -ForegroundColor Yellow exit 1 }
关键改动说明
- 新增
$LASTEXITCODE检查逻辑:signtool执行完成后,立即判断退出码是否为0,若不为0则输出错误信息并退出脚本 - 错误信息使用
##[error]标记,适配CI/CD环境的日志识别(和原脚本的警告标记格式一致) - 统一退出码为1,确保脚本在证书不存在或签名失败时都以失败状态终止
内容的提问来源于stack exchange,提问作者Santoshkumar
相关产品推荐
相关产品推荐

