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

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

enter image description here

вывод для (2) аналогичен этому

enter image description here

Но в обоих случаях я получаю « Имя пользователя для входа » в формате ( домен \ идентификатор пользователя ), где идентификатор пользователя - это число в моей организации.

Но мне нужно получить отображаемое имя / полное имя вместо « Имя пользователя для входа » при экспорте в CSV ..

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

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

4
задан 20 March 2017 в 11:00
3 ответа

$ 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
}
1
ответ дан 3 December 2019 в 04:35

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

$gadu=get-aduser username -properties *

$gadu.Displayname

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

-2
ответ дан 3 December 2019 в 04:35

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

(1) Первый - это экспорт "Full Access" общего почтового ящика с именем "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) Второй - это экспорт "Send As" общего почтового ящика с именем "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
0
ответ дан 3 December 2019 в 04:35

Теги

Похожие вопросы