使用PowerShell& amp;和wget命令学习错误批处理文件

时间:2013-10-07 23:03:47

标签: powershell batch-file wget

我有一个调用.cmd文件的power shell脚本。这个架构看起来像

-PowerShell文件代码

$ arguments ='/ savecred / profile / user:myDomain \ myuser“cmd / c C:\ Users \ myuser \ code.cmd”' Start-Process cmd.exe $ arguments -Wait

  • .cmd代码文件

这里代码调用wget请求来下载文件

wget .....(命令在这里)

我的目标是在PowerShell命令提示符(完成Start-Process命令之后)学习wget命令是否成功执行,或者执行期间是否发生了401,404之类的错误。在这里,我特别对错误的类型不感兴趣,只需要知道错误是否发生。

2 个答案:

答案 0 :(得分:0)

不确定这是否是您要问的但是您可以使用$测试最后一个命令的非零返回码?变量,如果返回码不为零,则为$ 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

答案 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以了解函数的实现。