Como obter o "Nome de exibição" do usuário AD em vez do nome de logon (domínio \ userid) enquanto exporta as permissões "enviar como" e "completo"?

4

Eu pesquisei e criei dois scripts. (1), (2)

(1) O primeiro é exportar "Acesso Total" de uma caixa de email compartilhada chamada "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) O segundo é exportar "Enviar como" de uma caixa de e-mail compartilhada chamada "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

Ambos os scripts estão funcionando bem.

A saída para (1) é semelhante a esta

asaídapara(2)ésemelhanteaesta

Mas,emambasasocasiões,recebo" User logon name " no formato ( domain\userid ), em que userid é um número na minha organização.

Mas preciso de display name/full name em vez de " User logon name " ao exportar para o csv.

Não sou um administrador de intercâmbio nem um especialista em intercâmbio / powershell, mas estou verificando / dando suporte à infraestrutura geral de TI e, quando um gerente solicita uma lista de nomes, para "enviar como" ou "acesso total" para uma determinada caixa de correio, tenho que exportá-la usando os scripts acima e reconverter "user logon name" para display name manualmente.

Alguém pode aconselhar como alterar os dois scripts para exibir "full name/display name" em vez de login name ? Eu tentei googlin, mas sem sorte ..

    
por user879 14.12.2016 / 07:20

3 respostas

1

$ users.user.rawidentity eliminará a conversão de tipos e mais algumas linhas ...

lista "Acesso total"

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

lista "Enviar como"

$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
}
    
por 17.09.2017 / 05:53
0

Por fim, recebi ajuda com meu amigo de programação (que não sabe nada sobre objetos do AD) e acabei com a solução abaixo. Essa pode não ser a solução ideal, mas Ambas estão trabalhando para salvar o propósito !! Deseja compartilhar a solução, para que alguém possa se beneficiar e sugerir uma solução melhor.

(1) O primeiro é exportar "Acesso Total" de uma caixa de e-mail compartilhada chamada "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) O segundo é exportar "Enviar como" de uma caixa de e-mail compartilhada chamada "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"
    }
    }

ambos os scripts foram salvos como script1.ps1 e script2.ps1 e a saída foi salva no arquivo c: \ araa.csv

Como exportar para o csv

 script2.ps1 | out-file c:\araa.csv
    
por 20.03.2017 / 09:58
-2

Powershell mais uma maneira,

$gadu=get-aduser username -properties *

$gadu.Displayname

Salve a saída em um var e, em seguida, adicione o nome do campo que queremos ver no final do var, pense na tabela $ gadu var as, não tão sofisticada quanto a formatação acima, mas ainda está acessível. O get-aduser pode ser engraçado sobre quais campos ele gera, então eu uso -properties * 99% do tempo.

    
por 16.12.2016 / 00:15