ExchangeOnline

ExchangePowershellを使用して配布リストのメンバーを一括取得する

配布リストに所属するメンバーの一覧を一括取得しCSVファイルとして保存する。グループの棚卸しの際などに役立ててほしい。

検証環境について

動作確認した検証環境は以下の通り。

OS:Microsoft Windows 11 Enterprise
OSbuildバージョン:10.0.22621
PowerShellのバージョン:7.4.0

ExchangeOnlineのモジュール名とバージョン
ExchangeOnlineManagement 3.4.0

サインインアカウントの権限はグローバル管理者。

使用するコマンド

Get-DistributionGroup

使用例

Get-DistributionGroup `
    -ResultSize unlimited `
    -RecipientTypeDetails MailUniversalDistributionGroup

取得できる情報例

Name  DisplayName GroupType PrimarySmtpAddress
----  ----------- --------- ------------------
***** ******      Universal *****@*****.onmicrosoft.com
***** ******      Universal *****@*****.onmicrosoft.com

Get-DistributionGroupMember

使用例

Get-DistributionGroupMember -Identity ****@****.onmicrosoft.com -ResultSize unlimited

取得できる情報例

Name   RecipientType
----   -------------
User01 UserMailbox
User02 UserMailbox
User03 UserMailbox

すべての配布リストのメンバーを取得しCSVファイルとして保存する

#コマンド実行日時を取得する
$yyyyMMddFFFFF = Get-Date -Format "yyyyMMdd_FFFFF"

#CSVの保存先 windowsOSの場合、デスクトップに保存する
$csvSavePath = "$env:USERPROFILE\Desktop"

#保存するCSVのファイル名
$csvFileName = "allDistributionGroupMemberList_${yyyyMMddFFFFF}.csv"

#ExchangeOnlineに接続する
Connect-ExchangeOnline

#結果を格納するための配列
$result = @()

#全ての配布リストのアドレスと表示名を取得する
$allDbGroup = Get-DistributionGroup `
    -RecipientTypeDetails MailUniversalDistributionGroup `
    -ResultSize unlimited  | `
    Select-Object DisplayName,PrimarySmtpAddress

foreach($dbGroup in $allDbGroup){
    #特定の配布リストのメンバーを取得する
    $allMember = Get-DistributionGroupMember `
        -Identity $dbGroup.PrimarySmtpAddress `
        -ResultSize unlimited | `
        Select-Object DisplayName,PrimarySmtpAddress

    #上記にて取得したメンバーの数だけ繰り返し
    foreach($menber in $allMember){
        $result +=[PSCustomObject]@{
            #配布リストの表示名
            DistributionGroupDisplayName = $dbGroup.DisplayName
            #配布リストのプライマリSMTPアドレス
            DistributionGroupPrimarySmtpAddress = $dbGroup.PrimarySmtpAddress
            #配布リストに所属するメンバーの表示名
            MenberDisplayName = $menber.DisplayName
            #配布リストに所属するメンバーのプライマリSMTPアドレス
            MenberPrimarySmtpAddress = $menber.PrimarySmtpAddress
        }
    }
}

#取得した結果をCSVとしてエクスポートする
$result | Export-Csv -Encoding UTF8 `
    -NoTypeInformation `
    -Path "${csvSavePath}\${csvFileName}"

#ExchangePowerShellからの接続を切断する
Disconnect-ExchangeOnline -Confirm:$false

問い合わせフォーム

リンク切れのご報告や、記載内容に不備がありましたら、お手数をおかけしますが
以下お問い合わせフォームからご報告をお願い致します。
コマンドの仕様確認やエラー内容の確認、対処方法については、ご契約されているMicrosoftかCSPへお問い合わせください。
※いただきました内容は確認させていただきますが、必ずしも回答をお約束するものではございません。

    GraphPowerShellからTeamsのチームを一括作成する前のページ

    ユーザーメールボックスのメッセージサイズを確認、変更する次のページPCからメールが飛び出す画像

    関連記事

    1. PCからメールが飛び出す画像

      ExchangeOnline

      ユーザーメールボックスのメッセージサイズを確認、変更する

      ユーザーメールボックスのメッセージサイズをPowerShellを使用し…

    2. ExchangeOnline

      ExchangeOnlinePowershellからMicrosoft365グループを一括作成する

      Microsoft365グループをCSVファイルから一括作成…

    3. ExchangeOnline

      CSVから共有メールボックスのアクセス権を一括設定する

      共有メールボックスのアクセス権を一括設定する方法について記載…

    4. ExchangeOnline

      ExchangePowerShellを使用して会議室を一括作成する

      会議室メールボックスをCSVファイルから一括作成する方法につ…

    5. ExchangeOnline

      ExchangeOnlineでメールが検疫された際にユーザーに通知メールが送信されるよう設定する

      本記事作成時点では、デフォルトの設定の場合、管理者にもユーザーにも検…

    最近の記事

    PAGE TOP