【问题标题】:Get return of cmd.exe exit获取 cmd.exe 退出的返回
【发布时间】:2018-06-08 07:02:35
【问题描述】:

我开发了一个 PowerShell 应用程序。我用例如

Start-Process "cmd.exe" "/c some_command"
#rest of the source code

但是当我运行它时,它不会等待cmd.exe 关闭,然后再执行其余的源代码。

如何让cmd.exe“退出事件”返回以继续运行我的 PowerShell 脚本?

或者在 cmd.exe 运行时休眠 PowerShell 脚本的其他方式?

【问题讨论】:

    标签: powershell


    【解决方案1】:

    我发现答案是使用-wait

    Start-Process "cmd.exe" "/c some_command" -wait
    

    【讨论】:

      【解决方案2】:

      您可以直接从 PowerShell 调用 CMD:

      cmd.exe /c some_command
      

      如果可执行文件作为字符串而不是裸词提供,则必须在语句前面加上 call operator(否则使用运算符是可选的):

      & 'cmd.exe' /c some_command
      

      这种调用会自动同步运行。

      Start-Process 调用默认是异步的。您可以通过添加参数-Wait 将行为更改为同步。

      【讨论】:

        【解决方案3】:

        除了使用-Wait,还可以查看退出码来验证命令是否成功:

        [int]$ExitCode = (Start-Process "cmd.exe" "/c some_command" -Wait).ExitCode
        
        # Check exit code
        if ($ExitCode -ne 0) {
            throw "Something went wrong.
        }
        

        这对于调试和检查cmd 是否成功很有用。

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 2010-09-21
          • 2014-04-28
          • 2012-03-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2017-01-21
          • 1970-01-01
          相关资源
          最近更新 更多