Reputation: 51
Hi I'm trying to count number of arrow where two value are matched.
Here is how i put value in my array :
$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
Now i would like to count each combibation of SwitchName / Interface.
Exemple my arrays can contains the following amongt other value :
Switchname=foo,portX
Switchname=foo,portY
Switchname=foo,portX
Switchname=foo,portZ
Switchname=bar,portX
Switchname=bar,portZ
Switchname=bar,portT
I want to be able to get :
Switchname=foo,portX,2
Switchname=foo,portY,1
Switchname=foo,portZ,1
Switchname=bar,portX,1
Switchname=bar,portZ,1
Switchname=bar,portT,1
I'm currently thinking about using another table to count all of this. Any easier way to do that?
Thanks.
Upvotes: 3
Views: 114
Reputation: 174545
Use the 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
Upvotes: 1
Reputation: 17472
try Something like this:
$tab | select SwitchName, Interface , @{N="Number";E={$switchname=$_.SwitchName;$interface=$_.Interface; ($tab | where {$_.SwitchName -eq $switchname -and $_.Interface -eq $interface }).Count}}
Upvotes: 0