TL;DR: 理想的にはこのように見える、条件に基づいたヘッダーを持つ配列を構築しようとしています。
名前 値 ステータス 要素 1 値 1 -- 要素 2 値 2 必要なアクション 要素 3 値 3 --
私はそれをさまざまな方法で試してきましたが、ここに私の最近の2つの試みがあります:
これにより、すべての行の最後の行が出力されます (ステートメント$array += $list
内にあるため)。if..else
ただし、外側にあるif..else
場合は null 値になります。に を追加し$list
ても$array
うまくいかないようです (何か間違ったことをしています)。
$array = @()
$list = "" | Select Name,Value,Status
foreach ($row in $worksheet) {
$row.Psobject.Properties | ? {
if ($RuleArray -contains $_.Name) {
$list.Name = $_.Name;
$list.Value = $_.Value;
$list.Status = "Action Required"
$array += $list
} else {
$list.Name = $_.Name;
$list.Value = $_.Value;
$list.Status = "--"
$array += $list
}
}
}
Write-Host $array
次の試行では文字列を使用して値を格納しますが、文字列にヘッダーを配置できず、結果として書式設定が存在しません。利点は、少なくとも期待する値が表示されるため、条件が機能することがわかります。
$array = @()
$list = New-Object System.Collections.Generic.List[System.String]
foreach ($row in $worksheet) {
$d = $row.Psobject.Properties | % {
if ($RuleArray -contains $_.Name) {
$_.Name; $_.Value; "Action Required`n"
} else {
$_.Name; $_.Value; "--`n"
}
}
$list.Add($d)
}
$array = "" | Select Name,Value,Status #hail mary
$array += $list.ToArray()
Write-Host $array
私が間違っている場所について何か考えはありますか?