首页 > 解决方案 > Powershell 条件

问题描述

我想在 powershell 中写这个,但无论我如何尝试,似乎都无法让它工作。我用过“try and catch”,但它似乎没有按我想要的方式工作。

Try
   {
        write-host Attempting Reset
        CD C:\MKC1_ECU_Reuse
        ./power_on.bat
        CD C:\UTIL\XDL\XMIT\BIN
        .\xpc32_nodriver conm2.xpc -con
        .\xpc32_nodriver $global:path\$global:customer\$global:customer_reset.xpc
    }
Catch
    {
         Write-warning "Something went wrong!: $_"
         return # script failed
    }

在批处理中,它看起来像这样:

Do some task || goto :error
goto :finished

无论任务是否成功完成,Powershell 都会尝试执行该任务,然后转到下一行。我正在尝试做的任务是连接到 EEPROM 并对其进行写入。如果写入失败,我不想继续我的脚本。我宁愿能够显示一个错误,告诉操作员有问题。我正在使用我的公司允许我使用的东西,或者我会使用允许 || 的最新 Powershell 和 &&。任何帮助将不胜感激。

标签: powershellbatch-file

解决方案


在批处理文件中,您可能需要以下内容:

IF %ERRORLEVEL% NEQ 0 ( 
   exit %ERRORLEVEL%
)

这应该将提升的退出代码传递回$LASTEXITCODE变量中的 PowerShell。然后,您也许可以使用上一个答案中的逻辑。

我猜他们是在强迫你使用 .bat,但最好是从 PowerShell 内部启动底层程序。


推荐阅读