Retention Policies |
Only one mailbox retention policy can be assigned to a mailbox at a time. While you can easily change which retention policy is assigned to a mailbox using the the Exchange Management Shell or the Exchange Admin Center, this can be somewhat tedious.
Note that retention tags are time-based, not size-based. If you're trying to manage your mailbox storage with retention policies the same time-based retention policy may result in widely varying mailbox sizes within the Exchange database store, depending on the user. I developed the following process to dynamically adjust user's retention policy based on mailbox size. The larger the mailbox gets, the more aggressive the retention policy applied.
Start by creating multiple default archive and/or delete retention tags. Make sure to select "applied automatically to entire mailbox (default)" to ensure that it applies to all email items. For example,
- Default one year move to archive
- Default 6 months move to archive
- Default 3 months move to archive
- Default 7 year delete
- Default 5 year delete
- Default 3 year delete
Creating a Default retention tag |
Next create multiple retention policies that include the default retention tags you created. For example,
- High Retention - Default one year move to archive, Default 7 year delete
- Medium Retention - Default 6 months move to archive, Default 5 year delete
- Low Retention - Default 3 months move to archive, Default 3 year delete
Apply the High Retention policy to all mailboxes using the following EMS command:
Get-Mailbox -ResultSize unlimited | Set-Mailbox -RetentionPolicy "High Retention"
Note that archive retention tags only apply if the mailbox has an archive mailbox, otherwise the archive tags are ignored.
Copy the following script and save it to one of your Exchange servers in the C:\Scripts folder as Apply-RetentionPolicies.ps1:
$mbx = Get-Mailbox -ResultSize unlimited
$mbx | ForEach-Object -Process {
$size = ( Get-MailboxStatistics $_.Alias ).TotalItemSize
If ( $size -gt "10GB" ) {
Set-Mailbox $_.Alias -RetentionPolicy "Low Retention Policy"
}
elseif ( $size -gt "8GB" ) {
Set-Mailbox $_.Alias -RetentionPolicy "Medium Retention Policy"
}
else {
Set-Mailbox $_.Alias -RetentionPolicy "High Retention Policy"
}
}
Adjust the mailbox sizes in the script to meet your company's retention needs. In the example script above mailboxes greater than 10GB get the Low Retention Policy, mailboxes between 8-10GB get the Medium Retention Policy, and everyone else gets the High Retention Policy.
Next, create a scheduled task that runs the Apply-RetentionPolicies.ps1 script once per day.
Set the "Program/Script" property to:
C:\Windows\System32\WindowsPowerShell\v1.0\powershell.exeAnd set the "Add arguments (optional)" to:
-NonInteractive -WindowStyle Hidden -command $ep = (Get-Item env:"ExchangeInstallPath").Value; . $ep\bin\RemoteExchange.ps1; Connect-ExchangeServer -auto; . C:\Scripts\Apply-RetentionPolicies.ps1
Creating a Basic Scheduled Task |
With this process, as a mailbox gets smaller from a more aggressive retention policy it will automatically get a longer retention policy.
No comments:
Post a Comment
Thank you for your comment! It is my hope that you find the information here useful. Let others know if this post helped you out, or if you have a comment or further information.