2010-08-24 3 views
0

제 질문이 다소 비슷하다고 가정합니다. Redirecting the Standard Output/Input/Error into/from a textbox 하지만 파워 쉘 중심입니다.쓰기 호스트를 양식의 텍스트 상자로 리디렉션 하시겠습니까?

저는 웹 사이트 배포 스크립트의 프런트 엔드 역할을하는 PrimalForms를 사용하여 만든 GUI에서 작업하고 있습니다. 지금까지, 스크립트 프로세스의 이벤트를 볼 수있는 콘솔 역할을하는 GUI 텍스트 박스를 업데이트하기 위해 시작 스크립트와 정지 스크립트를 사용 해왔다.

그러나 이제는 시간에 민감한로드 밸런서 용 스크립트를 사용하려고합니다. 출력을 보여줄 수 있으려면 텍스트 상자가 필요합니다.이 텍스트 상자는 실시간으로 또는 가까이에 출력을 표시 할 수 있습니다. 사실 후에 로그 파일/성적 증명서를 캡처하면 간단하게 처리되지 않습니다.

저는 '이해력'과 모든 기사를 읽을 수 있지만 필자의 필요에 따라 실제로 작동 할 방법을 찾지 못했습니다. 나는 쓸 수있는 'set-host'커맨드 릿이 있었으면하고 쓰기 호스트 항목을 모두 보낼 수 있기를 바랬습니다.

아이디어가 있으십니까?

편집 : 필자는 out-string을 사용하여 파이핑을 텍스트 파일로 간주하고 주기적으로 업데이트하는 것으로 생각했지만 실제 kludge처럼 보입니다.

Edit2가 : 흠, 어쩌면 티 - 객체 ... Powershell: How to capture output from the host

EDIT3 : 좋아, 나는 거의가 있어요 :

ping -n 10 127.0.0.1 | out-string -Stream | foreach-object {$richTextBox1.lines = $richTextBox1.lines + $_} 

있지만 스트림이 아닌 걸 것으로 보인다.

답변

1

그래, 나는 실행할 수있는 해결책을 찾았다 고 생각합니다. 위의 마지막 편집 문제는 out-string이 스트리밍되지 않는다는 것이 아니라 각 추가 라인에서 양식을 새로 고치지 않았 음을 의미합니다.

ping -n 10 127.0.0.1 | out-string -Stream | foreach-object { 
    $richTextBox1.lines = $richTextBox1.lines + $_ 
    $richTextBox1.Select($richTextBox1.Text.Length, 0) 
    $richTextBox1.ScrollToCaret() 
    $form1.Update()} 

쓰기 호스트를 포집 솔루션은 약간 다릅니다 : 여기

는 (나뿐만 아니라 텍스트 상자를 스크롤 자동으로 몇 라인을 포함 시켰습니다) 관심이있는 사람들을위한 아이디어의 샘플입니다 ; 기본적으로 다른 powershell 인스턴스에서 로깅 :

Powershell.exe -noprofile -file .\psbackup.ps1 $txtbox_codePath.text $comboBox_environment.selecteditem | Out-String -Stream | ForEach-Object { 
    $txtBox_console.Lines = $txtBox_console.Lines + $_ 
    $txtBox_console.Select($txtBox_console.Text.Length, 0) 
    $txtBox_console.ScrollToCaret() 
    $form1.Update() 
} 
+0

** ** **이 사실은 쓰기 호스트 문을 잡는 문제를 실제로 해결하지 못합니다. 오브젝트 만이 문자열로 파이프 된 다음 임시 변통 콘솔로 전달됩니다. – Yanagi

관련 문제