2016-11-14 10 views
0

私はPowershellを初めて使用しており、ConvertTo-Htmlを使用できるように出力を互換性を持たせようとしています。 PSCustomObjectといくつかの配列に文字列があります。しかし私は、タイトルプロパティは、私は次のように期待通りに繰り返していません以下の使用denomalizeしようとしています。このPowershellは無視する列を選択します

編集 - 出力私は最後を逃したとして

Title  Comment 
Hello World hello 
Hello World bye 

編集以下行を選択してください(ここでは、配列が拡大するにつれ、各行でタイトルを繰り返すことを期待しています)。

$report = @() 
$col1 = @() 
$col1 += "hello" 
$col1 += "bye" 

$col2 = @() 
$col2 += "blue" 
$col2 += "green" 
$col2 += "red" 

$reportinfo = New-Object PSCustomObject 
$reportinfo | Add-Member NoteProperty -name Title -value [String]"Hello World" 
$reportinfo | Add-Member NoteProperty -name Comment -value $col1 
$reportinfo | Add-Member NoteProperty -name Colour -value $col2 
$report += $reportinfo 

$report | select Title -ExpandProperty Comment 

これは、次のような出力

ハロー

さようなら

を返し、私は

Write-Output $report 

を使用している場合は、私は、次の

タイトルコメント色
を得ます----- - ------ ------
[文字列]こんにちは世界{こんにちは、さよう} {青、緑、赤}

私は文字列のキャストなしで試しました。どんなアイデアでも大歓迎です。

+0

[string]を付けずに試しました。完璧に動作します。次のようにします: '' $ reportinfo | Add-Member NoteProperty -nameタイトル - 値 "Hello World" '' – 4c74356b41

+0

最後のコード行が間違っています - 上記の編集を参照してください –

+0

ok、私はあなたがしたいことを得ていると思いますが、 -of-the-box。 )あなたは実際にアウトプットのフォーマットをしたいのですか? – 4c74356b41

答えて

0

だから、基本的な目標は、最初の列をすべて同じ文字列にしてから、それぞれの追加の列を固有のデータにすることです。これを行うにはいくつかの方法がありますが、最良のものはおそらくすべてを動かすのではなく、その方法でオブジェクトを作成するだけです。現在、オブジェクトを作成するときは、基本的にはpowershellに「タイトル列に「Hello World」と言って欲しいです。コメント列にこの配列@( 'hello'、 'bye')を入れたいと思います。 @( 'blue'、 'green'、 'red') "という配列を含みます。あなたが望むようにオブジェクトを作成するにはいくつかの方法がありますが、より単純なもの(より遅いもの)を添付していますが、唯一の問題は異種配列を使用できないことですいずれかの新しいコメントを追加したり、

$report = @() 
$col1 = @("hello","bye") 
$col2 = @("red","green","blue") 

$i = 0 
foreach($entry in $col1) { 
    $report += [PsCustomObject]@{ 
    Title = "Hello World" 
    Comment = $entry 
    Color = $col2[$i] 
    } 
    $i++ 
} 

だから、基本的にあなたが$col1配列内のすべてのエントリをループして「Hello World」ののTitleプロパティを持つ各いずれかの新しいオブジェクトを作成してやっている色)を削除し、その配列エントリが何であるかを表すプロパティ、$col2配列内の同じ位置にある値を使用して、$ iをインクリメントして追跡している値を使用するColorプロパティForEachではなく通常のFORループで行うprob巧みにより正しいが、構文が少し複雑である。(これは、不等長の配列を処理するために変更することが容易になる)ことができますし、それのいずれかの部分がない場合はコメントを残してください

for($i = 0; $i -le $col1.count;$i++) { 
    $report += [PsCustomObject]@{ 
    Title = "Hello World" 
    Comment = $col1[$i] 
    Color = $col2[$i] 
    } 
} 

希望をあなたの状況に合っているか、うまくいかない。

関連する問題