Magic Quadrant™ para gerenciamento de acesso privilegiado 2025: Netwrix reconhecida pelo quarto ano consecutivo. Baixe o relatório.

Plataforma
Centro de recursosBlog
Conectar-se ao PowerShell do Exchange Online

Conectar-se ao PowerShell do Exchange Online

Mar 31, 2025

O Exchange Online PowerShell permite a administração segura e automatizada de ambientes de e-mail do Microsoft 365. Usando o módulo EXO V2 com autenticação moderna e MFA, os administradores podem gerir caixas de correio, permissões, relatórios e migrações em larga escala. As opções baseadas em certificados e identidades geridas suportam a automação, enquanto as melhores práticas, como RBAC, TLS e gestão de sessões, reforçam a segurança e a conformidade.

Introdução ao PowerShell do Exchange Online

O PowerShell do Exchange Online é uma interface de gerenciamento de linha de comando para administrar e automatizar tarefas no Exchange Online, que faz parte do Microsoft 365. Ele permite que administradores gerenciem caixas de correio de usuários, configurem configurações organizacionais e realizem operações em massa de forma eficiente por meio de scripts. Aqui estão alguns benefícios do uso do PowerShell para gerenciamento do Exchange Online:

  • Escreva scripts para automatizar tarefas repetitivas, como a criação de caixas de correio e a atribuição de permissões.
  • Gerencie objetos em massa, como atualizar ou modificar várias contas de usuário, caixas de correio ou grupos em uma única execução, bem como exportar e importar dados via arquivos CSV.
  • Conecte-se remotamente ao Exchange Online de qualquer dispositivo suportado e realize tarefas administrativas de forma segura através de sessões criptografadas.
  • Obtenha relatórios avançados e auditoria. Por exemplo, gere relatórios personalizados em formatos CSV, Excel ou HTML, e você pode auditar o acesso a caixas de correio e ações administrativas com filtros precisos.
  • Acesso a configurações ocultas ou avançadas que não estão disponíveis na interface web do EAC.

Exchange Online Mailbox Auditing Quick Reference Guide

Learn more


Pré-requisitos para Conectar ao Exchange Online PowerShell

Para se conectar ao Exchange Online PowerShell, você precisa atender a pré-requisitos específicos.

Requisitos do Sistema

  • Sistema Operacional: Windows 10, Windows 11 ou Windows Server 2016/2019/2022
  • Windows PowerShell 5.1 ou posterior
  • .NET Framework 4.7.2 or later

Requisitos de Rede

  • Certifique-se de que o tráfego HTTPS (TCP 443) de saída é permitido
  • O TLS 1.2 deve estar ativado
  • Acesso à internet e capacidade de se conectar a outlook.office365.com, login.microsoftonline.com e graph.microsoft.com

Módulo Necessário

  • Módulo de gerenciamento do Exchange Online

Requisitos de Autenticação

  • Para o Microsoft Entra ID, a conta deve ter as permissões necessárias, como:
  • Administrador Global
  • Administrador do Exchange
  • Contas com MFA ativado requerem o módulo do PowerShell do Exchange Online para autenticação moderna

Permissões Necessárias

Sua conta deve ter as funções RBAC (Role-Based Access Control) apropriadas:

  • Gestão de Organização
  • Gerenciamento de destinatários

Como se conectar ao Exchange Online PowerShell

Os diferentes métodos para se conectar ao Exchange Online PowerShell são:

Módulo Connect-ExchangeOnline (Método Moderno)

Você pode se conectar ao Exchange Online usando o Exchange Online Management Module (EXO V2). Este método é recomendado para tarefas de administração e gerenciamento do dia a dia. Ele suporta autenticação moderna (OAuth) e MFA.

Azure Cloud Shell (Conexão Baseada em Navegador)

Este método permite que administradores utilizem o Exchange Online PowerShell diretamente do Azure Portal sem a necessidade de instalação local. O Exchange Online PowerShell está acessível de qualquer dispositivo com um navegador, e possui módulos e ferramentas pré-instalados. Este método é recomendado para administradores que preferem gerenciar através do navegador ou têm acesso limitado a ferramentas do PowerShell localmente. O caminho de acesso é: Azure Portal > Cloud Shell > PowerShell.

Exchange Online Remote PowerShell (Descontinuado)

Este método legado que utiliza o Remote PowerShell (protocolo WSMan) para se conectar ao Exchange Online PowerShell. Está obsoleto e não é recomendado para novas implantações, mas pode ser usado para scripts legados ou sistemas que não suportam o novo módulo de gerenciamento do Exchange Online. Este método não suporta MFA.

Usando Service Principal (Autenticação Baseada em Certificado)

Este método permite administração não assistida ou baseada em scripts por meio de Service Principal Accounts e autenticação baseada em certificados. É recomendado para automação, CI/CD Pipelines e processos em segundo plano. Como pré-requisito, requer: Azure AD App Registration e configuração de certificado.

Comparação dos Métodos de Conexão

Método

Melhor Para

Suporta MFA

Suporta Automação

Connect-ExchangeOnline (EXO V2 Module)

Tarefas administrativas do dia a dia

Sim

Sim

Azure Cloud Shell

Acesso rápido ao navegador

Sim

Não

Remote PowerShell (WSMan)

Scripts legados

Não

Sim

Service Principal (Autenticação por Certificado)

Automação, CI/CD

Não

Sim

Compreendendo a Autenticação Moderna e suas Vantagens

A autenticação moderna é um método de Identity Management que utiliza OAuth 2.0 e Active Directory Authentication Library (ADAL) ou Microsoft Authentication Library (MSAL) para inícios de sessão seguros. Ela substitui métodos tradicionais de autenticação como a autenticação básica.

A autenticação moderna é o método recomendado e seguro para se conectar ao Exchange Online PowerShell, pois oferece as seguintes vantagens:

  • Aumenta a segurança, pois utiliza OAuth 2.0 para autenticação baseada em tokens em vez de passar credenciais diretamente.
  • Permite o uso de MFA, adicionando uma camada extra de segurança.
  • Permite que os administradores apliquem políticas com base na conformidade do dispositivo, localização ou nível de risco, o que ajuda a limitar o acesso aos recursos do Exchange Online com base em condições definidas.
  • Integração perfeita com Microsoft Entra ID e provedores de identidade de terceiros, com suporte para single sign-on (SSO).

A Microsoft está descontinuando a autenticação básica, portanto, a migração para autenticação moderna é crítica.

Requisitos para Conectar ao Exchange Online PowerShell com ou sem MFA

Aqui estão os requisitos para conectar-se ao Exchange Online PowerShell com ou sem MFA.

Sem MFA (Autenticação Básica – Método Legado Descontinuado)

A conta Microsoft Entra ID não deve ter MFA ativadoA autenticação básica ainda deve ser permitida (se não estiver bloqueada em toda a organização)

Com MFA (Autenticação Moderna)

A conta Microsoft Entra ID deve ter MFA configuradoOAuth 2.0 deve ser suportado (padrão no Exchange Online)

Guia Passo a Passo para Conectar

Aqui estão os passos resumidos para se conectar ao Exchange Online PowerShell:

  1. Instale o módulo do PowerShell do Exchange Online.
  2. Conecte-se ao Exchange Online usando o cmdlet Connect-ExchangeOnline. Forneça suas credenciais de administrador do Microsoft 365 Exchange quando solicitado.
  3. Uma vez conectado ao ambiente Exchange Online, você pode usar os cmdlets disponíveis no módulo PowerShell do Exchange Online para gerenciar configurações e objetos do Exchange Online, como caixas de correio, contatos e calendários.

Instale o módulo de gerenciamento do Exchange Online

O módulo Exchange Online Management pode ser instalado em sistemas Windows, Mac e Linux. Abra o PowerShell como administrador e execute o seguinte comando para instalar a versão mais recente do módulo Exchange Online Management:

Install-Module -Name ExchangeOnlineManagement -Force

Execute o seguinte cmdlet para verificar se o módulo Exchange Online Management está instalado:

Get-Module -ListAvailable -Name ExchangeOnlineManagement

Se instalado corretamente, deverá exibir os detalhes do módulo.

O módulo PowerShell do Exchange Online utiliza autenticação moderna para se conectar a todos os ambientes PowerShell relacionados ao Exchange.

Atualize o módulo

Para atualizar o módulo existente do Exchange Online Management, utilize o seguinte cmdlet:

Update-Module ExchangeOnlineManagement

Importe o módulo

Carregue o módulo na sua sessão do PowerShell usando o seguinte cmdlet:

Import-Module ExchangeOnlineManagement

Definir Política de Execução

Ao conectar-se ao Exchange Online PowerShell, a política de execução definida para o PowerShell determina como os scripts são executados no seu sistema. RemoteSigned é a política recomendada, pois garante que:

  • Scripts criados localmente podem ser executados sem a necessidade de uma assinatura digital
  • Os scripts baixados da internet devem ser assinados por um editor confiável

Utilize o seguinte cmdlet para definir a política de execução como RemoteSigned:

Set-ExecutionPolicy RemoteSigned -Scope CurrentUser

Conectar usando autenticação básica (Descontinuado)

A Microsoft desativou permanentemente a autenticação básica para o Exchange Online a partir de outubro de 2022. Ela foi substituída pela autenticação moderna (OAuth 2.0).

Conectar Usando Autenticação Moderna

A autenticação moderna (OAuth 2.0) é o método recomendado e seguro para se conectar ao Exchange Online PowerShell. Os diferentes métodos de conexão são:

Método


Autenticação Interativa (Prompt de GUI)

Este é o método de conexão padrão para a maioria dos inquilinos, como os inquilinos comerciais padrão do Microsoft 365. Use este cmdlet para conectar usando autenticação moderna: Connect-ExchangeOnline -UserPrincipalName admin@yourdomain.com Substitua admin@yourdomain.com pela sua conta de administrador do Exchange Online. Uma janela de login aparecerá; complete o processo de login, incluindo autenticação multifator (MFA) se necessário.

Autenticação por Código de Dispositivo (Para Ambientes Sem GUI)

Se você está trabalhando em um ambiente sem GUI, use o parâmetro -Device: Connect-ExchangeOnline -UserPrincipalName admin@yourdomain.com -Device Copie o Código de Dispositivo fornecido.Abra https://microsoft.com/devicelogin em um navegador.Insira o Código de Dispositivo.Autentique-se com sua conta e complete a MFA (se necessário).

Conectar com Autenticação Baseada em Certificado (Não Interativa)

Para automação ou scripts não supervisionados: Connect-ExchangeOnline -CertificateThumbprint “<CertificateThumbprint>” -AppId “<AppId>” -Organization “<YourTenant>” Substitua: “<CertificateThumbprint>” pelo seu certificado thumbprint “<AppId>” pelo ID do App Microsoft Entra.“<YourTenant>” pelo seu domínio (como seudominio.onmicrosoft.com).

Exemplos de Conexão para Diferentes Ambientes do Exchange Online (GCC, GCC High, DoD)

Ambientes diferentes do Exchange Online exigem URIs de conexão específicos e configurações quando se utiliza autenticação moderna. Exemplos para esses ambientes são:

Método

Informações de Conexão

Microsoft 365 GCC (Government Community Cloud)

Caso de Uso: Clientes do Governo dos EUA (GCC) Connect-ExchangeOnline -UserPrincipalName admin@contoso.onmicrosoft.com Substitua admin@contoso.onmicrosoft.com pela sua conta de administrador do Exchange Online. Uma janela de login aparecerá; complete o processo de login, incluindo autenticação multifator (MFA), se necessário.

Microsoft 365 GCC High

Caso de Uso: Clientes do Governo dos EUA com requisitos de alta segurança Connect-ExchangeOnline -UserPrincipalName admin@yourdomain.com -ExchangeEnvironmentName O365USGovGCCHigh -ExchangeEnvironmentName – Especifica explicitamente o ambiente GCC High

Microsoft 365 DoD (Department of Defense)

Caso de Uso: Reservado para os inquilinos do Departamento de Defesa dos EUA (DoD) Connect-ExchangeOnline -UserPrincipalName admin@yourdomain.com -ExchangeEnvironmentName O365USGovDoD -ExchangeEnvironmentName: Define explicitamente o ambiente para o ambiente Office 365 US Government DoD

Usando Autenticação Multi-Fator

Processo de conexão passo a passo com MFA ativado

Conexão com Managed Identities

Usar Managed Identities para se conectar ao Exchange Online PowerShell permite autenticação segura e sem senha no Microsoft Entra.

O que são Identidades Gerenciadas?

As Identidades Gerenciadas permitem que os recursos do Microsoft Entra se autentiquem em serviços compatíveis sem armazenar credenciais em scripts ou código. O Exchange Online suporta esse recurso para scripts não supervisionados usando o Azure Automation ou cenários semelhantes.

Identidades Gerenciadas Atribuídas pelo Sistema vs. Atribuídas pelo Usuário

Recurso

Atribuído pelo Sistema

Atribuído pelo Usuário

Vinculado a um Recurso

Associado a um único recurso Microsoft Entra (como VM, Logic App). É excluído quando o recurso é excluído.

Pode ser compartilhado entre múltiplos recursos

Escopo de Gestão

Gerenciado automaticamente para seu recurso

Gerenciado de forma independente e reutilizável

Use Case

Apropriado para cenários de recurso único

Ideal para uso compartilhado ou de múltiplos recursos

Conectar ao Exchange Online PowerShell Usando Managed Identities

Pré-requisitos

  • Certifique-se de que seu recurso Azure (por exemplo, VM, Function App, App Service) tenha uma identidade gerenciada atribuída pelo sistema ou pelo usuário ativada.
  • Atribua à Managed Identity o papel necessário do Microsoft Entra ID para o Exchange Online. Por exemplo:
  • Administrador do Exchange
  • Global Reader ou Global Administrator (se forem necessárias permissões mais amplas).
  • Instale e importe o módulo do PowerShell do Exchange Online.

Como conectar

Use Connect-ExchangeOnline com o parâmetro -ManagedIdentity.

  • Exemplo para uma identidade gerenciada atribuída pelo sistema:

Connect-ExchangeOnline -ManagedIdentity -Organization <YourDomain>.onmicrosoft.com

  • Exemplo para uma identidade gerenciada atribuída ao usuário:
      # Specify the Client ID of the User-Assigned Managed Identity

Connect-ExchangeOnline -ManagedIdentity -Organization <YourDomain>.onmicrosoft.com -ManagedIdentityAccountId <UserAssignedManagedIdentityClientIdValue>
      

Para cenários não supervisionados, como tarefas de automação ou pipelines CI/CD:

  • Armazene o script em um local seguro, como Azure Automation, Azure DevOps ou uma VM com Managed Identity ativado.
  • Utilize Managed Identities para autenticar, evitando a necessidade de lidar explicitamente com credenciais.

Script de Exemplo:

      # Connect to Exchange Online

Connect-ExchangeOnline -ManagedIdentity

# Example Exchange Online commands

Get-Mailbox -RecipientTypeDetails UserMailbox | Select-Object DisplayName, PrimarySmtpAddress

# Disconnect the session

Disconnect-ExchangeOnline -Confirm:$false
      

Veja o artigo Use Azure managed identities to connect to Exchange Online PowerShell da Microsoft para informações adicionais.

Windows PowerShell Scripting Tutorial (PDF) for Beginners

Learn more

Sintaxe e Parâmetros Comuns de Conexão

Syntax

O cmdlet Connect-ExchangeOnline possui a seguinte sintaxe:

Connect-ExchangeOnline

[[-ConnectionUri] <String>]

[[-AzureADAuthorizationEndpointUri] <String>]

[[-ExchangeEnvironmentName] <ExchangeEnvironment>]

[[-PSSessionOption] <PSSessionOption>]

[[-DelegatedOrganization] <String>]

[[-Prefix] <String>]

[[-CommandName] <String[]>]

[[-FormatTypeName] <String[]>]

[-AccessToken <String>]

[-AppId <String>]

[-BypassMailboxAnchoring]

[-Certificado <X509Certificate2>]

[-CertificateFilePath <String>]

[-CertificatePassword <SecureString>]

[-CertificateThumbprint <String>]

[-Credential <PSCredential>]

[-Device]

[-EnableErrorReporting]

[-InlineCredential]

[-LoadCmdletHelp]

[-LogDirectoryPath <String>]

[-LogLevel <LogLevel>]

[-ManagedIdentity]

[-ManagedIdentityAccountId <String>]

[-Organization <String>]

[-PageSize <UInt32>]

[-ShowBanner]

[-ShowProgress <Boolean>]

[-SigningCertificate <X509Certificate2>]

[-SkipLoadingCmdletHelp]

[-SkipLoadingFormatData]

[-TrackPerformance <Boolean>]

[-UseMultithreading <Boolean>]

[-UserPrincipalName <String>]

[-UseRPSSession]

[<CommonParameters>]

Parâmetros Comuns

Alguns parâmetros básicos são:

Parâmetro

Descrição

-UserPrincipalName

Especifica a conta que você deseja usar para se conectar ao Exchange Online PowerShell. Este parâmetro permite que você evite digitar um nome de usuário no prompt de credenciais de autenticação moderna.

-Credential

Especifica o nome de usuário e senha utilizados para se conectar ao Exchange Online PowerShell

-DelegatedOrganization

Especifica a organização do cliente que você deseja gerenciar ao atuar como um administrador delegado

-ConnectionUri

Especifica o ponto de conexão do Exchange Online (usado em ambientes especializados como inquilinos GCC ou China)

-CertificateThumbprint

Conecta usando um certificado em vez de nome de usuário/senha. Um valor válido é o valor da impressão digital do certificado.

-AppId

Usado com -CertificateThumbprint para especificar um ID de aplicação Microsoft Entra

-AccessToken

Especifica um token de acesso OAuth 2.0 para autenticação

-Organização

Especifica a organização quando você se conecta usando CBA ou identidade gerenciada

Alguns parâmetros opcionais são:

Parâmetro

Descrição

-ShowProgress

Especifica se deve mostrar ou ocultar a barra de progresso dos cmdlets importados ao conectar. Os valores válidos são $true e $false.

-SkipLoadingFormatData

Acelera as conexões ao pular o carregamento de arquivos de formatação e tipo de dados

-InlineCredential

Passa diretamente as credenciais na linha de comando para evitar solicitações ao conectar-se ao Exchange Online PowerShell

-LogDirectoryPath

Especifica a localização do arquivo de log

-LogLevel

Especifica o nível de registro. Os valores válidos são Default e All.

-ConnectionTimeout

Especifica o valor do tempo limite (em segundos) para a tentativa de conexão

-Dispositivo

Normalmente usado em computadores sem navegadores de internet. Não é necessário especificar um valor com este interruptor.

-ManagedIdentity

Especifica que você está usando identidade gerenciada para conectar. Não é necessário especificar um valor com este interruptor.

Parâmetros específicos para conexões em ambientes de alta segurança:

Para ambientes GCC

Parâmetro

Descrição

-ConnectionUri

Especifica o endpoint para inquilinos GCC

-EntraIDAuthorizationEndpointUri

Especifica o ponto de extremidade de autorização para GCC

-ExchangeEnvironmentName

Especifica explicitamente o ambiente GCC High

Para ambientes DoD

Parâmetro

Descrição

-ConnectionUri

Aponta para o endpoint específico do DoD

-ExchangeEnvironmentName

Define explicitamente o ambiente para DoD

Automatizando Conexões

Autenticação Apenas para Aplicações em Scripts Não Supervisionados

A autenticação baseada em certificado (CBA) ou autenticação apenas de aplicativo suporta cenários de script e automação desassistidos usando Microsoft Entra apps e certificados autoassinados.

A autenticação apenas para aplicativos permite que serviços, scripts ou trabalhos em segundo plano acessem APIs e recursos de forma segura sem a necessidade de interação do usuário. Isso é ideal para cenários de automação, como tarefas agendadas, sincronização de dados ou processamento de backend.

Passos para Configurar a Autenticação Apenas de Aplicativo

  1. Vá até o seu provedor de identidade, como o Microsoft Entra ID, e registre o aplicativo. Em seguida, anote o Client ID, Tenant ID e gere um Client Secret ou faça upload de um certificado.
  2. Atribua as permissões de API necessárias. Você deve conceder permissões de API de Aplicativo em vez de permissões de API Delegadas.
  3. Crie e configure um certificado X.509 autoassinado. Isso é usado para autenticar sua aplicação contra o Microsoft Entra ID, quando solicitado o token de acesso somente para aplicativos.
  4. Registre o certificado com sua aplicação. Isso permitirá que você use a chave privada (arquivo .pfx) ou a impressão digital para autenticação.
  5. Para atribuir as funções RBAC apropriadas à aplicação, utilize qualquer uma das funções integradas suportadas no Microsoft Entra.

Agora você pode se conectar ao Exchange Online PowerShell usando os cmdlets fornecidos na seção Connect Using Modern Authentication.

Veja o artigo da Microsoft sobre autenticação somente de aplicativo para scripts não supervisionados no Exchange Online PowerShell e Security & Compliance PowerShell para informações adicionais.

Exemplo de Script PowerShell para Autenticação Não Assistida

      $TenantId = “your-tenant-id”

$ClientId = “your-client-id”

$ClientSecret = “your-client-secret”

$Resource = “https://graph.microsoft.com/”

# Get token

$Body = @{

grant_type = “client_credentials”

client_id = $ClientId

client_secret = $ClientSecret

scope = “$Resource/.default”

}

$TokenResponse = Invoke-RestMethod -Uri “https://login.microsoftonline.com/$TenantId/oauth2/v2.0/token” -Method Post -Body $Body

$AccessToken = $TokenResponse.access_token

Write-Output “Access Token: $AccessToken”
      

Conectando com Certificados

O uso de certificados para automação oferece uma camada adicional de segurança em comparação com segredos de cliente. Certificados são ideais para autenticação apenas de aplicativos em scripts ou trabalhos em segundo plano, pois evitam armazenar segredos sensíveis como texto simples.

Guia Passo a Passo para Usar Certificados para Automação

  1. Gere um certificado autoassinado. Você pode usar ferramentas como PowerShell, OpenSSL ou qualquer ferramenta de gerenciamento de certificados para gerá-lo.

Aqui está como você pode gerá-lo usando PowerShell:

      # Generate a self-signed certificate

$cert = New-SelfSignedCertificate -DnsName “yourapp.domain.com” -CertStoreLocation “Cert:\CurrentUser\My” -KeyExportPolicy Exportable

# Export the certificate and private key as a PFX file

$certPath = “C:\path\to\certificate.pfx”

$certPassword = ConvertTo-SecureString -String “yourpassword” -Force -AsPlainText

Export-PfxCertificate -Cert $cert -FilePath $certPath -Password $certPassword
      
  • Registre o aplicativo com seu provedor de identidade, como o Microsoft Entra ID. Você também deve fazer upload da chave pública do certificado. Para isso:
  • Vá para a seção de registro do aplicativo.
  • Adicione uma credencial-chave usando o arquivo .crt (chave pública).
  • Anote o App ID e o Tenant ID.
  • O aplicativo usará a chave privada para assinar um JWT para autenticação exclusiva do aplicativo.

Melhores práticas de segurança para conexões baseadas em certificados

  • Armazene certificados em um local seguro, como o Azure Key Vault. Evite codificar caminhos ou chaves diretamente nos scripts.
  • Utilize certificados com um período de validade curto. Rode os certificados antes de expirarem.
  • Revogue imediatamente certificados comprometidos ou não utilizados.
  • Limite o acesso ao aplicativo e seus recursos usando o princípio do menor privilégio, e defina escopos precisos de API.
  • Registre o uso de certificados para fins de auditoria.
  • Monitore a autenticação de aplicativos para detectar acessos não autorizados.
  • Utilize criptografia para proteger arquivos de chave privada, como .pfx.
  • Proteja chaves privadas com senhas fortes.
  • Exija MFA para gerenciar configurações de aplicativos. Isso pode exigir a aplicação de MFA para administradores.

Gerenciando Sessões e Desconectando

Gerenciar e encerrar sessões do Exchange Online PowerShell adequadamente é crucial para manter a segurança, otimizar o uso de recursos e prevenir a exaustão de sessões. Aqui estão algumas das melhores práticas que você deve seguir.

Melhores práticas para gerenciar sessões do Exchange Online PowerShell

  • Utilize o Módulo de Gerenciamento do Exchange Online (EXO V2) para autenticação moderna e maior segurança.
  • Faça login com uma conta que tenha apenas as permissões necessárias para suas tarefas, como funções de Exchange Admin e Security Admin.
  • O Exchange Online possui um limite máximo de sessões (3 sessões simultâneas por usuário). Certifique-se de fechar as sessões após concluir as tarefas para evitar atingir esse limite.
  • Esteja ciente do tempo limite padrão para sessões do Exchange Online (geralmente 15 minutos de inatividade). Se os tempos de inatividade por inatividade forem frequentes, otimize os scripts para eficiência.
  • Execute scripts em uma única sessão sempre que possível. Evite deixar sessões ociosas por longos períodos.

Melhores práticas para encerrar sessões do Exchange Online PowerShell

  • Desconecte sempre a sua sessão ao terminar. Apenas fechar a janela do PowerShell sem desconectar pode deixar sessões órfãs. Desconecte sempre explicitamente.
  • O cmdlet Remove-PSSession não limpa completamente as sessões do Exchange Online. Prefira sempre:

Disconnect-ExchangeOnline -Confirm:$false

  • Se suspeitar que sessões órfãs estão consumindo recursos, termine-as usando:

Get-PSSession | Remove-PSSession

  • Se uma sessão expirar, reconecte-se explicitamente em vez de assumir que a sessão ainda é válida.

Habilitar ou Desabilitar o Acesso ao Exchange Online PowerShell para um Usuário

Você deve ter privilégios administrativos suficientes, como a função de Global Administrator ou Exchange Administrator, para habilitar ou desabilitar o acesso do usuário ao Exchange Online PowerShell. Além disso, também é necessário ser membro dos grupos de funções Organization Management ou Recipient Management.

Desativar o acesso ao PowerShell afeta apenas a capacidade do usuário de se conectar ao PowerShell do Exchange Online. Isso não afeta o acesso dele a outros serviços como o Microsoft 365 Admin Center.

Desativar o acesso para um usuário

Quando você desativa o acesso ao PowerShell, o usuário não poderá se conectar ao Exchange Online PowerShell usando suas credenciais. Aqui está o cmdlet para desativar o acesso:

Set-User -Identity <UserPrincipalName> -EXOModuleEnabled $false

Habilite o acesso para um usuário

Quando você habilita o acesso ao PowerShell, o usuário pode se conectar ao Exchange Online PowerShell. Aqui está o cmdlet para habilitar o acesso:

Set-User -Identity <UserPrincipalName> -EXOModuleEnabled $verdadeiro

Verifique o status de acesso do PowerShell de um usuário

Para verificar se um usuário tem acesso ao PowerShell habilitado ou desabilitado, use o seguinte comando:

Get-User -Identity “<UserPrincipalName>” | Format-List EXOModuleEnabled

Para obter todos os usuários que não têm acesso ao Exchange Online PowerShell, use o seguinte cmdlet:

Get-User -ResultSize unlimited -Filter ‘RemotePowerShellEnabled -eq $false’

Para obter todos os usuários que têm acesso ao PowerShell do Exchange Online, use o seguinte cmdlet:

Get-User -ResultSize unlimited -Filter ‘RemotePowerShellEnabled -eq $true’

Desconectar do Exchange Online

Se você está usando o Exchange Online PowerShell V2 (EXO V2):

Se você se conectou com o cmdlet Connect-ExchangeOnline, pode se desconectar usando o seguinte comando:

Disconnect-ExchangeOnline -Confirm:$false

O parâmetro -Confirm é opcional e usado para suprimir solicitações de confirmação. Por padrão, alguns cmdlets podem pedir confirmação antes de prosseguir com uma ação (como desconectar uma sessão).

$false indica que você não deseja ser solicitado para confirmação. Isso permite que o comando seja executado automaticamente sem perguntar se você tem certeza de que deseja desconectar.

Se você estiver usando o módulo mais antigo do Exchange Online PowerShell:

Se você estava usando a sessão remota mais antiga do PowerShell (por exemplo, conectando com New-PSSession), você pode desconectar removendo a sessão da seguinte forma:

Remove-PSSession $Session

Neste caso, $Session é a variável onde você armazenou seu objeto de sessão do PowerShell quando se conectou pela primeira vez.

Problemas Comuns de Conexão e Solução de Problemas

Ao trabalhar com o Exchange Online PowerShell, você pode encontrar problemas de conexão. Vamos dar uma olhada nesses problemas e suas soluções.

Módulo Não Instalado ou Desatualizado

Você vê erros como:

  • O termo 'Connect-ExchangeOnline' não é reconhecido.
  • O módulo 'ExchangeOnlineManagement' não está instalado.

Solução:

O Módulo de Gerenciamento do Exchange Online (EXO V2) deve ser instalado e atualizado. Use este cmdlet para verificar se o módulo está instalado corretamente:

Get-Module -ListAvailable -Name ExchangeOnlineManagement

Credenciais Incorretas ou Problemas de Autenticação

Você pode encontrar problemas como:

  • Há um erro de autenticação
  • As solicitações de MFA estão falhando

Solução:

  • Utilize autenticação moderna com as credenciais corretas.
  • Certifique-se de que sua conta suporta MFA e que você não está bloqueado.
  • Limpe todas as credenciais armazenadas em cache.
  • Se a sua conta tem políticas de acesso condicional, verifique se elas permitem o acesso ao Exchange Online.

Esgotamento do Limite de Sessão

Muitas sessões abertas impedem que você se conecte e você pode receber um erro:

  • Número máximo de sessões simultâneas excedido.

Solução:

  • Desconecte sessões inativas.
  • Certifique-se de se desconectar adequadamente após cada sessão.
  • Monitore sessões ativas.

Proxy ou Firewall Bloqueando a Conexão

A conexão fica suspensa ou falha devido a uma restrição de proxy ou firewall, e você recebe este erro:

  • Não foi possível conectar ao servidor remoto.

Solução:

  • Certifique-se de que as configurações do seu proxy estão corretamente configuradas:
  • Permita endpoints do Exchange Online PowerShell através do firewall:
  • *.outlook.office365.com
  • *.office365.com
  • *.microsoftonline.com
  • Teste a conectividade com:

Test-NetConnection outlook.office365.com -Port 443

Versão desatualizada de TLS

Você pode encontrar este erro:

  • A conexão subjacente foi fechada: Um erro inesperado ocorreu ao enviar.

Solução:

  • Certifique-se de que seu sistema suporta TLS 1.2.
  • Verifique a sua versão do .NET (recomenda-se a versão 4.6.2 ou posterior).

Permissões Ausentes

Você recebe erros como:

  • Acesso negado. Você não possui permissões suficientes.

Solução:

  • Sua conta deve ter a função de Exchange Administrator ou a função apropriada atribuída.

Versão incorreta do PowerShell

Você pode encontrar erros de compatibilidade se estiver usando uma versão do PowerShell não suportada.

Solução:

  • Certifique-se de que está usando o PowerShell 5.1 ou superior:
  • Para o PowerShell Core (7.x), certifique-se de que o EXO V2 Module é compatível.

Bloqueio de Conta ou Conta Desativada

Você recebe erros como:

  • Sua conta foi bloqueada ou desativada.

Solução:

  • Verifique o status da conta no Microsoft 365 Admin Center.
  • Desbloqueie a conta ou redefina a senha se necessário.

Problemas de Resolução de DNS

Você recebe o seguinte erro:

  • O nome remoto não pôde ser resolvido.

Solução:

  • Verifique a resolução DNS para os endpoints do Exchange Online.
  • Utilize servidores DNS públicos (por exemplo, 8.8.8.8 ou 1.1.1.1) se a resolução de DNS falhar.

Erros Relacionados a Conflitos de Módulos do PowerShell

Conflitos de módulos no PowerShell podem causar vários erros, como cmdlets não sendo reconhecidos, funcionalidades sobrepostas ou incompatibilidades de versão.

Você pode receber erros como:

  • O termo ‘<cmdlet>’ não é reconhecido.
  • Cmdlet está disponível em vários módulos.
  • Referência ambígua de cmdlet.

Solução:

  • Verifique todos os módulos atualmente carregados e suas versões usando este cmdlet:

Get-Module -ListAvailable

  • Se um cmdlet está causando conflito, descubra a qual módulo o cmdlet pertence:

Get-Command <Cmdlet-Name>

  • Importe explicitamente o módulo necessário e force a versão correta do módulo:

Import-Module -Name ExchangeOnlineManagement -RequiredVersion 2.x.x -Force

  • Se um módulo desatualizado ou conflitante estiver carregado, remova-o usando:

Remove-Module -Name <Module-Name>

  • Se várias versões de um módulo estiverem instaladas, desinstale as versões mais antigas usando:

Uninstall-Module -Name ExchangeOnlineManagement -RequiredVersion 1.x.x

Erros de Conexão REST API

Para lidar com erros de conexão da REST API no PowerShell, você precisa diagnosticar e resolver problemas relacionados à autenticação, conectividade de rede ou solicitações mal configuradas.

Problema

Solução

Problemas de Autenticação Erro: Falhas de autenticação ou credenciais inválidas.

Certifique-se de que está usando as credenciais corretas e autenticação moderna (OAuth). Verifique se a sua conta possui permissões suficientes (por exemplo, Administrador do Exchange ou função similar). Use o Modelo de Aplicativo Seguro ou autenticação baseada em Certificado se estiver acessando programaticamente.

Problemas de Endpoint ou Módulo Erro: Não foi possível conectar ao endpoint necessário.

Verifique se está utilizando o módulo correto do PowerShell do Exchange Online V2 (ExchangeOnlineManagement). Atualize o módulo para a versão mais recente: Verifique a conectividade com o endpoint REST do Exchange Online usando o seguinte cmdlet. Ele deve ser resolvido e acessível:
https://outlook.office365.com/powershell-liveid

Conectividade de Rede Erro: Excedeu o tempo limite ou erros de conexão recusada.

Os endpoints necessários não devem ser bloqueados por firewalls ou proxies. Estes incluem: *.office365.com *.microsoftonline.com Teste a conectividade com a internetSe estiver atrás de um proxy corporativo, certifique-se de que o proxy está configurado corretamente para o PowerShell.

Expiração do Token Erro: Expiração do token de autenticação durante a sessão.

Use Connect-ExchangeOnline com uma sessão persistente, conforme mostrado abaixo: Connect-ExchangeOnline -UserPrincipalName <seu-email-de-admin> -ShowProgress $true Atualize sua sessão se o token expirar usando o seguinte cmdlet: Disconnect-ExchangeOnline Connect-ExchangeOnline

Problemas com o Protocolo TLS/SSL Erro: erros de TLS durante a conexão.

Certifique-se de que o TLS 1.2 está ativado

Interrupções do Serviço Erro: Serviço indisponível ou conectividade intermitente.

Verifique o Microsoft 365 Service Health Dashboard para quaisquer problemas em andamento.

Erros HTTP Estes erros ocorrem quando o servidor retorna um código de status HTTP indicando falha. Códigos Comuns: 400 Bad Request: A solicitação está malformada (por exemplo, JSON inválido ou parâmetros)401 Unauthorized: Credenciais de autenticação inválidas ou ausentes403 Forbidden: O acesso é negado mesmo que a autenticação esteja correta404 Not Found: O endpoint ou recurso solicitado não existe500 Internal Server Error: Um problema no servidor da API

Certifique-se de que o payload e os cabeçalhos atendem aos requisitos da documentação da API. Verifique as chaves da API, tokens ou outras credenciais. Certifique-se de que sua conta possui direitos de acesso ao recurso solicitado. Use registros ou uma ferramenta como o Postman para verificar os dados brutos da solicitação/resposta.

Erros de SSL/TLS Conexões seguras (HTTPS) podem falhar devido a problemas de certificado.

Certifique-se de que o certificado SSL do servidor é válido e confiável. Para testes locais, você pode ignorar a validação SSL, mas evite isso em produção. Certifique-se de que suas bibliotecas de cliente (por exemplo, Python requests, Node.js https) estão atualizadas para suportar versões modernas de TLS.

Erros de Tempo Limite Estes ocorrem quando o servidor da API não responde dentro do prazo esperado.

Ajuste o parâmetro de tempo limite no seu cliente API para aumentar as configurações de timeout.Evite enviar cargas excessivamente grandes ou consultas lentas.Contate o provedor da API se os tempos limite forem frequentes, pois pode haver problemas de carga no servidor.

Limitação de Taxa e Cotas As APIs geralmente têm limites de uso, que podem levar a erros quando excedidos. Erro: HTTP 429 Too Many Requests

Verifique os limites de taxa. Consulte a documentação da API para limites de solicitação. Implemente o Throttling para espaçar as solicitações de forma a cumprir com os limites de taxa. Entre em contato com o provedor da API para solicitar cotas mais altas.

Cmdlets principais do PowerShell para Exchange Online

Para obter uma lista de todos os cmdlets do PowerShell do Exchange Online disponíveis, use o seguinte cmdlet:

Get-command -Module ExchangeOnlineManagement

Aqui está uma visão geral rápida dos principais cmdlets do Exchange Online, incluindo Get-Mailbox, Get-EXOMailboxStatistics, e outros, para gerenciar caixas de correio, usuários e suas configurações de forma eficaz.

Get-Mailbox

Este cmdlet recupera informações sobre caixas de correio no Exchange Online. Você também pode exibir caixas de correio específicas, como caixas de correio de usuários, caixas de correio compartilhadas, etc.

Sintaxe

Get-Mailbox [-Identity] <String> [-RecipientTypeDetails <RecipientTypeDetails>] [outros parâmetros]

Exemplos de Uso Comum

  • Obtenha todas as caixas de correio:

Get-Mailbox -ResultSize Unlimited

  • Obtenha todas as caixas de correio compartilhadas:

Get-Mailbox -RecipientTypeDetails SharedMailbox

  • Filtrar caixas de correio por domínio:

Get-Mailbox -Filter “EmailAddress -like ‘*@domain.com'”
Get-EXOMailboxStatistics

Este cmdlet recupera estatísticas detalhadas sobre caixas de correio no Exchange Online, fornecendo informações como tamanho da caixa de correio, contagem de itens e último horário de acesso.

Syntax

Get-EXOMailboxStatistics [-Identity] <String>

Exemplos de Uso Comum

  • Obtenha estatísticas da caixa de correio para um usuário:

Get-EXOMailboxStatistics -Identity user@domain.com

  • Recupere os tamanhos de todas as caixas de correio:

Get-EXOMailboxStatistics | Select DisplayName, ItemCount, TotalItemSize

  • Obtenha caixas de correio com tamanhos acima de um limite específico:

Get-EXOMailboxStatistics | Where-Object { $_.TotalItemSize -gt 10GB }

Get-MailboxStatistics

Este cmdlet é semelhante a Get-EXOMailboxStatistics mas funciona com ambientes Exchange locais ou híbridos. Ele fornece detalhes do tamanho da caixa de correio e da contagem de itens.

Syntax

Get-MailboxStatistics [-Identity] <String>

Exemplos de Uso Comum

  • Obtenha estatísticas para um usuário específico:

Get-MailboxStatistics -Identity “user@domain.com”

  • Obtenha todos os tamanhos de caixa de correio e os últimos horários de acesso:

Get-MailboxStatistics | Select DisplayName, LastLogonTime, TotalItemSize
Get-MailboxPermission

Este cmdlet recupera as permissões atribuídas a uma caixa de correio, incluindo acesso delegado.

Sintaxe

Get-MailboxPermission [-Identity] <String>

Exemplos de Uso Comum

  • Visualize todas as permissões para uma caixa de correio:

Get-MailboxPermission -Identity user@domain.com

  • Filtrar por permissões não padrão:

Get-MailboxPermission -Identity “user@domain.com” | Where-Object { $_.IsInherited -eq $false }

Set-Mailbox

Este cmdlet modifica as configurações da caixa de correio, como limites de cota, encaminhamento e ativação de recursos.

Sintaxe

Set-Mailbox [-Identity] <String> [-Parameters]

Exemplos de Uso Comum

  • Ativar o encaminhamento de caixa de correio:

Set-Mailbox -Identity “user@domain.com” -ForwardingSMTPAddress “forwardto@domain.com” -DeliverToMailboxAndForward $true

  • Alterar cota de caixa postal:

Set-Mailbox -Identity “user@domain.com” -ProhibitSendQuota 50GB

New-Mailbox

Este cmdlet cria uma nova caixa de correio para um usuário no Exchange Online. Este cmdlet pode ser usado para vários cenários, incluindo a criação de caixas de correio para usuários individuais, caixas de correio compartilhadas e caixas de correio de recursos como salas ou equipamentos.

Sintaxe

New-Mailbox -Name <Name> -MicrosoftOnlineServicesID <UserPrincipalName> -Password (ConvertTo-SecureString -String “<Password>” -AsPlainText -Force)

Exemplos de Uso Comuns

  • Crie uma caixa de correio de usuário:

New-Mailbox -Name “John Doe” -MicrosoftOnlineServicesID “johndoe@domain.com” -Password (ConvertTo-SecureString -String “P@ssw0rd!” -AsPlainText -Force)

  • Crie uma caixa de correio compartilhada:

New-Mailbox -Shared -Name “Support Team” -MicrosoftOnlineServicesID “support@domain.com”

  • Crie uma caixa de correio de sala:

New-Mailbox -Room -Name “Sala de Conferência 1” -MicrosoftOnlineServicesID conference1@domain.com

  • Crie uma Caixa de Correio Compartilhada para uma Equipe:

New-Mailbox -Shared -Name “HR Team” -MicrosoftOnlineServicesID “hr@domain.com” -Alias “HRTeam”

Remove-Mailbox

Este cmdlet exclui uma caixa de correio do Exchange Online. Essa ação pode ser aplicada a vários tipos de caixa de correio, incluindo caixas de correio de usuários, caixas de correio compartilhadas e caixas de correio de recursos (como caixas de correio de sala ou equipamentos).

Sintaxe

Remove-Mailbox -Identity <MailboxIdentity>

Exemplos de Uso Comum

  • Excluir uma caixa de correio de usuário (exclui a caixa de correio de forma suave, permitindo a recuperação dentro do período de retenção.):

Remove-Mailbox -Identity “johndoe@domain.com”

  • Excluir permanentemente uma caixa de correio (exclui sem conceder um período de retenção):

Remove-Mailbox -Identity “johndoe@domain.com” -Permanent

  • Excluir apenas uma caixa postal de arquivo (mantém a caixa postal principal intacta para o usuário especificado):

Remove-Mailbox -Identity “johndoe@domain.com” -Archive

Get-MailTrafficSummaryReport

Este cmdlet recupera um resumo do tráfego de e-mail para a sua organização (disponível em ambientes Microsoft 365).

Sintaxe

Get-MailTrafficSummaryReport [-StartDate] <DateTime> [-EndDate] <DateTime>

Exemplo de Uso Comum

  • Obtenha o tráfego de e-mail dos últimos 7 dias:
      $StartDate = (Get-Date).AddDays(-7)

$EndDate = Get-Date

Get-MailTrafficSummaryReport -StartDate $StartDate -EndDate $EndDate
      

Search-Mailbox

Este cmdlet procura por conteúdo específico em uma caixa de correio ou em várias caixas de correio.

Sintaxe

Search-Mailbox [-Identity] <String> [-SearchQuery <Query>] [-TargetMailbox <String>]

Exemplos de Uso Comum

  • Pesquise por e-mails que contenham uma palavra-chave específica:

Search-Mailbox -Identity “user@domain.com” -SearchQuery “Subject:’Invoice'”

  • Copiar resultados de pesquisa para outra caixa de correio:

Search-Mailbox -Identity “user@domain.com” -SearchQuery “Keyword” -TargetMailbox “admin@domain.com” -TargetFolder “SearchResults”

Get-MailboxAutoReplyConfiguration

Este cmdlet recupera as configurações de resposta automática (fora do escritório) para uma caixa de correio.

Syntax

Get-MailboxAutoReplyConfiguration [-Identity] <String>

Exemplo de Uso Comum

  • Obtenha as configurações de resposta automática para um usuário específico:

Get-MailboxAutoReplyConfiguration -Identity “user@domain.com”

Get-Recipient

Este cmdlet recupera todos os destinatários (caixas de correio, grupos, contatos etc.).

Sintaxe

Get-Recipient [-Filter] <String>

Exemplos de Uso Comum

  • Obtenha todos os destinatários:

Get-Recipient

  • Filtrar por tipos específicos de destinatários:

Get-Recipient -RecipientTypeDetails MailUser

Cmdlet Filters

Utilize filtros para refinar os resultados com base em atributos específicos.

Syntax

Os filtros são delimitados por { } e utilizam uma estrutura de propriedade operador valor:

-Filter {Property -Operator ‘Value’}

Exemplo

Get-Mailbox -Filter {DisplayName -like “*Test*”}

Operadores Comuns

  • -eq: Igual
  • -ne: Não igual
  • -like: Correspondência de caracteres curinga (* para zero ou mais caracteres)
  • -notlike: Nega o -like
  • -gt: Maior que
  • -lt: Menos que

Exemplos de Uso de Filtros com Cmdlets

  • Recuperar caixas de correio para um domínio específico

Get-Mailbox -Filter {EmailAddresses -like ‘*@example.com’}

  • Encontre caixas de correio criadas após uma data específica

Get-Mailbox -Filter {WhenCreated -gt ‘2023-01-01’}

  • Obter caixas de correio com padrões de nome de exibição específicos

Get-Mailbox -Filter {DisplayName -like ‘*Test*’}

  • Obter Caixas de Correio Desativadas

Get-Mailbox -Filter {AccountDisabled -eq $true}

Exemplos de Combinação de Múltiplas Condições

Você pode combinar filtros usando operadores lógicos como -and e -or.

  • Obter usuários com UPN específico e nome de exibição

Get-Mailbox -Filter {UserPrincipalName -like ‘*@example.com’ -and DisplayName -like ‘*John*’}

  • Encontre caixas de correio ativadas, mas acima de um limite de tamanho

Get-Mailbox -Filter {AccountDisabled -eq $false -and ProhibitSendQuota -gt 10GB}

Exemplos de Filtragem com Pipeline

Os filtros também podem ser combinados com Where-Object para filtragem avançada.

  • Filtrar caixas de correio por atributo personalizado

Get-Mailbox | Where-Object { $_.CustomAttribute1 -eq ‘Value1’ }

  • Obter Caixas de Correio Ativas com Login nos Últimos 30 Dias

Get-MailboxStatistics | Where-Object { $_.LastLogonTime -gt (Get-Date).AddDays(-30) }

Configurações Avançadas

  • Use Select-Object para refinar a saída e exibir apenas as propriedades relevantes.

Get-Mailbox | Select-Object DisplayName, PrimarySmtpAddress

  • Exporte os resultados para CSV para relatórios.

Get-Mailbox | Export-Csv -Path “Mailboxes.csv” -NoTypeInformation

  • O limite padrão é de 1000 resultados; use -ResultSize Unlimited para buscar todos os itens.

Migrar para o Exchange Online usando o PowerShell

Migrar para o Exchange Online usando o PowerShell envolve várias etapas, incluindo a preparação do ambiente local, a configuração dos pontos de migração e o gerenciamento do processo de migração.

Pré-requisitos

Antes de realizar a migração, certifique-se de que você tem:

  • Uma assinatura ativa do Microsoft 365 ou Office 365 com o Exchange Online.
  • Credenciais de administrador para o seu servidor Exchange local e para o Exchange Online.
  • O módulo Exchange Online PowerShell V2 (EXO V2) está instalado.
  • A configuração do Exchange Online (Hybrid) é estabelecida se utilizando migração híbrida.

Migração Híbrida (para organizações com Exchange local e Exchange Online)

Em um ambiente híbrido, você pode migrar caixas de correio mantendo a coexistência entre caixas de correio locais e baseadas na nuvem.

  1. Instale e configure o Hybrid Configuration Wizard (HCW).

O Assistente de Configuração Híbrida (HCW) é a principal ferramenta para configurar um ambiente Exchange híbrido. Ele garante que seu servidor Exchange local esteja pronto para uma coexistência híbrida com o Exchange Online. Você pode baixar e executá-lo a partir do Centro de Administração do Exchange (EAC).

  • Prepare o servidor Exchange on-premises:
  • Execute o cmdlet Get-ExchangeServer para garantir que a versão correta está sendo utilizada.
  • Execute o cmdlet New-RemoteMailbox para criar uma caixa de correio remota para usuários que estão sendo migrados.
  • Inicie uma migração criando um lote de migração usando o cmdlet New-MigrationBatch:

New-MigrationBatch -Name “MigrationBatch” -SourceEndpoint <OnPremisesExchangeEndpoint> -TargetEndpoint <ExchangeOnlineEndpoint> -MailboxList <MailboxesToMigrate> -AutoStart -AutoComplete

Substitua os espaços reservados:

  • <OnPremisesExchangeEndpoint> – O endpoint para o seu servidor Exchange local
  • <ExchangeOnlineEndpoint> – O endpoint para Exchange Online
  • <MailboxesToMigrate> – A lista de caixas de correio para migrar
  • Para monitorar o processo de migração:

Get-MigrationBatch | Get-MigrationUser

  • Uma vez que a migração estiver concluída, você pode completá-la usando:

Set-MigrationBatch -Identity “MigrationBatch” -Complete

Migração de Cutover (para ambientes pequenos, tipicamente com menos de 150 caixas de correio)

Na migração de cutover, todas as caixas de correio são migradas do Exchange local para o Exchange Online em um único lote.

  1. Utilize o cmdlet New-MigrationEndpoint para criar um endpoint para o servidor Exchange local:

New-MigrationEndpoint -Name “CutoverEndpoint” -ExchangeServer “<OnPremisesExchangeServer>” -Type “ExchangeRemoteMove”

  • Utilize o cmdlet New-MigrationBatch para criar um lote de migração para todas as caixas de correio:

New-MigrationBatch -Name “CutoverMigrationBatch” -SourceEndpoint “CutoverEndpoint” -MailboxList “user1@example.com”, “user2@example.com” -TargetDeliveryDomain “<ExchangeOnlineDomain>” -AutoStart -AutoComplete

  • Utilize o cmdlet Get-MigrationBatch para monitorar a migração:

Get-MigrationBatch “CutoverMigrationBatch” | Get-MigrationUser

  • Após a migração estar completa, você pode concluí-la utilizando o cmdlet Set-MigrationBatch:

Set-MigrationBatch -Identity “CutoverMigrationBatch” -Complete

Migração em Etapas (para ambientes de médio porte)

Na migração por etapas, as caixas de correio são migradas em fases (tipicamente em lotes) do Exchange local para o Exchange Online.

  1. Crie um endpoint para o Exchange on-premises:

New-MigrationEndpoint -Name “StagedEndpoint” -ExchangeServer “<OnPremisesExchangeServer>” -Type “ExchangeRemoteMove”

  • Para migrar caixas de correio em etapas, crie um lote de migração usando o cmdlet New-MigrationBatch:

New-MigrationBatch -Name “StagedMigrationBatch” -SourceEndpoint “StagedEndpoint” -MailboxList “user1@example.com”, “user2@example.com” -TargetDeliveryDomain “<ExchangeOnlineDomain>” -AutoStart -AutoComplete

  • Monitore a migração usando:

Get-MigrationBatch “StagedMigrationBatch” | Get-MigrationUser

  • Uma vez que a migração esteja completa, finalize-a:

Set-MigrationBatch -Identity “StagedMigrationBatch” -Complete

Melhores Práticas de Segurança

Garanta Conexões Seguras

Utilize Métodos de Autenticação Seguros

Aproveite a autenticação moderna com OAuth em vez de autenticação básica. Você também deve habilitar a autenticação multifator (MFA) para todas as contas de usuário que acessam o Exchange Online.

Use Políticas de Acesso Condicional

Configure o Acesso Condicional no Microsoft Entra para impor restrições como localização, conformidade do dispositivo e níveis de risco do usuário. Certifique-se de bloquear ou limitar o acesso de locais desconhecidos ou arriscados.

Limitar o acesso ao PowerShell

Utilize o Controle de Acesso Baseado em Funções (RBAC) para limitar o acesso ao PowerShell apenas aos usuários que necessitam dele. Como precaução adicional, desative o PowerShell remoto para contas que não requerem acesso administrativo.

Exigir criptografia TLS

Garanta que todas as conexões com o Exchange Online utilizem TLS 1.2 ou superior. Você também deve auditar regularmente os sistemas para confirmar a conformidade com os protocolos modernos de criptografia.

Utilize Privileged Access Workstations (PAWs)

Restrinja tarefas administrativas a estações de trabalho seguras e isoladas para reduzir a exposição a malware ou ataques.

Use Secure Application Tokens

Para scripts não supervisionados, substitua as credenciais do usuário por registros de aplicativos seguros no Microsoft Entra ID.

Gerencie Permissões de Usuário e Controle de Acesso no Exchange Online

Implemente o Controle de Acesso Baseado em Funções (RBAC)

Atribua funções predefinidas aos usuários com base no princípio do menor privilégio. Atribua funções amplas como Administrador Global apenas quando absolutamente necessário.

Monitore e revise as permissões regularmente

Audite periodicamente as permissões e remova o acesso desnecessário. Como prática de rotina, utilize relatórios do Microsoft 365 Security & Compliance Center para revisar os registros de acesso.

Separe as Funções Administrativas

Utilize contas separadas para tarefas administrativas e atividades diárias do usuário. Melhor ainda, atribua diferentes funções para diferentes funções administrativas como gerenciamento de caixa de correio e gerenciamento de conformidade.

Use o Acesso Just-in-Time (JIT)

Implemente políticas de JIT access usando Microsoft Entra ID Privileged Identity Management (PIM) para fornecer permissões elevadas temporárias.

Habilite a Auditoria de Caixa de Correio

Habilite a auditoria para todas as caixas de correio para rastrear alterações e detectar acessos não autorizados.

Recomendações para usar o PowerShell com segurança em ambientes de produção

Proteja Seus Scripts

Evite codificar credenciais diretamente; utilize mecanismos de armazenamento seguros como Azure Key Vault ou Windows Credential Manager. Utilize também scripts parametrizados e manipulação segura de entrada para evitar vulnerabilidades de injeção.

Monitore e registre a atividade do PowerShell

Ative o registro do PowerShell (logs de módulo, bloco de script e transcrição). Você também pode integrar o registro com um sistema SIEM para monitoramento em tempo real.

Use Scripts Assinados

Assine scripts do PowerShell com um certificado confiável para garantir a integridade. Para suportar isso, defina a política de execução do PowerShell para AllSigned, pois ela só permite scripts assinados.

Execute o PowerShell com o menor Privileged Access Management possível

Evite usar contas com permissões elevadas desnecessariamente. Em vez disso, use permissões granulares para tarefas específicas.

Mantenha o PowerShell e os Módulos Atualizados

Atualize regularmente o PowerShell para a versão mais recente para tratar vulnerabilidades de segurança. Não apenas isso, atualize também o módulo Exchange Online Management para aproveitar os recursos e correções mais recentes.

Limitar o Acesso à Rede

Restrinja o acesso aos pontos de extremidade do Exchange Online a endereços IP conhecidos usando regras de firewall ou Microsoft Entra ID Named Locations.

Criptografar Dados Sensíveis

Use SecureString ou outros métodos de criptografia para armazenar e transmitir dados sensíveis de forma segura.

Netwrix Auditor for Exchange

Conclusão

O PowerShell para Exchange Online oferece capacidades poderosas para gerenciar e automatizar tarefas administrativas, permitindo que administradores lidem com operações complexas como atualizações em massa de usuários, relatórios e alterações de configuração. Ao adotar autenticação moderna, incluindo OAuth e MFA, as organizações podem garantir o acesso seguro ao Exchange Online. A automação por meio do PowerShell minimiza o esforço manual, reduz erros humanos e melhora a consistência operacional e a escalabilidade em geral.

Para configurações avançadas e aprendizado mais aprofundado, visite a documentação oficial da Microsoft, módulos de treinamento do PowerShell e fóruns da comunidade.

Documentação da Microsoft

FAQs

Como conectar-se ao Exchange Online PowerShell passo a passo?

Conectar ao Exchange Online PowerShell é simples quando você segue a sequência correta. Primeiro, certifique-se de que tem o módulo Exchange Online PowerShell instalado executando Install-Module -Name ExchangeOnlineManagement em uma sessão elevada do PowerShell. Uma vez instalado, use Connect-ExchangeOnline -UserPrincipalName your-admin@domain.com para estabelecer a conexão. Será solicitada a autenticação multifator se estiver habilitada na sua conta. Após a autenticação bem-sucedida, verifique sua conexão com Get-Mailbox -ResultSize 1 para testar a funcionalidade básica. Lembre-se sempre de desconectar usando Disconnect-ExchangeOnline quando terminar para manter as melhores práticas de segurança.

Acesso negado ao Exchange Online PowerShell – como resolver?

Erros de acesso negado geralmente são causados por permissões insuficientes ou problemas de autenticação. Comece verificando se sua conta possui os papéis administrativos necessários do Exchange Online – no mínimo, você precisa das permissões de Administrador do Exchange ou Administrador Global. Se os papéis estiverem corretos, verifique se sua organização utiliza políticas de Acesso Condicional que podem estar bloqueando conexões do PowerShell. Limpe quaisquer credenciais armazenadas usando Remove-StoredCredential e tente reconectar. Para problemas persistentes, certifique-se de que está usando a versão mais recente do módulo ExchangeOnlineManagement, pois versões antigas podem ter problemas de compatibilidade com os requisitos de autenticação modernos.

Não é possível conectar ao Exchange Online PowerShell – quais são as soluções comuns?

Falhas de conexão geralmente se enquadram em três categorias: problemas de autenticação, problemas de rede ou conflitos de módulos. Primeiro, verifique se você está usando a sintaxe correta: Connect-ExchangeOnline -UserPrincipalName em vez de métodos de conexão obsoletos. Verifique sua conectividade de rede e configurações de firewall – Exchange Online requer acesso a endpoints específicos da Microsoft. Se você estiver atrás de um proxy corporativo, configure o PowerShell para usar as configurações do seu proxy. Conflitos de módulos podem ocorrer quando você tem instalados simultaneamente os antigos módulos MSOnline e o novo módulo ExchangeOnlineManagement. Desinstale os módulos legados e fique apenas com o módulo unificado ExchangeOnlineManagement para a experiência mais limpa.

Como instalar o módulo PowerShell do Exchange Online?

Instalar o módulo Exchange Online PowerShell requer apenas um comando, mas acertar nos pré-requisitos é importante. Execute o PowerShell como administrador e execute Install-Module -Name ExchangeOnlineManagement -Force -AllowClobber. O parâmetro -Force garante que você obtenha a versão mais recente, enquanto -AllowClobber lida com quaisquer conflitos com cmdlets existentes. Se você encontrar erros de política de execução, defina temporariamente a política usando Set-ExecutionPolicy RemoteSigned -Scope CurrentUser. Para ambientes onde você não pode modificar políticas de execução, baixe o módulo manualmente do PowerShell Gallery e instale-o usando o método offline. Sempre verifique a instalação executando Get-Module ExchangeOnlineManagement -ListAvailable para confirmar que o módulo está devidamente instalado.

Como se conectar ao Exchange Online PowerShell com MFA?

A autenticação multifator com o Exchange Online PowerShell é simples quando configurada corretamente. O moderno cmdlet Connect-ExchangeOnline lida com MFA automaticamente – basta usar Connect-ExchangeOnline -UserPrincipalName your-admin@domain.com e você será redirecionado para uma janela do navegador para completar a MFA. Para scripts não assistidos ou automação, configure a autenticação baseada em certificado ou use um principal de serviço com Connect-ExchangeOnline -CertificateThumbprint ou Connect-ExchangeOnline -AppId. Evite usar autenticação básica ou senhas de aplicativo, pois a Microsoft está eliminando esses métodos legados. A autenticação moderna não é apenas mais segura – ela também é mais confiável e oferece melhor integração com as políticas de Identity Management da sua organização.p

Compartilhar em

Saiba Mais

Sobre o autor

Asset Not Found

Jonathan Blackwell

Chefe de Desenvolvimento de Software

Desde 2012, Jonathan Blackwell, um engenheiro e inovador, tem fornecido liderança em engenharia que colocou o Netwrix GroupID na vanguarda da gestão de grupos e usuários para ambientes Active Directory e Azure AD. Sua experiência em desenvolvimento, marketing e vendas permite que Jonathan compreenda totalmente o mercado de Identity Management e como os compradores pensam.