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

PowerShell执行ssh调用CertUtil报错但LastExitCode为0如何获取真实错误码

问题原因

你当前遇到的退出码未正确返回的问题,核心是远端命令的退出码没有完整透传回本地PowerShell,执行链路里的透传逻辑断裂了:
你执行的命令分为三层调用:本地PowerShell → 本地ssh程序 → 远端服务器ssh server → 远端执行CertUtil命令。默认场景下如果远端SSH的登录shell是PowerShell,PowerShell进程不会自动继承外部程序的退出码作为自身进程的退出码,始终返回0,所以ssh拿到的远端进程退出码就是0,本地$LastExitCode自然也为0。

解决方案

根据你远端SSH服务的默认登录shell类型选择对应调整方案即可:

远端登录shell为PowerShell

给远端执行的命令显式加上退出码透传逻辑:

powershell -command "& { ssh -o ServerAliveInterval=30 -o ServerAliveCountMax=2 server@server -x -p 22 'CertUtil -hashfile program.jar MD5; exit $LastExitCode' }"

远端登录shell为CMD

调整命令为:

powershell -command "& { ssh -o ServerAliveInterval=30 -o ServerAliveCountMax=2 server@server -x -p 22 'CertUtil -hashfile program.jar MD5 & exit %errorlevel%' }"

调整后远端执行CertUtil的错误码会被逐层透传回本地,你直接读取本地的$LastExitCode就能拿到真实的执行结果。

内容的提问来源于stack exchange,提问作者ololo

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.28 14:15:00