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
하는 방법이 있습니까?
감사합니다! 백그라운드에서 실행되지만 쉘에 인쇄되지 않습니다. – s952163
흠 실제로 ... 나는 C# 응용 프로그램으로 동작을 재현 할 수 있었지만'Start-Process -NoNewWindow ping.exe google.de'와 같은 것이 이상하게 작동했습니다 ... 이상한 –
확인해 주셔서 감사합니다. F #에서 뭔가를 조롱하려고했습니다. 나는 PS가 어떻게 처리하는지, 내부에서 실행되는 응용 프로그램에 대해 다소 모호하다. cmd.exe 안에서 ping.exe가 시작되는 것 같습니다. 그러나 내 응용 프로그램은. NET GUI 응용 프로그램이며 cmd.exe를 표시하지 않습니다. 따라서 -NoNewWindow는 실제로 아무런 효과가 없습니다. 어쩌면 내가 창을 숨기지 않기 위해 재 컴파일을하면 PS는 그 출력을 포착 할 수 있을지도 모르지만, 그것은 약간의 kludge 일 것이다. 'Receive-Job'으로 출력물을 추출 할 수 있으므로 출력물에 대해 확실히 알고 있습니다. – s952163