2016-10-29 8 views
0

としてオブジェクトを整形:は私のようなオブジェクトを出力しようとしてきちんと見ているリスト

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

関連する問題