在一行上返回相同变量的多个结果

时间:2016-06-07 14:16:50

标签: powershell

我正在尝试使用PowerShell浏览共享邮箱并获取具有特定访问权限的用户。我能够这样做,但问题是当邮箱有多个具有访问权限的用户时。

我将只为一个邮箱而不是每一个邮箱使用代码。我正在使用的代码如下:

Get-MailboxPermission -Identity example@domain.com | select Identity, User |
    where user -like '*@*'

我得到了这个结果:

Output

但我想得到这样的东西:

Desired_Output

有没有办法让具有相同身份的用户在同一条线上?

1 个答案:

答案 0 :(得分:0)

您可以使用Group-Object按邮箱分组用户,然后使用calculated properties展开群组:

... | Group-Object Identity |
    Select-Object @{n='Identity';e={$_.Name}},
                  @{n='User';e={$_.Group.User -join ', '}}

Group-Object按照Identity属性对结果对象进行分组,即具有相同标识值的所有对象都收集在一个GroupInfo对象中(在其Group属性中)精确)。然后,带有计算属性的Select-Object语句会为每个组创建一个新的自定义对象。 User计算属性会扩展分组对象的User属性,并将名称连接到以逗号分隔的列表。

请注意,$_.Group.User -join ', '需要PowerShell v3或更高版本才能运行。在早期版本中,您需要将其替换为类似

的内容
($_.Group | Select-Object -Expand User) -join ', '