我有一个调用.cmd文件的power shell脚本。这个架构看起来像
-PowerShell文件代码
$ arguments ='/ savecred / profile / user:myDomain \ myuser“cmd / c C:\ Users \ myuser \ code.cmd”' Start-Process cmd.exe $ arguments -Wait
这里代码调用wget请求来下载文件
wget .....(命令在这里)
我的目标是在PowerShell命令提示符(完成Start-Process命令之后)学习wget命令是否成功执行,或者执行期间是否发生了401,404之类的错误。在这里,我特别对错误的类型不感兴趣,只需要知道错误是否发生。
答案 0 :(得分:0)
不确定这是否是您要问的但是您可以使用$测试最后一个命令的非零返回码?变量,如果返回码不为零,则为$ false。
假设您有一个test.cmd文件,它只返回5:
exit 5
如果在PowerShell中运行它,可以查看$?
的结果if ($?) {"No error"} else {"some error"}
答案 1 :(得分:0)
在启动过程中使用$?
不起作用:
C:\PS> Start-Process cmd.exe -arg '/c exit 5'
C:\PS> $?
True
如果你想使用Start-Process,你可以走这条路:
C:\PS> $p = Start-Process cmd.exe -arg '/c exit 5' -PassThru -Wait
C:\PS> $p.ExitCode
5
或者您可以直接调用cmd.exe:
C:\PS> cmd /c exit 5
C:\PS> $LASTEXITCODE
5
在最后一个示例中,您可以使用$?
但我更喜欢$LastExitCode
,因为一些受到大脑损坏的控制台应用程序会因非成功而返回非零值。关于调用cmd.exe并使用$ LASTEXITCODE,请参阅此ScriptingGuy blog post。
对于一个方便的CheckLastExitCode
函数,请查看this blog post以了解函数的实现。