Microsoft 365 で Exchange(Outlook)を利用している環境で、Microsoft365グループ や 配布リスト の一覧を取得したい時があります。
管理画面上の機能ではグループのリストはエクスポートできますが、その中の所有者やメンバーを取得できません。
この記事では、Microsoft365グループ や 配布リストの一覧をcsvで作成できるように案内します。
ふぅたこ
案内しますと言ってますが、自分もわからずに調べた記録です(笑)
ふぅたこ
ふぅたこです。X(Twitter)もやってます。お問い合わせはこちらです
目次
検証環境
- Microsoft 365 Business Premium
- Exchange Onlineへの接続に多要素認証(MFA)が必要である環境
- 作業端末:Windows 11 Pro
結果として得られる資料
- グループ名
- メンバータイプ
- ユーザー名
- ユーザーEメール
事前準備
1. Exchange Online Managementモジュールの最新バージョンをインストール
- 管理者権限でPowerShellを起動します。
- 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 パラメーターを使用して、最新バージョンをインストールします。
- PowerShellに下記コマンドをコピー・ペーストします。
Exchange Onlineに接続する
- PowerShellに下記コマンドをコピー・ペーストします。
Connect-ExchangeOnline -UserPrincipalName your-email@example.com
your-email@example.com は 管理者権限があるアカウントを入力してください。
- コマンドを実行すると、ブラウザが開き、MFAを使用して認証するように求められます。
- 接続されると下記のような表示になります。
Microsoft 365グループの管理者とメンバーを取得
- Exchange Onlineに接続する手順で接続及び認証の完了が必要です。
- 以下のスクリプトを実行してグループのオーナーとメンバーを取得し、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
- C:\GroupOwnersAndMembers.csv にCSVが作成されます。
※日本語のグループ名だと文字化けするためUTF8へのエンコードも指定しています。
配布グループの管理者とメンバーを取得
- Exchange Onlineに接続する手順で接続及び認証の完了が必要です。
- 以下のスクリプトを実行してグループのオーナーとメンバーを取得し、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
- C:\DistributionListOwnersAndMembers.csv にCSVが作成されます。
※日本語のグループ名だと文字化けするためUTF8へのエンコードも指定しています。
コメント