2017-02-01 65 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。

爲例我的陣列可以包含以下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

'$標籤|組SwitchName,Interface | %{@($ _。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

這也是工作,輸出比其他響應有點「混亂」,但它的工作原理!謝謝。 –

1

使用Group-Object的cmdlet:

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

這也工作,我知道它可能是「簡單」的東西。謝謝。 –