【发布时间】:2014-06-20 08:21:19
【问题描述】:
在本身是控制台应用程序的 PowerShell 脚本中,我需要执行另一个具有任意名称、参数、无流重定向的控制台应用程序并获得正确的返回码。
这是我当前的代码:
$execFile = "C:\Path\To\Some.exe"
$params = "arg1 arg2 /opt3 /opt4"
# Wait until the started process has finished
Invoke-Expression ($execFile + " " + $params + " | Out-Host")
if (-not $?)
{
# Show error message
}
它可以使用正确的参数启动 Win32 应用程序(空格分隔参数,并非所有内容都进入 argv[1])。但是返回码似乎丢失了,它还重定向了控制台流。那是行不通的。
另外一个代码也错了:
& $execFile $params
if (-not $?)
{
# Show error message
}
当它获取返回码并等待进程完成时,它会将所有参数放入 argv[1] 并且执行的进程无法处理该垃圾输入。
PowerShell 中还有其他解决方案吗?
【问题讨论】:
-
好的,今天给了我正确的返回码。仍然存在控制台重定向问题。我没有得到任何彩色输出,并且执行的进程无法确定其控制台窗口大小或移动光标。
标签: powershell