Você tem duas maneiras de resolver seu dilema, um dos quais você pode não saber que existe. Quanto à sua pergunta, o loop não está quebrando porque $false é um booleano. Booleanos são um tipo de dados específico no Powershell. O que você deseja comparar é $null , pois a variável $userExists é nula, a menos que o cmdlet retorne um objeto de usuário.
A opção que eu recomendo que você use é que você especifique o Controlador de domínio para o cmdlet exchange (provavelmente Enable-Mailbox ) com o parâmetro -DomainController .
Você pode obter o que um controlador de domínio está comunicando com um sistema usando o seguinte código:
$DC = (Get-ADDomainController).HostName