Tôi đang sử dụng tập lệnh PowerShell để thực thi ứng dụng bảng điều khiển và tôi đang cố chuyển hướng đầu ra tiêu chuẩn và lỗi chuẩn từ đó. Mã Tôi đang sử dụng như sau:PowerShell, stream Quy trình xuất và lỗi khi chạy quá trình bên ngoài
$ProcessInfo = New-Object System.Diagnostics.ProcessStartInfo
$ProcessInfo.FileName = "myExe.exe"
$ProcessInfo.Arguments = "bla bla bla"
$ProcessInfo.RedirectStandardError = $true
$ProcessInfo.RedirectStandardOutput = $true
$ProcessInfo.UseShellExecute = $false
$Process = New-Object System.Diagnostics.Process
$Process.StartInfo = $ProcessInfo
$Process.Start() | Out-Null
$output = $Process.StandardOutput.ReadToEnd()
$errors = $Process.StandardError.ReadToEnd()
$Process.WaitForExit()
$output
$errors
return $Process.ExitCode
Cho đến nay rất tốt, nếu tôi có một lỗi tôi có thể nhìn thấy nó chuyển vào giao diện điều khiển PowerShell của tôi và nếu tôi có đầu ra nó cũng được chuyển hướng. Vấn đề là quá trình này mất 10 phút và trong khi chờ đợi chúng tôi không có đầu mối về những gì đang diễn ra.
Có cách nào trong PowerShell tôi có thể dòng nội dung của Đầu ra và Lỗi trong khi quá trình đang chạy không? Trong .NET thuần túy, chúng ta có thể đăng ký các sự kiện của lớp Process, tôi có thể thực hiện tương tự trong PowerShell không?
Chỉ cần nhận xét nhanh. Đừng nghĩ đến việc gọi 'WaitForExit' trong quá trình, bởi vì sau đó không có đầu ra nào được tạo cho đến khi quá trình kết thúc. –