2016-10-29 2 views
0

로 Object를 포맷하기 :내가 같은 개체를 출력하기 위해 노력하고있어 깔끔하게 찾고 목록

Preferred output

Format-List를 통해 개체를 포함하는 변수를 배관하는 것은 문제를 야기 빈 줄을 생성합니다. 사용하는 경우 빈 줄을 제거 할 수 없습니다. $obj = $obj | ? {$_}

개체가 들어있는 변수에 올바른 개체 수가 포함될 것으로 예상됩니다.

처음에는 $Host을 실행하고 (내가 찾고있는 형식을 가지고 있습니다) 변수 $obj을 실행하면 재미있는 결과를 얻을 수 있습니다.

도움을 주시면 감사하겠습니다. 여기에 제안 줄 바꿈을 제거 할 때 나는 심지어 얻을 출력 :

$String = @" 


    FileName: O:\iiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiii 
iiiiiiiiiiiiiii.txt 

:`$DATA          9 
SummaryInformation      128 
{4c8cc155-6c1e-11d1-8e41-00c04fb9386d}  0 




    FileName: O:\ssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssss 
sssssssssssssss.txt 

:`$DATA          9 
SummaryInformation      128 
{4c8cc155-6c1e-11d1-8e41-00c04fb9386d}  0 




    FileName: 
O:\aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa.txt 

:`$DATA  0 
Lzip  7 



"@ 

[regex]$pattern1 = '(?s)\s+FileName:\s+(?<FullName>.*?)\s+:\$DATA' 
$Match1 = $String | Select-String -Pattern $pattern1 -AllMatches | 
      % { $_.Matches } 

[regex]$pattern2 = '(?sm)(?:(?<Stream>^:\$DATA.*?)\s+FileName|(?<Stream>^:.*))' 
$Match2 = $String | Select-String -Pattern $pattern2 -AllMatches | 
      % { $_.Matches } 

$obj = 0..($Match1.Count -1) | % {  
    New-Object -TypeName PsObject -Property @{ 
     FullName = $Match1[$_].Groups['FullName'].Value 
     Streams = $Match2[$_].Groups['Stream'].Value 
    } 
} 

$obj 

편집 : 여기

코드의 당신은에서 구문 분석 파일 이름에서 줄 바꿈을 제거하지 마십시오

FullName 
-------- 
O:\iiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiii... 
O:\ssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssss... 
O:\aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa.txt
+0

트림 방법을 사용하여 여분의 공백을 제거하십시오. – user4317867

+0

고마워, 나는 문자열이 아닌 객체를 다루고 있다고 생각한다. 예제를 제공해 줄 수 있습니까? – Mack

+0

원하는 결과물의 예를 보여주십시오. 분명히 질문 시작 부분의 스크린 샷에서 보여준 것이 아닙니다. –

답변

0

문자열. 그게 당신의 목록 출력이 당신이 원하는 방식으로 포장하지 않는 이유 일 것입니다.

변경이이에

$obj = 0..($Match1.Count -1) | % {  
    New-Object -TypeName PsObject -Property @{ 
     FullName = $Match1[$_].Groups['FullName'].Value 
     Streams = $Match2[$_].Groups['Stream'].Value 
    } 
} 

:

$obj = 0..($Match1.Count -1) | % {  
    New-Object -TypeName PsObject -Property @{ 
     FullName = $Match1[$_].Groups['FullName'].Value -replace '[\r\n]+' 
     Streams = $Match2[$_].Groups['Stream'].Value 
    } 
}

하고 문제가 사라집니다.

+0

감사합니다. 위의 내 게시물을 다시 확인하여 업데이트하십시오. – Mack

관련 문제