PowerShell Lista de grupos e membros de distribuição? (Office 365)

3

Estou procurando uma maneira de exportar uma lista de grupos de distribuição junto com os membros de cada grupo por meio do PowerShell no Office 365.

Encontrei scripts que exportam uma lista de usuários e os grupos aos quais pertencem também, mas não o contrário?

Cheguei perto disso:

$saveto = "C:\listmembers.txt"

Get-DistributionGroup | sort name | ForEach-Object {

    "'r'n$($_.Name)'r'n=============" | Add-Content $saveto
    Get-DistributionGroupMember $_ | sort Name | ForEach-Object {
        If($_.RecipientType -eq "UserMailbox")
            {
                $_.Name + " (" + $_.PrimarySMTPAddress + ")" | Add-Content $saveto
            }
    }
}

Mas produz um arquivo de texto com uma lista de todos os grupos de Distribuição e é bem dividido pelo "====", mas nenhum membro é exibido. Eu recebo o erro abaixo em cada grupo que encontrar:

Cannot process argument transformation on parameter 'Identity'. Cannot convert value "GROUP NAME" to type "Microsoft.Exchange.Configuration.Tasks.DistributionGroupMemberIdParameter". Error:
 "Cannot convert hashtable to an object of the following type: Microsoft.Exchange.Configuration.Tasks.DistributionGroupMemberIdParameter. Hashtable-to-Object conversion is not supported in rest
ricted language mode or a Data section."
    + CategoryInfo          : InvalidData: (:) [Get-DistributionGroupMember], ParameterBindin...mationException
    + FullyQualifiedErrorId : ParameterArgumentTransformationError,Get-DistributionGroupMember
    
por Samuel Nicholson 13.02.2014 / 15:51

3 respostas

2

Eu tentei a resposta do Vaibhav, mas não funcionou de imediato. Eu resolvi meu problema com o seguinte código.

$saveto = "listmembers.txt"
Get-DistributionGroup $_.Alias | sort Name | Foreach-Object {
"'r'n$($_.DisplayName)'r'n=============" | Add-Content $saveto
    Get-DistributionGroupMember $_.Alias  | sort Name | Foreach-Object {
        $_.DisplayName| Add-Content $saveto
    }
}

Executando este Output o grupo DisplayName seguido pelo User DisplayName em uma lista abaixo.

    
por 04.04.2014 / 12:41
1

Eu acho que tenho uma solução alternativa, se não uma resposta para você - aqui está uma versão simplificada do seu script (menos a formatação):

Get-DistributionGroup | select -Property alias | Foreach-Object {
    Get-DistributionMember S_.Alias | Foreach-Object {
        $_.Name | Add-Content $saveto
    }
}

Veja o que eu fiz lá? Em vez de passar o objeto do grupo de distribuição diretamente para foreach (que de alguma forma o faz quebrar), eu escolhi criar uma matriz de propriedades e passá-la para o foreach.

Isso funciona, eu tentei. Espero que ajude.

    
por 17.02.2014 / 01:38
0

E juntando as respostas anteriores para obter algo que funcione na minha instância, pode tentar isto:

Get-DistributionGroup | select -Property PrimarySMTPAddress | ForEach-Object {
    "'r'n$($_.PrimarySMTPAddress)'r'n============="
    Get-DistributionGroupMember $_.PrimarySMTPAddress | ForEach-Object $_.PrimarySMTPAddress
}

Estou usando o PrimarySMTPAddress em vez de Alias porque tenho várias listas com o mesmo Alias, mas diferentes nomes de domínio.

    
por 24.10.2018 / 22:00