# Look for Hard delete and soft delete records $Records = (Search-UnifiedAuditLog -StartDate (Get-Date).AddDays(-30) -EndDate (Get-Date).AddDays(1) -Operations "HardDelete", "SoftDelete" -ResultSize 1000) If ($Records.Count -eq 0) { Write-Host "No message delete records found." } Else { Write-Host "Processing" $Records.Count "audit records..." $Report = @() ForEach ($Rec in $Records) { $AuditData = ConvertFrom-Json $Rec.Auditdata If ($AuditData.Folder.Path -ne $Null) { $Folder = $AuditData.Folder.Path.Split("\")[1]} Else {$Folder = "Unknown"} If ($AuditData.LogonType -eq 1) { # Admin deleted the message $Mbx = Get-Mailbox -Identity $AuditData.MailboxGuid -ErrorAction SilentlyContinue $Msg = "No message identifier" $Mailbox = $Mbx.UserPrincipalName } Else { # User deleted the message $Msg = $AuditData.AffectedItems.InternetMessageId $Mailbox = $AuditData.MailboxOwnerUPN } $ReportLine = [PSCustomObject]@{ TimeStamp = Get-Date($AuditData.CreationTime) -format g User = $AuditData.UserId Action = $AuditData.Operation Status = $AuditData.ResultStatus Mailbox = $Mailbox Items = $AuditData.AffectedItems.Subject Folder = $Folder MsgId = $Msg } $Report += $ReportLine }} $Report | Out-GridView $Report | Export-Csv -NoTypeInformation -Path "C:\temp\DeletedMessages.csv" Write-Host "Report File saved in" "C:\temp\DeletedMessages.csv"