我正试图通过选择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