我开发了一个PowerShell应用程序。我用的是例如
Start-Process "cmd.exe" "/c some_command"
#rest of the source code
但是当我运行它时,它不会等待cmd.exe
关闭,然后再执行其余的源代码。
如何让cmd.exe
“退出事件”返回以继续运行我的PowerShell脚本?
还是在cmd.exe运行时睡眠PowerShell脚本的其他方法吗?
答案 0 :(得分:1)
我发现答案是使用-wait
Start-Process "cmd.exe" "/c some_command" -wait
答案 1 :(得分:1)
您可以直接从PowerShell调用CMD:
cmd.exe /c some_command
如果可执行文件是以字符串而不是单词提供的,则必须在语句前加上call operator(否则使用运算符是可选的):
& 'cmd.exe' /c some_command
这种调用会自动同步运行。
默认情况下, Start-Process
调用是异步的。您可以通过添加参数-Wait
将行为更改为同步。
答案 2 :(得分:1)
除了使用-Wait
之外,您还可以检查退出代码以验证命令成功:
[int]$ExitCode = (Start-Process "cmd.exe" "/c some_command" -Wait).ExitCode
# Check exit code
if ($ExitCode -ne 0) {
throw "Something went wrong.
}
这对于调试和检查cmd
成功非常有用。