2013-07-11 1 views
0

CommandRuntime을 사용하여 터미널에 정보를 쓰는 PowerShell cmdlet을 만들고 CommandRuntime.WriteProgress(progressRecord)을 사용하여 this과 같은 오버레이에서 진행률 정보를 작성합니다. 나는 그런PowerShell cmdlet CommandRuntime WriteProgress 줄 반환 및 탭

ProgressRecord progressRecord = new ProgressRecord(activityId, activity, statusDescription); 

로 ProgressRecord 및

progressRecord.CurrentOperation = string.Format("Name\tDate\tTime\n{0}\t{1}\t{2}", name, date, time); 

이 마지막 줄에 나에게 문제의 원인이 무엇인가에 현재 작업을 만듭니다. 필자의 목표는 이름순으로 날짜 및 시간을 탭으로 구분하여 표를 작성하고 해당 변수를 줄 바꿈 후에 표시하는 것입니다. 그러나이 cmdlet을 PowerShell에서 실행할 때 탭 및 줄 바꿈 이스케이프가 올바르게 표시되지 않으면 기호와 같은 홀수 번째 원만 표시됩니다. PowerShell 스크립트에서 이스케이프로 설명 된 것을 보았으므로`t와`n을 사용해 보았지만 일반 텍스트로만 나타납니다.

TL; DR 누군가 cmdlet 내에 탭과 개행을 삽입하는 방법을 알고 있습니까?

답변

0

역 따옴표는 큰 따옴표로 묶은 문자열 이스케이프 문자입니다.

write-host "Hi`tKevin`n" 

작은 따옴표 내에서 작동하지 않습니다. 쓰기 진행 상황에서`n '과`t'를 쓰려고했는데 탭의 재미있는 얼굴을 보았 기 때문에 정확하게 해석되었다고 말할 수 있습니다.

이렇게하면 탭과 개행 문자가 원하는대로 동작하지 않습니다. 쓰기 진행 중에.

충분히 긴 경우 -status 및 -currentoperation 문자열이 줄 바꿈하는지 확인했습니다. 테이블의 모양을 얻기 위해 포장을 사용할 수 있습니다. 그러나 그것은 스크립트가 Powershell을 호스팅하는 환경에 의존하고 있음을 의미합니다.

$host.ui.RawUI.BufferSize.Width=80 
$host.UI.RawUI.WindowSize.Width=80 

을하지만 영향을주지 않습니다

명령 줄 버전 PS에서

, 당신은 다음을 설정할 수 있습니다. mode.exe를 실행할 수 있습니다 :

mode con: cols=80 

psISE에서도 작동하지 않습니다.

$host.ui.rawui|gm # in powershell.exe 

화면 버퍼에 직접 액세스하는 방법이 있음을 보여줍니다. 이러한 방법을 사용하여 진행 상황을 보여주기 위해 스크립트를 함께 작성할 수 있습니다. 이것은 또한 powershell 호스트 특정 솔루션이 될 것입니다.

+0

감사합니다. –

관련 문제