Powershell:在运行时从cmd捕获输出

时间:2014-06-05 14:14:57

标签: powershell cmd command runtime

是否可以在cmd运行时从命令行捕获输出?我是一个小的exe,它显示了应该用脚本处理的各种消息,并在脚本运行时向用户显示一些信息。

我的脚本使用一些参数启动程序(exe)并检查进程是否仍在运行。在程序运行时,我想捕获所有消息到变量来处理它。我找不到任何解决方案,使用“run.exe 2>& 1”等进行一些测试......失败。

有什么想法吗?

1 个答案:

答案 0 :(得分:0)

$oInfo = New-Object System.Diagnostics.ProcessStartInfo
$oInfo.FileName  = "ping"
$oInfo.Arguments = "localhost"
$oInfo.UseShellExecute = $False
$oInfo.RedirectStandardOutput = $True

$oProcess = New-Object System.Diagnostics.Process
$oProcess.StartInfo = $oInfo

[Void]$oProcess.Start()

$bDone = $False

while (!$bDone)
{
    $char = $oProcess.StandardOutput.Read()

    if ($char -eq -1)
    {
        if ($oProcess.HasExited)
        {
            $bDone = $True
        }
        else
        {
            Wait-Event 1
        }
    }
    else
    {
        Write-Host -NoNewline "".PadLeft(1, $char)
    }
}