0

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 

私が間違っている場所について何か考えはありますか?

4

1 に答える 1