
グループの情報を出力するには?
配布リストとメールが有効なセキュリティグループの情報を出力する場合は、Get-DistributionGroupのコマンドレット、Microsoft365 グループの情報を出力するには、Get-UnifiedGroup のコマンドレットを実行する必要があるため、別々に実行しないといけません。
今回は、スクリプトを利用して 2 つのコマンドレットをまとめて実行し、両方の情報を出力する方法をご紹介したいと思います。
以下の記事を参考にExchangeOnlineに接続してから実行してください。
配布リスト、メールが有効なセキュリティグループ、Microsoft365グループの情報を取得するスクリプト
$distGroups = Get-DistributionGroup | Select-Object DisplayName, PrimarySmtpAddress, @{Name='GroupType'; Expression={'Distribution'}}, @{Name='GroupTypeLabel'; Expression={'配布リスト'}}
$secGroups = Get-DistributionGroup -RecipientTypeDetails MailUniversalSecurityGroup | Select-Object DisplayName, PrimarySmtpAddress, @{Name='GroupType'; Expression={'Distribution'}}, @{Name='GroupTypeLabel'; Expression={'メールが有効なセキュリティグループ'}}
$unifiedGroups = Get-UnifiedGroup | Select-Object DisplayName, PrimarySmtpAddress, @{Name='GroupType'; Expression={'Unified'}}, @{Name='GroupTypeLabel'; Expression={'Microsoft 365 グループ'}}
$allGroups = $distGroups + $secGroups + $unifiedGroups
$allGroups | Sort-Object DisplayName | Export-Csv -Path "C:\Temp\CombinedGroups.csv" -NoTypeInformation -Encoding UTF8
<出力結果>
DisplayName : グループの表示名
PrimarySmtpAddress : グループのアドレス
GroupType : Unified (Microsoft365グループ) か Distribution(グループ)
GroupTypeLabel : グループの種類
更にメンバー情報を含めて取得するスクリプト
上記のスクリプトから更にグループのメンバーの情報を取得する場合は以下のスクリプトを実行してください。
# 配布リスト(MailUniversalDistributionGroup)の取得
$distributionGroups = Get-DistributionGroup -RecipientTypeDetails MailUniversalDistributionGroup
# メールが有効なセキュリティグループ(MailUniversalSecurityGroup)の取得
$securityGroups = Get-DistributionGroup -RecipientTypeDetails MailUniversalSecurityGroup
# Microsoft 365 グループの取得
$unifiedGroups = Get-UnifiedGroup
# グループ情報を格納する配列
$groupInfoList = @()
# 配布リストの処理
foreach ($group in $distributionGroups) {
try {
$members = Get-DistributionGroupMember -Identity $group.Identity -ResultSize Unlimited | Select-Object -ExpandProperty PrimarySmtpAddress
$memberList = $members -join ";"
} catch {
$memberList = ""
}
$groupInfoList += [PSCustomObject]@{
DisplayName = $group.DisplayName
PrimarySmtpAddress = $group.PrimarySmtpAddress
GroupTypeLabel = "配布リスト"
Members = $memberList
}
}
# メールが有効なセキュリティグループの処理
foreach ($group in $securityGroups) {
try {
$members = Get-DistributionGroupMember -Identity $group.Identity -ResultSize Unlimited | Select-Object -ExpandProperty PrimarySmtpAddress
$memberList = $members -join ";"
} catch {
$memberList = ""
}
$groupInfoList += [PSCustomObject]@{
DisplayName = $group.DisplayName
PrimarySmtpAddress = $group.PrimarySmtpAddress
GroupTypeLabel = "メールが有効なセキュリティグループ"
Members = $memberList
}
}
# Microsoft 365 グループの処理
foreach ($group in $unifiedGroups) {
try {
$members = Get-UnifiedGroupLinks -Identity $group.Identity -LinkType Members -ResultSize Unlimited | Select-Object -ExpandProperty PrimarySmtpAddress
$memberList = $members -join ";"
} catch {
$memberList = ""
}
$groupInfoList += [PSCustomObject]@{
DisplayName = $group.DisplayName
PrimarySmtpAddress = $group.PrimarySmtpAddress
GroupTypeLabel = "Microsoft 365 グループ"
Members = $memberList
}
}
# CSV ファイルに出力
$groupInfoList | Export-Csv -Path "C:\Temp\Combinedmember.csv" -NoTypeInformation -Encoding UTF8
<出力結果>
DisplayName : グループの表示名
PrimarySmtpAddress : グループのアドレス
GroupType : グループの種類
Members : グループのメンバー