2017-02-01 2 views
3

Привет Я пытаюсь подсчитать количество стрелок, в которых сопоставляются два значения.«Подсчет» в массивах с использованием powershell

Вот как я ставлю значение в моем массиве:

  $obj | add-member -name "Site" -membertype Noteproperty -value $sitecode 
      $obj | add-member -name "Location" -membertype Noteproperty -value $location 
      $obj | add-member -name "SwitchName" -membertype Noteproperty -value $swname 
      $obj | add-member -name "MacAddress" -membertype Noteproperty -value $mac 
      $obj | add-member -name "Interface" -membertype Noteproperty -value $eth 
      $obj | add-member -name "Macvendor" -membertype Noteproperty -value "" 
      $obj | add-member -name "IP" -membertype Noteproperty -value "" 
      $tab += $obj 

Теперь я хотел бы рассчитывать каждый combibation из SwitchName/интерфейса.

Exemple моих массивов может содержит следующие amongt другого значения:

Switchname=foo,portX 
Switchname=foo,portY 
Switchname=foo,portX 
Switchname=foo,portZ 
Switchname=bar,portX 
Switchname=bar,portZ 
Switchname=bar,portT 

Я хочу, чтобы иметь возможность получить:

Switchname=foo,portX,2 
Switchname=foo,portY,1 
Switchname=foo,portZ,1 
Switchname=bar,portX,1 
Switchname=bar,portZ,1 
Switchname=bar,portT,1 

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

Спасибо.

+1

'$ вкладку | group SwitchName, интерфейс | % {@ ($ _. Values; $ _. Count) -join ','} ' – PetSerAl

+0

Это работает, я знал, что это может быть что-то« простое ». Благодарю. –

ответ

0

попробовать что-то вроде этого:

$tab | select SwitchName, Interface , @{N="Number";E={$switchname=$_.SwitchName;$interface=$_.Interface; ($tab | where {$_.SwitchName -eq $switchname -and $_.Interface -eq $interface }).Count}} 
+0

Это тоже работает, выход немного «messier», чем другой ответ, но он работает! Благодарю. –

1

Используйте Group-Object команду:

PS C:\> $tab |Group-Object -Property SwitchName,Interface -NoElement 

Count Name      
----- ----      
    2 foo, portX    
    1 foo, portY    
    1 foo, portZ    
    1 bar, portX    
    1 bar, portZ    
    1 bar, portT    
+0

Это тоже работает, я знал, что это может быть что-то «простое». Благодарю. –

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