Назад | Перейти на главную страницу

Как получить «Отображаемое имя» пользователя AD вместо имени входа (домен \ идентификатор пользователя) при экспорте разрешений «отправить как» и «полные»?

Я погуглил и создал два сценария. (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».

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), где идентификатор пользователя - это номер моей организации.

Но мне нужно получить display name/full name вместо того "User logon name"при экспорте в CSV ..

Я не администратор обмена и не разбираюсь в Exchange / PowerShell, но я проверяю / поддерживаю общую ИТ-инфраструктуру, и когда менеджер запрашивает список имен, для «отправить как» или «полный доступ» для определенного почтовый ящик, мне нужно экспортировать его, используя приведенные выше сценарии, и повторно преобразовать "user logon name" к display name вручную.

Может кто-нибудь посоветовать, как изменить оба скрипта для отображения "full name/display name" вместо того login name ? Я пробовал гуглин, но не повезло ..

$ 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
}

Наконец, я получил помощь от моего друга-программиста (который ничего не знает об объектах AD) и в итоге получил решение, приведенное ниже. Это может быть не идеальное решение, но оба работают, спасает цель !! Хочу поделиться своим решением, чтобы кто-то получил выгоду или мог предложить лучшее решение.

(1) Первый - экспортировать «Полный доступ» общего почтового ящика под названием «ap.cz».

 $users=Get-Mailbox ap.cz | Get-MailboxPermission | where {$_.user.tostring() -ne "NT AUTHORITY\SELF" -and $_.IsInherited -eq $false} | Select User

            $num=$users.length

            for

($i=0; $i -lt $num; $i++)
        {
        Try
        {

            $item=$users[$i]
            $itemcast=[string]$item
            $b = $itemcast.Split("\")[1]
            $c=$b.Split("}")[0]

        Get-ADUser -identity $c -properties DisplayName | select DisplayName
        }


        catch
        {
        $error="error"
        }
        }

(2) Второй - экспорт «Отправить как» из общего почтового ящика под названием «ap.cz».

 $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
    $num=$users.length

    for($i=0; $i -lt $num; $i++)
    {
    Try
    {

        $item=$users[$i]
        $itemcast=[string]$item
        $b = $itemcast.Split("\")[1]
        $c=$b.Split("}")[0]

    Get-ADUser -identity $c -properties DisplayName | select DisplayName
    }


    catch
    {
    $error="error"
    }
    }

оба сценария были сохранены как script1.ps1 и script2.ps1, а вывод был сохранен в исходящий файл c: \ araa.csv

Как экспортировать в CSV

 script2.ps1 | out-file c:\araa.csv

Powershell еще один способ,

$gadu=get-aduser username -properties *

$gadu.Displayname

Сохраните вывод в переменную, затем добавьте имя поля, которое мы хотим просмотреть, в конец переменной, подумайте о $ gadu var как о таблице, не такой модной, как форматирование, как указано выше, но все же удобно. Get-aduser может забавно рассказывать, какие поля он выводит, поэтому я использую -properties * 99% времени.