Category: Powershell
Working with Mailbox Rules in Powershell
Script for converting Bounce Back LegacyExchangeDN to the X500 format
Scenario: You have to convert the LegacyExchangeDN that is being provided to you in bounce back emails with the special charter formatting into an X500 address. This may need to be done if mailboxes are disabled and recreated as new mailboxes or when performing migrations.
From the bounce back message, copy and paste the address into the $Addr variable below and then execute this script:
#Edit the $Addr Variable
$Addr = "IMCEAEX-_O=TEST+20ENTERPRISE+20EXCHANGE_OU=EXCHANGE+20ADMINISTRATIVE+20GROUP+20+28FYDIBOHF23SPDLT+29_CN=RECIPIENTS_CN=4bd8a35a90e2441a4587635898d62f9f-s@domain.com"
#Run the following against the variable
$Addr = $Addr -replace "IMCEAEX-",""
$Addr = $Addr -replace "@.*$",""
$Addr = $Addr -replace "_","/"
$Addr = $Addr -replace "+20"," "
$Addr = $Addr -replace "+28","("
$Addr = $Addr -replace "+29",")"
$Addr = $Addr -replace "+2C",","
$Addr = $Addr -replace "+5F","_"
$Addr = $Addr -replace "+40","@"
$Addr = $Addr -replace "+2E","."
$Addr= “X500:$Addr”
Write-Host $Addr
#Add the Email Address to the Mailbox
set-mailbox usera -emailaddresses @{Add=$Addr}
Script to see ActiveSync Device Statistics from a filtered Mailbox List.
Reseed Exchange Database Copy via Exchange Powershell
Below are the steps to reseed a Database Copy via Exchange PowerShell. The database copy that needs to be reseeded is DB01 on the mailbox Server MBX04. We will use the server MBX03 that has a healthy database copy to perform the reseed.
1. Check to see if the problematic database copy has a failed and/or suspended status:
get-mailboxdatabasecopystatus DB01
2. If the database copy is already failed and/or suspended, you can skip this step. If the database copy you wish to reseed has a status of healthy, you must suspend the database copy:
suspend-mailboxdatabasecopy DB01MBX04
3. To reseed the mailbox database copy, run the following:
update-mailboxdatabasecopy DB01MBX04 -sourceserver MBX03 -DeleteExistingFiles
Set accepted IP ranges to a receive connector with powershell
Create transport rule that forwards emails
Configure Automatic Reply for a mailbox via Powershell
Setting Automatic Reply, or Out of Office Message, via Exchange Powershell. Below shows you how to schedule an Automatic Reply, enable it, and disable it.
Enable it (It stays on until its disabled):
Set-MailboxAutoReplyConfiguration -Identity batman -AutoReplyState Enabled -InternalMessage “Internal auto-reply message.” -ExternalMessage “External auto-reply message.”
Scheduled (must use start and end time parameters) :
Set-MailboxAutoReplyConfiguration -Identity batman -AutoReplyState Scheduled -StartTime “7/10/2012 08:00:00” -EndTime “7/15/2012 17:00:00” -InternalMessage “Internal auto-reply message” -ExternalMessage “External auto-reply message”
Disable it:
Perform IIS reset on multiple servers at once.
[array]$servers = get-exchangeserver | where {$_.identity -like “esg*” -and $_.AdminDisplayVersion -match “version 15.0*”}
#Also show IIS service status after the reset has completed
{
Write-Host “Restarting IIS on server $server…”
IISRESET $server
Write-Host “IIS status for server $server”
IISRESET $server /status
}
Write-Host “IIS has been restarted on all servers”
[array]$servers = “Server1″,”Server2″,”Server3″,”Server4”
#Step through each server in the array and perform an IISRESET
#Also show IIS service status after the reset has completed
foreach ($server in $servers)
{
Write-Host “Restarting IIS on server $server…”
IISRESET $server
Write-Host “IIS status for server $server”
IISRESET $server /status
}
Write-Host IIS has been restarted on all servers
Find the distribution groups that a user is a manager of
Scenario: You need to find the Distribution Groups that a specific user is a manager of.
Resolution: Run the following in Exchange PowerShell:
get-distributiongroup -resultsize unlimited | Where {$_.Managedby -like “*username“}