2016-10-07 2 views
0

У меня есть большой набор сезонных оценок для многих единиц оборудования. Каждое снаряжение в настоящее время имеет 3 объекта данных, в порядке: Лето> Зима> (Весна & Осень). Я хочу сконденсировать это, поэтому каждая единица оборудования имеет только одну линию рейтингов.Хранение переменных в петле ForEach

$Equipment|%{if($_.C100_SP -match "Winter"){$aW=$_.A100_SU,$bW=$_.B100_SU,$cW=$_.C100_SU}elseif($_.C100_SP -match "Summer"){$aS=$_.A100_SU,$bS=$_.B100_SU,$cS=$_.C100_SU}elseif($_.C100_SP -match "Spring"){$_.A100_SP=$_.A100_F=$_.A100_SU;$_.B100_SP=$_.B100_F=$_.B100_SU;$_.C100_SP=$_.C100_F=$_.C100_SU;$_.A100_SU=$aS;$_.B100_SU=$bS;$_.C100_SU=$cS;$_.A100_W=$aW;$_.B100_W=$bW;$_.C100_W=$cW;$_.A='x'}}|Where-Object{$_.A -eq 'x'} 

Этот код пытается сохранить летние и зимние рейтинги как переменные ($ Оу, $ Bs и т.д.), вставить их в весеннем записи, затем процеживают так только заполненные записи осталось. Тем не менее, переменные зимой и осенью сохраняют передачу $ null на выходе вместе с 9999, общим заполнителем в этом наборе данных.

A100_SP : 4219 
B100_SP : 4219 
C100_SP : 9999 
A100_SU : {9999, $null} 
B100_SU : 
C100_SU : 
A100_F  : 4219 
B100_F  : 4219 
C100_F  : 9999 
A100_W  : {9999, $null} 
B100_W  : 
C100_W  : 

весной и осенью значения работают, что заставляет меня думать, что это проблема хранения переменных между итерациями, но я не могу найти много помощи в Интернете.

Любые идеи о том, как заставить эти переменные оставаться на месте?

ответ

1
  • Неправильное разделение заявления в первом if: ,. Это должно быть ;
  • Ничего не было сдвинуто вниз по трубопроводу: в конце Spring не должно быть $_.
  • Вместо Where просто ничего не выводят на конвейер зимой и летом.

$Equipment | %{ 
    switch -regex ($_.C100_SP) { 
     "Winter" { 
      $aW = $_.A100_SU 
      $bW = $_.B100_SU 
      $cW = $_.C100_SU 
      break 
     } 
     "Summer" { 
      $aS = $_.A100_SU 
      $bS = $_.B100_SU 
      $cS = $_.C100_SU 
      break 
     } 
     "Spring" { 
      $_.A100_SP = $_.A100_F = $_.A100_SU 
      $_.B100_SP = $_.B100_F = $_.B100_SU 
      $_.C100_SP = $_.C100_F = $_.C100_SU 
      $_.A100_SU = $aS 
      $_.B100_SU = $bS 
      $_.C100_SU = $cS 
      $_.A100_W = $aW 
      $_.B100_W = $bW 
      $_.C100_W = $cW 
      $_ 
     } 
    } 
} 

P.S. Не используйте однострочные, если вы не можете писать их с закрытыми глазами :-)

+0

не использовать их, даже если вы можете, это 101% нечитабельно. – 4c74356b41

Смежные вопросы