如何在Powershell中输出共享邮箱成员的Name或DisplayName



我正试图通过选择displayName来输出共享邮箱的成员列表。我有下面的脚本,它将输出用户userPrincipalName(UPN(,问题是我们的用户使用ID号登录,例如,当我运行脚本时,我会得到输出:666777@mycompany.com我想输出用户的实际名称,这样我就不必去Active Directory并键入666777来查找用户的名称。我使用的脚本是:

Get-Mailbox -Identity "NorthOffice@mycompany.com" -ResultSize:Unlimited | Get-MailboxPermission | Select-Object User 

上面的脚本输出例如:

User
----
666777@mycompany.com

我尝试过使用:| Select-Object displayName,但这些属性显示为空/空白

有人知道这方面的办法吗?

编辑

我已经找到了一种方法,但它很冗长:

我将脚本的结果导出到csv 中

Get-Mailbox -Identity "NorthOffice@mycompany.com" -ResultSize:Unlimited | Get-MailboxPermission | Select-Object User | Export-csv c:myfolderNorthOffice.csv

然后,我将csv的标题更改为userPrincipalName并保存。然后我导入csv并运行如下所示的"ForEach":

Import-Csv C:myfolderNorthOffice.csv | ForEach { 
Get-ADUser -Filter "userPrincipalName -eq '$($_.userPrincipalName )'" -Properties Name, SamAccountName | Select Name,SamAccountName
} | Export-CSV -path C:myfolderNorthOfficeOutput.csv -NoTypeInformation

有人知道实现这一目标的更快方法吗?

试试这个:

Get-MailboxPermission -Identity "NorthOffice@mycompany.com" | select -ExpandProperty User | findstr /v /c:"NT AUTHORITYSELF" | foreach {Get-ADUser -Identity ($_ -split "@")[0] -Properties * | select displayName} | sort

Get-ADUser不会接受UserPrincipalName作为标识(但它会接受SamAccountName(,因此我们将SMTP地址拆分为"@"只得到第一部分(当然,这假设UPN和SMTP地址相同,SMTP地址的第一部分与SamAccountName相同。(

如果这对您不起作用,并且您不需要返回到AD,您可以直接使用Get-Mailbox从Exchange:解析DisplayName

Get-MailboxPermission -Identity "NorthOffice@mycompany.com" | select -ExpandProperty User | findstr /v /c:"NT AUTHORITYSELF" | foreach {Get-Mailbox -Identity $_ | select displayName} | sort

最新更新