Sharing a Script that you can change according to your requirements.
We have used this to find out user mailboxes that doesn’t comply with the email policy.
For example: FirstName.LastName@domain.com
In first part of the script define the domain & get mailboxes with employeeid (Example if in your env if you have stored Empid in Cutomattribute12)
#######format Date################
$date = get-date -format d
$date = $date.ToString().Replace(“/”, “-”)
$output = “.\” + “EmlcomparisonReport_” + $date + “_.csv”
$Collection = @()
$domain = “domain” #########define domain
$regex = “^[0-9]*$” ######define regex to find numbers– employeeid
####################
$allmbx = Get-Mailbox -resultsize unlimited | where{$_.CustomAttribute12 -match $regex} ### get user mailboxes
$allmbx | foreach-object {
$firstN = $null
$lastN = $null
$qd = get-qaduser $_.samaccountname
$firstN = $qd.FirstName
$lastN = $qd.LastName
$firstN = $firstN.trim()
$firstN = $firstN -replace ” “,””
$lastN = $lastN.trim()
$lastN = $lastN -replace ” “,””
$Emlpol=$firstN + “.” + $lastN + “@” + $domain + “.” + “com” ### email policy ########form email policy
############################################
Now script will just compare the email policy with actual primary smtp address assigned to user mailboxes.
If match is not found than it will get reported in the csv as output.(in the same location from which script is run)
Note: Quest Shell & Exchange management shell is required to run this script.
Download the script:
https://gallery.technet.microsoft.com/scriptcenter/Compare-Email-Policy-f6a158ed
############################################################################ # Author: Vikas Sukhija # Date: 12/08/2015 # Update: # Reviewed: # Description: Compare Email Policy Exchange ############################################################################# # Add Exchange Shell... If ((Get-PSSnapin | where {$_.Name -match "Microsoft.Exchange.Management.PowerShell.E2010"}) -eq $null) { Add-PSSnapin Microsoft.Exchange.Management.PowerShell.E2010} # Add quest shell If ((Get-PSSnapin | where {$_.Name -match "Quest.ActiveRoles.ADManagement"}) -eq $null) { Add-PSSnapin Quest.ActiveRoles.ADManagement } #######format Date################ $date = get-date -format d $date = $date.ToString().Replace(“/”, “-”) $output = ".\" + "EmlcomparisonReport_" + $date + "_.csv" $Collection = @() $domain = "domain" $regex = "^[0-9]*$" ####################### $allmbx = Get-Mailbox -resultsize unlimited | where{$_.CustomAttribute12 -match $regex} $allmbx | foreach-object { $firstN = $null $lastN = $null $qd = get-qaduser $_.samaccountname $firstN = $qd.FirstName $lastN = $qd.LastName $firstN = $firstN.trim() $firstN = $firstN -replace " ","" $lastN = $lastN.trim() $lastN = $lastN -replace " ","" $Emlpol=$firstN + "." + $lastN + "@" + $domain + "." + "com" ### email policy #Write-host "Formed email policy address $Emlpol" -foregroundcolor Green $email = $_.PrimarySmtpAddress $mbx = ""| select FirstName, Lastname,SamaccountName,Email,Formedaddress #########compare email policy now if($email -eq $Emlpol){ write-host "email addreses $email is as per email policy $Emlpol" -foregroundcolor Green } else{ write-host "email addreses is $email not as per email policy $Emlpol" -foregroundcolor magenta $mbx.FirstName = $firstN $mbx.LastName = $lastN $mbx.SamaccountName = $_.samaccountname $mbx.Email = $email $mbx.Formedaddress = $Emlpol $collection +=$mbx } } #export the collection to csv , change the path accordingly $Collection | export-csv $output -notypeinformation ###############################################################
Tech Wizard