This script will connect to Exchange Online and enable litigation hold for all enabled users. Errors due to not having the appropriate license are ignored. Litigation hold can be enabled for users licensed with Business Premium, EOL Plan 2 or the Mailbox Archive add-on. Replace ‘svc-runbookcred’ with your runbook credential name. You can schedule to run nightly to pick up new users as they are added. If you like the script, made it cooler or need some help, please add a comment below! 🙂
# use TLS 1.2
[Net.ServicePointManager]::SecurityProtocol = [Net.SecurityProtocolType]::Tls12
# specify runbook credential name
$runbookcredential = 'svc-runbookcred'
# get credential for eol connection
Try {
$CredAzure = Get-AutomationPSCredential -Name $runbookcredential
}
Catch {
Write-Error "Failed to get credential!"
Exit
}
Write-Output "Get automation credential - Success"
# connect eol
Try {
Connect-ExchangeOnline -Credential $CredAzure
}
Catch {
Write-Error "Failed to connect to MSOnline!"
Exit
}
Write-Output "Connect to EOL - Success"
# get user mailboxes
Try {
$mailboxes = Get-Mailbox -ResultSize Unlimited -Filter { ( RecipientTypeDetails -eq 'UserMailbox' ) -and ( ExchangeUserAccountControl -ne 'AccountDisabled') } | Where-Object {$_.LitigationHoldEnabled -ne $true}
}
Catch {
Write-Error "Failed to get user mailboxes!"
Exit
}
Write-Output "Get user mailboxes - Success"
# enable litigation hold
Try {
$mailboxes | Set-Mailbox -LitigationHoldEnabled $true -ErrorAction Ignore
}
Catch {
Write-Error "Failed to enable litigation hold!"
Exit
}
Write-Output "Enable litigation hold - Success"
recent comms…