The final step is to thoroughly test that your Exchange server is fully operational and handling client connections and mail flow properly.
Test mail flow by sending a test message through the server:
# Test internal mail flow
$TestMailbox = "testuser@contoso.com"
Send-MailMessage -From "admin@contoso.com" -To $TestMailbox -Subject "Post-Maintenance Test" -Body "Testing mail flow after maintenance" -SmtpServer ExchangeServer01
Check that databases are mounting properly and accepting connections:
Get-MailboxDatabase | Where-Object {$_.Server -eq "ExchangeServer01"} | Get-MailboxDatabaseCopyStatus
Verify client connectivity by testing various protocols:
# Test connectivity to various Exchange services
Test-OutlookConnectivity -ProbeIdentity "OutlookMapiHttp.Protocol" -TargetResource ExchangeServer01
Test-WebServicesConnectivity -MailboxCredential (Get-Credential) -TrustAnySSLCertificate
Monitor transport queues to ensure normal mail flow:
Get-Queue -Server ExchangeServer01 | Where-Object {$_.MessageCount -gt 0} | Format-Table Identity, Status, MessageCount, NextHopDomain
Run a final health check using the Exchange Health Checker script:
.\HealthChecker.ps1 -Server ExchangeServer01 -OutputFilePath C:\Temp\PostMaintenance\
Compare the post-maintenance health report with your pre-maintenance baseline to identify any issues.
Pro tip: Keep monitoring the server for 24-48 hours after maintenance to catch any delayed issues that might not be immediately apparent.
Verification: Confirm that mail flow is working, clients can connect successfully, and all health checks pass without critical errors.