I have a hashtable created from an array like this:
$employeesHashtable = $employees | Group-Object -Property Initials -AsHashTable
How do I find keys having multiple values?
The alternative to using .GetEnumerator() can be using the hash table Keys, the key collection implements ICollection and can be enumerated without issues:
$keysWithMultipleValues = $employeesHashtable.Keys.where{ $employeesHashtable[$_].Count -gt 1 }
I ended up with this:
$keysWithMultipleValues = $employeesHashtable.GetEnumerator() | `
ForEach-Object { [PSCustomObject]@{ Key = $_.Key; Count = $_.Value.Count } } | `
Where-Object { $_.Count -gt 1 }
ForEach-Object invocation completely: $employeesHashtable.GetEnumerator() |Where-Object { $_.Value.Count -gt 1 } (will likely be slightly faster).GetEnumerator() you should reverse the order for efficiency, first filter: $employeesHashtable.GetEnumerator() | Where-Object { $_.Value.Count -gt 1 } then construct your object