Active-Directory

如何在導出“發送為”和“完整”權限時獲取 AD 使用者的“顯示名稱”而不是登錄名(域使用者 ID)?

  • September 17, 2017

我用Google搜尋並創建了兩個腳本。(1), (2)

(1)第一個是導出一個名為“ap.cz”的共享郵箱的“完全訪問權限”

Get-Mailbox ap.cz | Get-MailboxPermission | where {$_.user.tostring() -ne "NT AUTHORITY\SELF" -and $_.IsInherited -eq $false} | Select Identity,User,@{Name='Access Rights';Expression={[string]::join(', ', $_.AccessRights)}} | Export-Csv \\myserver\c$\fulla.csv –NoTypeInformation

(2)第二種是導出一個名為“ap.cz”的共享郵箱的“Send As”

Get-Mailbox ap.cz | Get-ADPermission | where { ($_.ExtendedRights -like “*Send-As*”) -and ($_.IsInherited -eq $false) -and -not ($_.User -like “NT AUTHORITY\SELF”) } | Select Identity, User, Deny | Export-CSV \\myserver\c$\sendass.csv

兩個腳本都執行良好。

(1) 的輸出與此類似

在此處輸入圖像描述

(2) 的輸出與此類似

在此處輸入圖像描述

但在這兩種情況下,我都得到User logon name格式 ( domain\userid) 中的 " “,其中 userid 是我組織中的一個數字。

但是在導出到 csv 時我需要得到display name/full name而不是“ ”。User logon name

我不是交易所管理員或精通交易所/powershell,但我正在檢查/支持整體 IT 基礎架構,當經理要求提供姓名列表時,對於某個特定的“發送為”或“完全訪問”郵箱,我必須使用上述腳本將其導出並手動重新轉換"user logon name"display name

有人可以建議如何將兩個腳本更改為顯示"full name/display name"而不是login name?我試過Google,但沒有運氣..

$users.user.rawidentity將消除類型轉換和幾行…

**“完全訪問”**列表

$users=Get-Mailbox ap.cz | Get-MailboxPermission | where {$_.user.tostring() -ne "NT AUTHORITY\SELF" -and $_.IsInherited -eq $false} 
$ss=$users.user.rawidentity | Where-Object {$_ -notlike "s-1*"}

foreach ($item in $ss){ 
$b = $item.Split("\")
$c=$b.Split("}")[1]
Get-ADUser -identity $c -properties DisplayName | select DisplayName
}

**“發送為”**列表

$users=Get-Mailbox ap.cz | Get-ADPermission | where { ($_.ExtendedRights -like “*Send-As*”) -and ($_.IsInherited -eq $false) -and -not ($_.User -like “NT AUTHORITY\SELF”) } | Select User
$ss=$users.user.rawidentity | Where-Object {$_ -notlike "s-1*"}

foreach ($item in $ss){ 
$b = $item.Split("\")
$c=$b.Split("}")[1]
Get-ADUser -identity $c -properties DisplayName | select DisplayName
}

引用自:https://serverfault.com/questions/820598