2016-10-14 3 views
1

GUI 시작 응용 프로그램이있는 콘솔에 메시지를 출력하는 프로그램이 있습니다. 예를 들어 git-bash에서이 메시지는 gui.exe &과 같이 쫓아냅니다. 이렇게하면 배경에 배치되지만 쉘에 다시 쓸 수 있습니다. PowerShell에서 나는 다음과 같은 작업을 수행 할 수STDOUT/Console에 쓰는 동안 백그라운드 작업이 powershell에 있습니다.

& `C:\pathTo\gui.exe` | Out-Default 

이 다시 콘솔에 쓰기하지만 쉘을 차단합니다.

Start-Job {& `C:\pathTo\gui.exe` | Out-Default} 

을하지만,이 경우에 나는 메시지를 추출하는 (아마도 놨어요과) Receive-Job를 호출해야합니다 :

은 또한 다음을 수행 할 수 있습니다.

프로세스를 모두 Out-Default으로 인쇄하고 백그라운드에서 실행하는 방법이 있습니까? 왜 파이프를 강제로 사용해야하는지 잘 모르겠다. Out-Default는 cmd.exe와 bash 모두에서 메시지를 인쇄 할 수 있습니다. PSversion은 5.0.10586.117입니다.

편집 @metix의 제안으로 당
:이 배경에 넣어 않고 다시 콘솔에 인쇄되지 않습니다
Start-Process -NoNewWindow 'C:\pathTo\gui.exe . -RedirectStandardOutput C:\tmp\testout.txt을 추가하면 testout.txt에 기록됩니다. 콘솔에 RedirectStandardOutput하는 방법이 있습니까?

답변

1

이것은 또한 백그라운드에서 프로세스를 실행해야하고 콘솔에 출력합니다

Start-Process -NoNewWindow 'C:\pathTo\gui.exe'

+0

감사합니다! 백그라운드에서 실행되지만 쉘에 인쇄되지 않습니다. – s952163

+1

흠 실제로 ... 나는 C# 응용 프로그램으로 동작을 재현 할 수 있었지만'Start-Process -NoNewWindow ping.exe google.de'와 같은 것이 이상하게 작동했습니다 ... 이상한 –

+0

확인해 주셔서 감사합니다. F #에서 뭔가를 조롱하려고했습니다. 나는 PS가 어떻게 처리하는지, 내부에서 실행되는 응용 프로그램에 대해 다소 모호하다. cmd.exe 안에서 ping.exe가 시작되는 것 같습니다. 그러나 내 응용 프로그램은. NET GUI 응용 프로그램이며 cmd.exe를 표시하지 않습니다. 따라서 -NoNewWindow는 실제로 아무런 효과가 없습니다. 어쩌면 내가 창을 숨기지 않기 위해 재 컴파일을하면 PS는 그 출력을 포착 할 수 있을지도 모르지만, 그것은 약간의 kludge 일 것이다. 'Receive-Job'으로 출력물을 추출 할 수 있으므로 출력물에 대해 확실히 알고 있습니다. – s952163

관련 문제