Gerenciar o Microsoft 365 (anteriormente Office 365) frequentemente requer PowerShell para operações em massa, automação e acesso a configurações não disponíveis no centro de administração. Este guia abrange a forma moderna de conexão usando o módulo ExchangeOnlineManagement, bem como a conexão a outros serviços do Microsoft 365.

Importante: A Microsoft descontinuou a autenticação básica para o Exchange Online em outubro de 2022. O método legado com New-PSSession não funciona mais. Use o método moderno com módulos descrito abaixo.

Pré-requisitos

  • Windows PowerShell 5.1 ou PowerShell 7+
  • Conta de administrador do Microsoft 365
  • Conectividade com a Internet
  • Módulo PowerShellGet (incluído no Windows 10/11 e Server 2016+)

Instalação dos módulos necessários

Módulo de gerenciamento do Exchange Online

# Instalar o módulo (executar PowerShell como administrador)
Install-Module -Name ExchangeOnlineManagement -Force -AllowClobber

# Ou atualizar se já estiver instalado
Update-Module -Name ExchangeOnlineManagement

# Verificar a instalação
Get-Module -Name ExchangeOnlineManagement -ListAvailable

Outros módulos úteis do Microsoft 365

# Microsoft Graph (substitui os módulos AzureAD e MSOnline)
Install-Module -Name Microsoft.Graph -Force

# Microsoft Teams
Install-Module -Name MicrosoftTeams -Force

# SharePoint Online
Install-Module -Name Microsoft.Online.SharePoint.PowerShell -Force

Conexão ao Exchange Online

Conexão padrão (com suporte MFA)

# Importar módulo
Import-Module ExchangeOnlineManagement

# Conectar — abre uma janela do navegador para autenticação
Connect-ExchangeOnline -UserPrincipalName admin@seudominio.com

Uma janela do navegador se abre para autenticação. Complete sua senha e a verificação MFA.

Conectar sem solicitação de navegador

Para scripts automatizados em ambientes sem navegador disponível:

# Usando autenticação baseada em certificado (recomendado para automação)
Connect-ExchangeOnline -CertificateThumbprint "THUMBPRINT" `
    -AppId "APP-ID" `
    -Organization "seudominio.onmicrosoft.com"

Conectar a um tenant específico (para parceiros/MSPs)

Connect-ExchangeOnline -UserPrincipalName admin@parceiro.com `
    -DelegatedOrganization "tenant-cliente.onmicrosoft.com"

Tarefas de gerenciamento comuns

Uma vez conectado, você pode executar cmdlets do Exchange Online:

Gerenciamento de caixas de correio

# Listar todas as caixas de correio
Get-EXOMailbox -ResultSize Unlimited | Select-Object DisplayName, PrimarySmtpAddress

# Obter uma caixa de correio específica
Get-EXOMailbox -Identity "usuario@seudominio.com" | Format-List

# Obter estatísticas da caixa de correio (tamanho, contagem de itens)
Get-EXOMailboxStatistics -Identity "usuario@seudominio.com" | 
    Select-Object DisplayName, TotalItemSize, ItemCount

# Configurar propriedades da caixa de correio
Set-Mailbox -Identity "usuario@seudominio.com" -MaxReceiveSize 50MB

Grupos de distribuição

# Listar todos os grupos de distribuição
Get-DistributionGroup -ResultSize Unlimited

# Obter membros de um grupo
Get-DistributionGroupMember -Identity "equipe-vendas@seudominio.com"

# Adicionar um membro
Add-DistributionGroupMember -Identity "equipe-vendas" -Member "novousuario@seudominio.com"

Regras de fluxo de correio (regras de transporte)

# Listar todas as regras de transporte
Get-TransportRule | Select-Object Name, State, Priority

# Desabilitar uma regra
Disable-TransportRule -Identity "Nome da regra"

Conexão a outros serviços do Microsoft 365

Microsoft Graph (usuários, grupos, licenças)

Import-Module Microsoft.Graph

# Conectar com permissões específicas
Connect-MgGraph -Scopes "User.Read.All", "Group.ReadWrite.All"

# Listar todos os usuários
Get-MgUser -All | Select-Object DisplayName, UserPrincipalName, AccountEnabled

# Obter informações de licenças
Get-MgSubscribedSku | Select-Object SkuPartNumber, ConsumedUnits, 
    @{N='Total';E={$_.PrepaidUnits.Enabled}}

Microsoft Teams

Import-Module MicrosoftTeams

Connect-MicrosoftTeams

# Listar todas as equipes
Get-Team | Select-Object DisplayName, GroupId, Visibility

Desconectar sessões

Sempre desconecte ao finalizar para liberar recursos:

# Desconectar Exchange Online
Disconnect-ExchangeOnline -Confirm:$false

# Desconectar Microsoft Graph
Disconnect-MgGraph

# Desconectar Teams
Disconnect-MicrosoftTeams

Método legado (não funciona mais)

Como referência histórica, este era o método antigo de conexão. Parou de funcionar em outubro de 2022 quando a Microsoft desabilitou a autenticação básica:

# DESCONTINUADO — NÃO USAR
$cred = Get-Credential
$session = New-PSSession -ConfigurationName Microsoft.Exchange `
    -ConnectionUri https://ps.outlook.com/powershell/ `
    -Credential $cred -Authentication Basic -AllowRedirection
Import-PSSession $session -Prefix o365

Se você ainda tem scripts usando este método, atualize-os para usar Connect-ExchangeOnline.

Solução de problemas

Módulo não encontrado

# Atualizar PowerShellGet primeiro
Install-Module -Name PowerShellGet -Force
# Depois tentar novamente a instalação do ExchangeOnlineManagement

Acesso negado

Certifique-se de que sua conta tenha as funções de administrador necessárias:

  • Exchange Administrator para gerenciamento de caixas de correio
  • Global Administrator para acesso completo
  • Security Administrator para recursos de conformidade

Timeout de conexão atrás de proxy

Connect-ExchangeOnline -UserPrincipalName admin@seudominio.com `
    -PSSessionOption (New-PSSessionOption -ProxyAccessType IEConfig)

Resumo

A forma moderna de gerenciar o Microsoft 365 via PowerShell é o módulo ExchangeOnlineManagement com Connect-ExchangeOnline. Suporta MFA, é mantido ativamente pela Microsoft e substitui o método descontinuado de autenticação básica. Para o gerenciamento de usuários e grupos fora do Exchange, use o módulo Microsoft.Graph.

Artigos relacionados