社畜の所業

社畜の所業

Microsoft365の機能について解説をしていきたいと思います。このブログの情報をご活用いただければ幸いです。たまに他の情報も取り入れていきたいと思います。

※このサイトはPR記事を含みます。

【Microsoft365参考書】配布リスト、メールが有効なセキュリティグループ、Microsoft365グループをまとめて出力するスクリプト

配布リスト、メールが有効なセキュリティグループ、Microsoft365グループをまとめて出力するスクリプト

 

 

グループの情報を出力するには?

配布リストとメールが有効なセキュリティグループの情報を出力する場合は、Get-DistributionGroupのコマンドレット、Microsoft365 グループの情報を出力するには、Get-UnifiedGroup のコマンドレットを実行する必要があるため、別々に実行しないといけません。

今回は、スクリプトを利用して 2 つのコマンドレットをまとめて実行し、両方の情報を出力する方法をご紹介したいと思います。

 

以下の記事を参考にExchangeOnlineに接続してから実行してください。

 

it-bibouroku.hateblo.jp

 

 

 

配布リスト、メールが有効なセキュリティグループ、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 : グループのメンバー

 

 

it-bibouroku.hateblo.jp