Skip to main content

Check if you have users with both mailboxes on-prem and online

An Exchange Online license was applied to the user before the Exchange GUID got synchronized from on-premises Active Directory. For synchronized accounts, having the Exchange GUID synchronized from on-premises is used to tell Exchange Online that the mailbox hasn’t been migrated yet, and is what allows customers to pre-license accounts prior to migration.
 From: My user has a mailbox both on-premises and in Exchange Online.

So, in my case many times we get into situation where license is applied before Exchange GUID is synchronized to O365. I am using this script to check whether user has two mailboxes. Script closes Exchange session BEFORE it opens connection to Exchange Online as both use same commands. You can use Get-Mailbox both on-prem and Online, therefore it is crucial to close connection before you open other.

# DISCLAIMER:
# This code is provided "as is" without warranty of any kind, either express or implied, including but not limited to the implied warranties of merchantability and/or fitness for a particular purpose.
# Use at your own risk
#
#
# Use "install-module ExchangeOnlineManagement" if module is not yet installed 
# Use "import-module ExchangeOnline" to import it to session

# Connect to the on-premises Exchange server using remote PowerShell
$onPremisesExchangeServer = "on-premexchange.example.com"
$onPremisesSession = New-PSSession -ConfigurationName Microsoft.Exchange -ConnectionUri http://$onPremisesExchangeServer/PowerShell/ -Credential exchadmin@example.com
Import-PSSession $onPremisesSession
$OnPremisesMailboxes = Get-Mailbox -server $onPremisesExchangeServer -ResultSize unlimited -RecipientType UserMailbox -Filter {ExchangeGUID -ne $null}
# Disconnect the remote PowerShell session to the on-premises Exchange server
Remove-PSSession $onPremisesSession
# Connect to Exchange Online PowerShell
Connect-ExchangeOnline -UserPrincipalName admin@example.onmicrosoft.com
# Initialize an array to store the users with both an on-premises and an Office 365 mailbox
$usersWithBothMailboxes = @()
# Loop through all mailboxes to check if any user has both an on-premises and an Office 365 mailbox
foreach ($OnPremisesMailbox in $OnPremisesMailboxes) {
    $userIdentity = $OnPremisesMailbox.UserPrincipalName
    $Office365Mailbox = Get-EXOMailbox -Identity $userIdentity -ErrorAction SilentlyContinue
    # Check if the user has both a mailbox in Office 365 and a mailbox on-premises that is not remote
    if ($Office365Mailbox -ne $null) {
        Write-Host -BackgroundColor DarkRed -ForegroundColor White "User $userIdentity has both an on-premises and Office 365 mailbox"
        $usersWithBothMailboxes += $userIdentity
    } 
}
# Check if any users were found with both an on-premises and an Office 365 mailbox
if ($usersWithBothMailboxes.Count -eq 0) {
    Write-Host -BackgroundColor Green -ForegroundColor White "There are no users with both on-premises and Office 365 mailboxes"
}
# Disconnect from Exchange Online PowerShell
Disconnect-ExchangeOnline -Confirm:$false

 


Comments

Popular posts from this blog

Netscaler vs Exchange 2019 "time out during ssl handshake stage

If you are using Citrix Netscaler as load balancer in front of Exchange 2019 server you must know this: Microsoft Exchange 2019 is secured by default and allows only TLS 1.2. Therefore default schannel settings are as follows (using IISCrypto tool from Nartac Software): While Citrix Netscaler offers following Cipher Suites: TLS_RSA_WITH_AES_256_CBC_SHA TLS_RSA_WITH_AES_128_CBC_SHA TLS_DHE_RSA_WITH_AES_256_CBC_SHA TLS_DHE_RSA_WITH_AES_128_CBC_SHA TLS_DHE_DSS_WITH_AES_256_CBC_SHA TLS_DHE_DSS_WITH_AES_128_CBC_SHA TLS_RSA_WITH_DES_CBC_SHA TLS_RSA_EXPORT_WITH_DES40_CBC_SHA TLS_RSA_EXPORT_WITH_RC2_CBC_40_MD5 TLS_DHE_DSS_WITH_DES_CBC_SHA TLS_DHE_DSS_EXPORT1024_WITH_DES_CBC_SHA TLS_DHE_DSS_EXPORT_WITH_DES40_CBC_SHA TLS_DHE_RSA_WITH_DES_CBC_SHA TLS_DHE_RSA_EXPORT_WITH_DES40_CBC_SHA TLS_RSA_EXPORT1024_WITH_RC2_CBC_56_MD5 TLS_DH_anon_WITH_DES_CBC_SHA TLS_DH_anon_WITH_AES_128_CBC_SHA TLS_DH_anon_WITH_AES_256_CBC_SHA TLS_DH_anon_EXPORT_WITH_DES40_CBC_SHA Now, you will fi

Exchange Admin Center language

Depending on your computer language settings, Exchange Admin Center can take those and open in a language you actually don't want to use. You'll Google that this can be changed if administrator/ admin user has mailbox by openening OWA settings and changing Regional parameters. But usually Admin user does not have mailbox or you don't want her/him to have it. You will search again and find that you can add mkt=en-US (as an example) to the URL of the Exchange Admin Center (https://yourexchangehostname/ecp?ExchClientVer=15&mkt=en-US) Third option you have is opening Internet Explorer settings (I am using Windows 2016) Click languages Click Set Language Preferences Add language you want to use by clicking Add language Use Move up or Move Down options to put desired language on top Close Internet Explorer Open it again and login again to Exchange Admin Center

Exchange queue 451 4.4.0 Primary target IP address responded with: "235 00000...

You might find messages staying in queue on your email server (mixed environment 2007/2010 Exchange) and Error showing: 451 4.4.0 Primary target IP address responded with: "23500000870YIIGUAYJKoZIhvcSAQICAQBuggY/MIIGO6ADAgEFoQMCAQ6iBwMFAAAAAACjggTEYYIwDCCBLygAwIBBaEPGw1JTkNPSVMuR09WLklOoigwJqADAgECoR8wHRsHU01UUFNWQxsSTUFJTC5pbmNvaXMuZ292Lmluo4IEeDCCBHSgAwIBEqEDAgFMooIEZgSCBGIjDRqyadXg4Y1GQAcMZKo9KfI/2l1JPauKHPjVxyi3sP+6PV8wXjzRn36QjnIsLu7OPtzWDRkJBR/VFnJMLT3wTpg0uEe4eAr7kAgJ+mo4vbuFdlYb+ns23tnLO2kyt3dfXgrPF5Ulm4C6me734JrfOrkT51UCliUMKmlcDAhcPEmDUagjCg9XmLatKNTn41sFZktRjFs8bXexAacl/Wil+gFI5qZbh9nrs922FUoLhmX1U7dS6xiyH2VHaxCAodcbNh14apN/rK0SvjQZi+L2bO2RSF3Rx5LO4zAPfn9LAlNQRwQo8U8NR7J1JACBUwe3t3InTRA0TXyJNCxVGZBM5QjgeJFgBRN6pqa6jZyT7tUgURrG1fHFs4fV77jyxgKjxcrUdc5n7MWT77sfLlb4Ao5HJukOnWlBVUyoDCDvVarc+8/5VJdWFxnNUkohaVUPnDYMMGiGsadDYy39omsSasFkLShLqE7vBGx3WdsvQQnH2kOTwS4mfbWsuulDUfgHOoBg4AW/fB1oxCUT5E3/siLDdurZX/LEjSCmwxbtzzLJ9IGhAlMb+WUUhlZiNb2mn3pZAUlQnDip0ZkXi2nYm71FaTnBb1chScpn