Exchange 2007 Powershell Script to Delete items from multiple mailboxes
Write-host "
#################Supporting Environment - Exchange 2007#####################
Script to remove items from a folder in user's mailbox Multiple mailboxes
Adds full access mailbox permission to all the mailboxes
Moves all the items to a the target mailbox inside inbox\target folder
Once when the items are successfully removed, we can delete the target mailbox
Transcripts are saved in C:\trans.txt
############################################################################"
Start-transcript C:\trans.txt
$u = Read-host "
Enter the Account
"
write-host "
Enter the database name in this format Servername\Storage Group\Databasename
--------------------------------------
"
$db = Read-host "Enter the Database name"
$s = Read-host "Server Name"
Write-host "
---------------------------------------------------------------------------
##Note: Please enter the folder name in "\foldername" format eg., "\outbox"
---------------------------------------------------------------------------
"
$F = Read-host "Folder from which items need to be deleted"
$tm = read-host "Enter the Target mailbox"
#Write-host "Do you wish to continue adding permission on all the mailboxes" -confirm:$true
#get-mailbox -server $s | % {add-mailboxpermission -user $U -accessrights Fullaccess -Identity $_}
Get-MailboxDatabase $db | Get-Mailbox | % {add-mailboxpermission -user $U -accessrights Fullaccess -Identity $_}
Write-host "Process Complete - Permission Granted"
#get-mailbox -server $s | % {Export-Mailbox -identity $_ -IncludeFolders "\outbox" -TargetMailbox $tm -TargetFolder "inbox\target" -DeleteContent -confirm:$false -Verbose}
Get-MailboxDatabase $db | Get-Mailbox | % {Export-Mailbox -identity $_ -IncludeFolders $F -TargetMailbox $tm -TargetFolder "inbox\target" -DeleteContent -confirm:$false -Verbose}
Write-Host "
**********End of Script*************"
Stop-transcript
Created the above script for deleting emails from a folder in multiple mailboxes (all at a time) - Database specific
This will be very useful when working on a log growth issue where in we need to check and remove items in user's outbox folder. Its a pain to delete them one by one, Guess this will be useful.
Create a empty mailbox (eg., a mailbox named "target" and make sure the account through which the script is ran has full mailbox access
Before running this script
Know what this is gonna do,
Script to remove items from a folder in user's mailbox Multiple mailboxes
- Adds full mailbox permission to all the mailboxes to the user account which is entered.
Moves all the items to a the target mailbox inside inbox\target folder
Once when the items are successfully removed, we can delete the target mailbox
Transcripts are saved in C:\trans.txt
Procedure:
- Open EMS > go the path where you have placed the script > then type .\ Script_Removemailboxitems.ps1
- Now the script is initiated and the transcript is by default saved in C:\trans.txt
- Now the process starts,
- It first adds full access permission on all the mailboxes in the provided mailbox database(database name entered) for the account entered
- Then it starts checking for the items in the appropriate folder which is provided as the target folder
- It exports those items to the target mailbox and deleted them from the source.
- It’s done for all the mailboxes in the database.
- It summarizes the changes made on all the mailboxes in the database and those are recorded in the C:\trans.txt
- When you login to the target mailbox, it has all the items which was deleted from the source mailboxes ,
Run this on a test environment first and then put it on production.
Note: Also there are few line in the script which are hashed (#), those are for deleting mailbox items specific to a server (Eg., get-mailbox -server $s | % {add-mailboxpermission -user $U -accessrights Fullaccess -Identity $_} )