Entra / Microsoft 365 · Compliance & audit
Report audit recs group creation
Search the unified audit log for Microsoft 365 group creation events and report group details.
Connect & set up
Run these once per session. All scopes are read-only unless the script makes changes.
Connect-ExchangeOnline -ShowBanner:$false
Run it
The main script. Copy it, or download the .ps1 and run it from your console.
param([int] $LookbackDays = 180)[array]$Records = (Search-UnifiedAuditLog -StartDate (Get-Date).AddDays(-$LookbackDays) -EndDate (Get-Date).AddDays(+1) -Operations "Add Group" -ResultSize 5000)If ($Records.Count -eq 0) {Write-Host "No group creation records found." }Else {Write-Host "Processing" $Records.Count "audit records..."$Report = [System.Collections.Generic.List[Object]]::new()ForEach ($Rec in $Records) {$AuditData = ConvertFrom-Json $Rec.AuditdataIf ($AuditData.Actor[2].Id.SubString(0,5) -eq "User_") { # Dynamic group created from Azure AD portal$GroupId = $AuditData.Target.id[0]$GroupName = $AuditData.Target.id[1] }Else {$GroupId = $AuditData.Target.Id[1]$GroupName = $AuditData.Target.Id[3] }$ReportLine = [PSCustomObject]@{TimeStamp = Get-Date $AuditData.CreationTime -format gUser = $AuditData.UserIdAction = $AuditData.OperationStatus = $AuditData.ResultStatusWorkload = $AuditData.Actor[2].IdGroupId = $GroupIdGroupName = $GroupName }$Report.Add($ReportLine) }}$Report | Select Timestamp, Workload, User, GroupName -Unique
Parameters
ParameterDefaultNotes
-LookbackDays180Number of days back to search the unified audit log.Attribution
Author
Office365itpros