我有一个调用.cmd文件的power shell脚本。这里的建筑看上去就像
-PowerShell文件码
$ /profile =‘/savecred /user:myDomain\myuser "cmd /c C:\Users\myuser\code.cmd"’Start-Process cmd.exe $arguments -Wait‘
在这里,代码调用wget请求来下载文件。
wget .(这里的指挥)
我的目标是在PowerShell命令提示符下(在完成启动进程命令之后)了解wget命令是成功执行还是在执行过程中发生了诸如401、404之类的错误。这里我特别不感兴趣的错误类型,只是需要知道是否发生了错误。
发布于 2013-10-07 23:26:28
不确定这是否是您所要求的,但是您可以使用$测试最后一个命令的零返回代码吗?变量,如果返回代码不是零,它将是$false。
假设您有一个test.cmd文件,它只返回5:
exit 5如果在PowerShell中运行它,可以查看$的结果吗?
if ($?) {"No error"} else {"some error"}以下是获取更多信息的链接:http://blogs.technet.com/b/heyscriptingguy/archive/2011/05/12/powershell-error-handling-and-why-you-should-care.aspx
发布于 2013-10-07 23:45:55
在启动进程中使用$?是行不通的:
C:\PS> Start-Process cmd.exe -arg '/c exit 5'
C:\PS> $?
True如果要使用开始进程,可以选择以下路线:
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博客文章。
对于一个方便的CheckLastExitCode函数,可以通过这篇博客文章查看该函数的实现。
https://stackoverflow.com/questions/19236304
复制相似问题