Exchange のグループのメンバーと所有者のリストを取得する方法

当ページのリンクには広告が含まれています。

Microsoft 365 で Exchange(Outlook)を利用している環境で、Microsoft365グループ や 配布リスト の一覧を取得したい時があります。

管理画面上の機能ではグループのリストはエクスポートできますが、その中の所有者やメンバーを取得できません。

表面的な一覧しか出せないエクスポート機能のキャプチャ
表面的な一覧しか出せないエクスポート機能(笑)

この記事では、Microsoft365グループ配布リストの一覧をcsvで作成できるように案内します。

ふぅたこ

案内しますと言ってますが、自分もわからずに調べた記録です(笑)

ふぅたこ

ふぅたこです。X(Twitter)もやってます。お問い合わせはこちらです

目次

検証環境

  • Microsoft 365 Business Premium
  • Exchange Onlineへの接続に多要素認証(MFA)が必要である環境
  • 作業端末:Windows 11 Pro

結果として得られる資料

  1. グループ名
  2. メンバータイプ
  3. ユーザー名
  4. ユーザーEメール
Microsoft365グループ や 配布リスト の管理者・ユーザー一覧を取得したキャプチャ

事前準備

1. Exchange Online Managementモジュールの最新バージョンをインストール

  1. 管理者権限でPowerShellを起動します。
  1. PowerShellに下記コマンドをコピー・ペーストします。
Install-Module -Name ExchangeOnlineManagement
考えられる警告

警告: バージョン ‘3.4.0’ のモジュール ‘ExchangeOnlineManagement’ は既に ‘C:\Program
Files\WindowsPowerShell\Modules\ExchangeOnlineManagement\3.4.0′ にインストールされています。バージョン ‘3.5.1’
をインストールするには、Install-Module を実行して、-Force パラメーターを追加してください。このコマンドは、バージョン
‘3.5.1’ を ‘3.4.0’ と並行してインストールします。

対処法
Install-Module -Name ExchangeOnlineManagement -Force

-Force パラメーターを使用して、最新バージョンをインストールします。

  1. PowerShellに下記コマンドをコピー・ペーストします。

Exchange Onlineに接続する

  1. PowerShellに下記コマンドをコピー・ペーストします。
Connect-ExchangeOnline -UserPrincipalName your-email@example.com

your-email@example.com は 管理者権限があるアカウントを入力してください。

  1. コマンドを実行すると、ブラウザが開き、MFAを使用して認証するように求められます。
  2. 接続されると下記のような表示になります。

Microsoft 365グループの管理者とメンバーを取得

  1. Exchange Onlineに接続する手順で接続及び認証の完了が必要です。
  2. 以下のスクリプトを実行してグループのオーナーとメンバーを取得し、CSVファイルにエクスポートします。
$groups = Get-UnifiedGroup
$result = @()

foreach ($group in $groups) {
    $owners = Get-UnifiedGroupLinks -Identity $group.Identity -LinkType Owners
    $members = Get-UnifiedGroupLinks -Identity $group.Identity -LinkType Members

    foreach ($owner in $owners) {
        $result += [PSCustomObject]@{
            GroupName = $group.DisplayName
            GroupType = "Owner"
            UserName  = $owner.Name
            UserEmail = $owner.PrimarySmtpAddress
        }
    }

    foreach ($member in $members) {
        $result += [PSCustomObject]@{
            GroupName = $group.DisplayName
            GroupType = "Member"
            UserName  = $member.Name
            UserEmail = $member.PrimarySmtpAddress
        }
    }
}

$result | Export-Csv -Path "C:\GroupOwnersAndMembers.csv" -NoTypeInformation -Encoding UTF8
  1. C:\GroupOwnersAndMembers.csv にCSVが作成されます。
    ※日本語のグループ名だと文字化けするためUTF8へのエンコードも指定しています。

配布グループの管理者とメンバーを取得

  1. Exchange Onlineに接続する手順で接続及び認証の完了が必要です。
  2. 以下のスクリプトを実行してグループのオーナーとメンバーを取得し、CSVファイルにエクスポートします。
$distributionLists = Get-DistributionGroup
$result = @()

foreach ($list in $distributionLists) {
    $owners = Get-DistributionGroup -Identity $list.Identity | Select-Object -ExpandProperty ManagedBy
    $members = Get-DistributionGroupMember -Identity $list.Identity

    foreach ($owner in $owners) {
        $ownerDetails = Get-Recipient -Identity $owner
        $result += [PSCustomObject]@{
            GroupName = $list.DisplayName
            GroupType = "Owner"
            UserName  = $ownerDetails.Name
            UserEmail = $ownerDetails.PrimarySmtpAddress
        }
    }

    foreach ($member in $members) {
        $result += [PSCustomObject]@{
            GroupName = $list.DisplayName
            GroupType = "Member"
            UserName  = $member.Name
            UserEmail = $member.PrimarySmtpAddress
        }
    }
}

$result | Export-Csv -Path "C:\DistributionListOwnersAndMembers.csv" -NoTypeInformation -Encoding UTF8
  1. C:\DistributionListOwnersAndMembers.csv にCSVが作成されます。
    ※日本語のグループ名だと文字化けするためUTF8へのエンコードも指定しています。
よかったらシェアしてね!
  • URLをコピーしました!
  • URLをコピーしました!

コメント

コメントする

目次