You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.19 17:36:24