Format-Table в PowerShell внутри ForEach - PullRequest
0 голосов
/ 15 февраля 2020

Не уверен, что я делаю здесь что-то не так, я знаю, что это связано с тем, что это внутри ForEach l oop. Я попытался переместить код ниже. Даже с кодом пополам (наполовину из l oop, похоже, не работает). Все еще новичок в PowerShell, и я знаю, что мне нужно переменные для таблицы $ каждую итерацию или сохранять их где-то и читать их позже.

foreach ($gp in $GPINFO) {

    # Code that gets the values for $gp, $aclBefore and $aclAfter is here

    $table = new-object psobject -Property @{
        GPO_Name = $gp.DisplayName
        Old_Owner = $aclBefore
        New_Owner = $aclAfter
    }
    $table | Format-Table GPO_Name,Old_Owner,New_Owner
} 

Если вы можете помочь мне выяснить, что я делаю неправильно, это будет отлично, я знаю, что каждый раз, когда ForEach получает $ gp из $ GPINFO, он запускает $ table, и это моя проблема. Поэтому вместо одной непрерывной таблицы я получаю несколько таблиц с одним набором данных в каждой.

Заранее спасибо

Ответы [ 2 ]

1 голос
/ 15 февраля 2020

Просто выведите таблицу после завершения l oop.

$table = foreach ($gp in $GPINFO) {
    # Code that gets the values for $aclBefore and $aclAfter is here

    new-object psobject -Property @{
        GPO_Name = $gp.DisplayName
        Old_Owner = $aclBefore
        New_Owner = $aclAfter
    }
}
$table | Format-Table

Любой вывод из foreach l oop будет сохранен в $table. Каждая итерация будет выводить объект, в конечном итоге создавая массив этих объектов, хранящихся в $table.

0 голосов
/ 15 февраля 2020

Вы просто не можете пайпить из foreach (). Это странная часть языка, которая часто встречается. Другие способы:

Foreach-объект:

$GPINFO | foreach-object {
    $gp = $_
    new-object psobject -Property @{
        GPO_Name = $gp.DisplayName
        Old_Owner = $aclBefore
        New_Owner = $aclAfter
    }
} | Format-Table GPO_Name,Old_Owner,New_Owner

Оператор вызова и блок сценариев:

& { 
  foreach ($gp in $GPINFO) {
      new-object psobject -Property @{
          GPO_Name = $gp.DisplayName
          Old_Owner = $aclBefore
          New_Owner = $aclAfter
      }
  } 
} | Format-Table GPO_Name,Old_Owner,New_Owner
...