3

Я ищу способ экспортировать список групп рассылки вместе с членами каждой группы через PowerShell в Office 365.

Я нашел сценарии, которые экспортируют список пользователей и групп, к которым они принадлежат, но не наоборот?

Я подобрался с этим:

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

Но он создает текстовый файл со списком всех групп рассылки и хорошо разделен символом "====", но элементы не отображаются. Я получаю приведенную ниже ошибку в каждой найденной группе:

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

3 ответа3

2

Я попробовал ответ от Вайбхава, но он сразу не сработал. Я решил мою проблему с помощью следующего кода.

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

При выполнении этого вывода группа DisplayName, за которой следует User DisplayName в списке внизу.

1

Я думаю, что у меня есть обходной путь, если не ответ для вас - вот упрощенная версия вашего сценария (минус форматирование):

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

Видишь, что я там сделал? Вместо того, чтобы передавать объект из группы рассылки напрямую в foreach (что каким-то образом нарушает его работу), я решил создать массив свойств и передать его в foreach.

Это работает, я попробовал. Я надеюсь, что это помогает.

0

И, присоединившись к предыдущим ответам, чтобы получить что-то, что работает в моем случае, вы можете попробовать это:

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

Я использую PrimarySMTPAddress вместо Alias, потому что у меня есть несколько списков с одним и тем же псевдонимом, но разными доменными именами.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .