如何从 table 变量中获取数据,其中某个字段在 powershell 中最常用?

How to get data from table variable where a field is most used in powershell?

我有 $mydata 个变量,其中包含来自 AD 的内容,使用命令:$mydata = Get-ADUser -Filter {(enabled -eq $true)} -Properties * | select name,OfficeName,Company

看起来像:

Name    OfficeName     Company
A       North          ABC
B       North          ABC
C       North          ABC
D       South          KLM
E       South          KLM
F       South          KLM
G       South          BCD
H       South          BCD
I       South          MNO
J       East           FGV
K       East           XYZ
L       East           XYZ

我想获得显示 OfficeName 和最常用公司的输出,因此预期输出为:

OfficeName     Company
 North          ABC
 South          KLM
 East           XYZ

总有一个公司占多数,所以相等计数不是个案。

我怎样才能做到这一点?我认为它应该类似于下面的内容,但找不到正确的语法。任何帮助将不胜感激。

$mydata | Group-Object -Property OfficeName| Select-Object OfficeName,@{n='Company'; e = { $_.Group | Group-Object -Property Company | Sort-Object -Property Count -Descending | Select-Object -First 1 -ExpandProperty OfficeName} }

这个对我有用:

$mydata | 
    Group-Object OfficeName | 
    Select-Object @{ n = 'OfficeName'; e = { $_.Name } }, 
                  @{ n = 'Company'; e = { $_.Group | 
                      Group-Object Company | 
                      Sort-Object Count -Descending | 
                      Select-Object -First 1 -ExpandProperty Name } }

输出:

OfficeName Company
---------- -------
East       XYZ    
North      ABC    
South      KLM  

诀窍是使用 Name 而不是实际的 属性 名称。 Group-Object 输出中的 Name 属性 存储组所基于的值。