Sobre o módulo Exchange Online PowerShell

O módulo Exchange Online PowerShell usa autenticação moderna e funciona com ou sem MFA (autenticação multifator) para se conectar a todos os ambientes do PowerShell relacionados ao Exchange no Microsoft 365: Exchange Online PowerShell, Security & Compliance PowerShell e EOP (Proteção do Exchange Online autônomo) Powershell.

Para obter instruções de conexão usando o módulo, consulte os seguintes artigos:

O restante deste artigo explica como o módulo funciona, como instalar e manter o módulo e os cmdlets otimizados do Exchange Online que estão disponíveis no módulo.

Dica

A versão 3.0.0 e posterior (2022) é conhecida como o módulo Exchange Online PowerShell V3 (abreviado como o módulo EXO V3). A versão 2.0.5 e anterior (2021) era conhecida como o módulo Exchange Online PowerShell V2 (abreviado como o módulo EXO V2).

Conexões de API REST no módulo EXO V3

Todos os cmdlets disponíveis no Exchange Online PowerShell e o Security & Compliance PowerShell são apoiados por uma API REST com base na versão do módulo EXO V3:

  • Exchange Online PowerShell: v3.0.0 ou posterior.
  • Segurança & PowerShell de Conformidade: v3.2.0 ou posterior.

Em Exchange Online PowerShell e no PowerShell de Conformidade do & de Segurança, as conexões de API REST são usadas por padrão e exigem os módulos PowerShellGet e PackageManagement. Para obter mais informações, consulte PowerShellGet para conexões baseadas em REST no Windows.

Os cmdlets de API REST têm as seguintes vantagens sobre seus equivalentes históricos:

  • Mais seguros: os cmdlets da API REST têm suporte interno para autenticação moderna e não dependem da sessão remota do PowerShell, portanto, o PowerShell no computador cliente não precisa de autenticação básica no WinRM.
  • Mais confiável: os cmdlets da API REST lidam com falhas transitórias com repetições internas, portanto, falhas ou atrasos são minimizados. Por exemplo:
    • Falhas devido a atrasos na rede.
    • Atrasos devido a consultas grandes que levam muito tempo para serem concluídas.
  • Melhor desempenho: a conexão evita configurar um runspace do PowerShell.

Os benefícios dos cmdlets da API REST são descritos na tabela a seguir:

  Cmdlets remotos do PowerShell Cmdlets Get-EXO* Cmdlets de API REST
Segurança Menos seguro Altamente seguro Altamente seguro
Desempenho Baixo desempenho Alto desempenho Desempenho médio
Confiabilidade Menos confiável Altamente confiável Altamente confiável
Funcionalidade Todos os parâmetros e propriedades de saída disponíveis Parâmetros limitados e propriedades de saída disponíveis Todos os parâmetros e propriedades de saída disponíveis

Os cmdlets de API REST têm os mesmos nomes de cmdlet e funcionam como seus equivalentes remotos do PowerShell, portanto, você não precisa atualizar nenhum dos scripts.

Dica

O cmdlet Invoke-Command não funciona em conexões de API REST. Para obter alternativas, consulte Soluções alternativas para cenários de Invoke-Command em conexões de API REST.

As conexões básicas de autenticação (Remote PowerShell) são preteridas em Exchange Online PowerShell e Security & Compliance PowerShell. Para obter mais informações, confira aqui e aqui.

Alguns cmdlets da API REST no PowerShell do Exchange Online foram atualizados com a opção experimental UseCustomRouting. Essa opção roteia o comando diretamente para o servidor de Caixa de Correio necessário e pode melhorar o desempenho geral.

  • Ao usar a opção UseCustomRouting, você pode usar apenas os seguintes valores para identidade da caixa de correio:

    • Nome principal do usuário (UPN)
    • Endereço de email
    • GUID da Caixa de Correio
  • A opção UseCustomRouting está disponível apenas nos seguintes cmdlets da API REST no PowerShell do Exchange Online:

    • Get-Clutter
    • Get-FocusedInbox
    • Get-InboxRule
    • Get-MailboxAutoReplyConfiguration
    • Get-MailboxCalendarFolder
    • Get-MailboxFolderPermission
    • Get-MailboxFolderStatistics
    • Get-MailboxMessageConfiguration
    • Get-MailboxPermission
    • Get-MailboxRegionalConfiguration
    • Get-MailboxStatistics
    • Get-MobileDeviceStatistics
    • Get-UserPhoto
    • Remove-CalendarEvents
    • Set-Clutter
    • Set-FocusedInbox
    • Set-MailboxRegionalConfiguration
    • Set-UserPhoto

    Use a opção UseCustomRouting experimentalmente e informe quaisquer problemas que encontrar.

  • Use o cmdlet Get-ConnectionInformation para obter informações sobre conexões baseadas em REST para Exchange Online PowerShell e Segurança & Conformidade do PowerShell. Esse cmdlet é necessário porque o cmdlet Get-PSSession no Windows PowerShell não retorna informações para conexões baseadas em REST.

    Cenários em que você pode usar Get-ConnectionInformation são descritos na seguinte tabela:

    Cenário Saída esperada
    Execute antes de um comando Connect-ExchangeOnline ou Connect-IPPSSession . Retornará nothing.
    Execute após o comando Connect-ExchangeOnline ou Connect-IPPSSession que se conecta no modo de API REST. Retorna um objeto de informações de conexão.
    Execute após vários comandos Connect-ExchangeOnline ou Connect-IPPSSession baseados em REST. Retorna uma coleção de objetos de informações de conexão.
  • Use a opção SkipLoadingFormatData no cmdlet Connect-ExchangeOnline para evitar carregar dados de formato e executar comandos Connect-ExchangeOnline mais rapidamente.

  • Os cmdlets apoiados pela API REST têm um tempo limite de 15 minutos, o que pode afetar as operações em massa. Por exemplo, o seguinte comando Update-DistributionGroupMember para atualizar 10.000 membros de um grupo de distribuição pode ter um tempo limite:

    $Members = @("member1","member2",...,"member10000")
    
    Update-DistributionGroupMember -Identity DG01 -Members $Members
    

    Em vez disso, use o comando Update-DistributionGroupMember para atualizar menos membros e adicione os membros restantes individualmente usando um comando Add-DistributionGroupMember . Por exemplo:

    Update-DistributionGroupMember -Identity DG01 -Members $Members[0..4999]
    
    $Remaining = $Members[-5000..-1]
    
    foreach ($Member in $Remaining)
    
    {
       Add-DistributionGroupMember -Identity DG01 -Member $Member
    }
    

Para obter informações adicionais sobre as novidades no módulo EXO V3, consulte a seção Notas de versão mais adiante neste artigo.

Relatar bugs e problemas para o módulo Exchange Online PowerShell

Observação

Para versões ga (disponibilidade geral) do módulo, abra um tíquete de suporte para quaisquer problemas que você esteja tendo. Para versões prévias do módulo, use o endereço de email conforme descrito nesta seção. Você também pode usar o endereço de email para comentários e sugestões para versões ga e versão prévia do módulo.

Ao relatar um problema no exocmdletpreview[at]service[dot]microsoft[dot]com, certifique-se de incluir os arquivos de log na sua mensagem de e-mail. Para gerar os arquivos de log, substitua <Caminho para armazenar o arquivo> de log pela pasta de saída desejada e execute o seguinte comando:

Connect-ExchangeOnline -EnableErrorReporting -LogDirectoryPath <Path to store log file> -LogLevel All

Observação

O uso frequente dos cmdlets Connect-ExchangeOnline e Disconnect-ExchangeOnline em uma única sessão ou script do PowerShell pode levar a um vazamento de memória. A melhor maneira de evitar esse problema é usar o parâmetro CommandName no cmdlet Connect-ExchangeOnline para limitar os cmdlets usados na sessão.

Cmdlets no módulo Exchange Online PowerShell

Todas as versões do módulo contêm nove cmdlets get-EXO* exclusivos para Exchange Online PowerShell otimizados para velocidade em cenários de recuperação de dados em massa (milhares e milhares de objetos). Os cmdlets do PowerShell Exchange Online aprimorados que estão disponíveis apenas no módulo estão listados na tabela a seguir:

Cmdlet do módulo EXO Cmdlet relacionado mais antigo:
Get-EXOMailbox Get-Mailbox
Get-EXORecipient Get-Recipient
Get-EXOCasMailbox Get-CASMailbox
Get-EXOMailboxPermission Get-MailboxPermission
Get-EXORecipientPermission Get-RecipientPermission
Get-EXOMailboxStatistics Get-MailboxStatistics
Get-EXOMailboxFolderStatistics Get-MailboxFolderStatistics
Get-EXOMailboxFolderPermission Get-MailboxFolderPermission
Get-EXOMobileDeviceStatistics Get-MobileDeviceStatistics

Observação

Se você abrir várias conexões para Exchange Online PowerShell na mesma janela, os cmdlets Get-EXO* sempre serão associados à última (mais recente) conexão do PowerShell Exchange Online. Execute o seguinte comando para encontrar a sessão de API REST em que os cmdlets Get-EXO* são executados: Get-ConnectionInformation | Where-Object {$_.ConnectionUsedForInbuiltCmdlets -eq $true}.

Os cmdlets relacionados à conexão no módulo são listados na seguinte tabela:

Cmdlet do módulo EXO Cmdlet relacionado mais antigo: Comments
Connect-ExchangeOnline Connect-EXOPSSession na V1 do módulo
ou
New-PSSession
Connect-IPPSSession Connect-IPPSSession na V1 do módulo
Disconnect-ExchangeOnline Remove-PSSession
Get-ConnectionInformation Get-PSSession Disponível em v3.0.0 ou posterior.

Cmdlets de Exchange Online diversos que estão no módulo estão listados na tabela a seguir:

Cmdlet Comments
Get-DefaultTenantBriefingConfig Disponível em v3.2.0 ou posterior.
Set-DefaultTenantBriefingConfig Disponível em v3.2.0 ou posterior.
Get-DefaultTenantMyAnalyticsFeatureConfig Disponível em v3.2.0 ou posterior.
Set-DefaultTenantMyAnalyticsFeatureConfig Disponível em v3.2.0 ou posterior.
Get-MyAnalyticsFeatureConfig Disponível na v2.0.4 ou posterior.
Set-MyAnalyticsFeatureConfig Disponível na v2.0.4 ou posterior.
Get-UserBriefingConfig Substituído por Get-MyAnalyticsFeatureConfig.
Set-UserBriefingConfig Substituído por Set-MyAnalyticsFeatureConfig.
Get-VivaInsightsSettings Disponível na versão v2.0.5-Preview2 ou posterior.
Set-VivaInsightsSettings Disponível na versão v2.0.5-Preview2 ou posterior.
Get-VivaModuleFeature Disponível em v3.2.0 ou posterior.
Get-VivaModuleFeatureEnablement Disponível em v3.2.0 ou posterior.
Add-VivaModuleFeaturePolicy Disponível em v3.2.0 ou posterior.
Get-VivaModuleFeaturePolicy Disponível em v3.2.0 ou posterior.
Remove-VivaModuleFeaturePolicy Disponível em v3.2.0 ou posterior.
Update-VivaModuleFeaturePolicy Disponível em v3.2.0 ou posterior.

Instalar e manter o módulo Exchange Online PowerShell

Baixe o módulo da galeria do PowerShell em https://www.powershellgallery.com/packages/ExchangeOnlineManagement/.

Os procedimentos nesta seção explicam como instalar, atualizar e desinstalar o módulo.

Sistemas operacionais com suporte para o módulo Exchange Online PowerShell

As versões mais recentes do módulo têm suporte oficial no PowerShell 7 no Windows, Linux e MacOS da Apple.

Especificamente, a versão 2.0.4 ou posterior tem suporte no PowerShell 7.0.3 ou posterior.

Para mais informações sobre o Windows PowerShell 7, consulte Anunciando o PowerShell 7.0.

Apple macOS

O módulo tem suporte nas seguintes versões do macOS:

  • macOS 11 Big Sur ou posterior
  • macOS 10.15 Catalina
  • macOS 10.14 Mojave

Para instruções sobre como instalar o Windows PowerShell 7 no macOS, consulte Instalando o PowerShell no macOS.

Observação

Conforme descrito no artigo de instalação, você precisa instalar o OpenSSL, que é necessário para o WSMan.

Depois de instalar o PowerShell 7 e o OpenSSL, execute as seguintes etapas:

  1. Execute o PowerShell como super usuário: sudo pwsh

  2. Na sessão do super usuário do PowerShell, execute os seguintes comandos:

    Install-Module -Name PSWSMan
    
    Install-WSMan
    

    Se solicitado, aceite PSGallery como a origem dos cmdlets.

Agora você pode fazer os pré-requisitos regulares do PowerShell e instalar o módulo Exchange Online PowerShell.

Linux

O módulo tem suporte oficial nas seguintes distribuições do Linux:

  • Ubuntu 18.04 LTS
  • Ubuntu 20.04 LTS

Se você tiver problemas para usar o módulo em outras distribuições do Linux, denuncie quaisquer problemas.

Para instruções sobre como instalar o Windows PowerShell 7 no Linux, consulte Instalando o PowerShell no Linux.

Depois de instalar o PowerShell 7, execute as seguintes etapas:

  1. Execute o PowerShell como super usuário: sudo pwsh

  2. Na sessão do super usuário do PowerShell, execute os seguintes comandos:

    Install-Module -Name PSWSMan
    
    Install-WSMan
    

    Se solicitado, aceite PSGallery como a origem dos cmdlets.

Agora você pode fazer os pré-requisitos regulares do PowerShell e instalar o módulo Exchange Online PowerShell.

Observação

Se você se conectar ao Exchange Online PowerShell de uma rede que está por trás de um servidor proxy, o módulo EXO V2 (versão v2.0.5 ou anterior) não funcionará no Linux. Você precisa usar o módulo EXO V3 (v3.0.0 ou posterior) no Linux para se conectar a partir de uma rede que está por trás de um servidor proxy.

Windows

Todas as versões do módulo têm suporte no Windows PowerShell 5.1.

O PowerShell 7 no Windows requer a versão 2.0.4 ou posterior.

A versão 2.0.5 ou posterior do módulo requer que o Microsoft .NET Framework 4.7.2 ou posterior para se conectar. Caso contrário, você receberá um System.Runtime.InteropServices.OSPlatform erro. Esse requisito não deve ser um problema nas versões atuais do Windows. Para obter mais informações sobre versões do Windows que dão suporte ao .NET Framework 4.7.2, confira este artigo.

Windows PowerShell requisitos e suporte ao módulo em versões mais antigas do Windows são descritos na lista a seguir:

  • Windows 8.1¹

  • Windows Server 2012 ou Windows Server 2012 R2¹

  • Windows 7 Service Pack 1 (SP1)² ³ ⁴

  • Windows Server 2008 R2 SP1² ³ ⁴

  • ¹ O PowerShell 7 nesta versão do Windows requer o Windows 10 CRT (Universal C Runtime).

  • ² Essa versão do Windows chegou ao fim do suporte e agora tem suporte apenas em máquinas virtuais do Azure.

  • ³ Esta versão do Windows dá suporte apenas a versões v2.0.3 ou anteriores do módulo.

  • ⁴ Windows PowerShell 5.1 nesta versão do Windows requer o .NET Framework 4.5 ou posterior e o Windows Management Framework 5.1. Para mais informações, consulte Windows Management Framework 5.1.

Pré-requisitos para o módulo Exchange Online PowerShell

Defina a política de execução do PowerShell como RemoteSigned

Observação

As configurações nesta seção se aplicam a todas as versões do PowerShell em todos os sistemas operacionais.

Windows PowerShell precisa ser configurado para executar scripts e, por padrão, não é. Você receberá o seguinte erro ao tentar se conectar:

Não é possível carregar arquivos porque a execução de scripts está desabilitada neste sistema. Forneça um certificado válido para assinar os arquivos.

Para exigir que todos os scripts do PowerShell baixados da Internet sejam assinados por um editor confiável, execute o seguinte comando em uma janela elevada do PowerShell (uma janela do PowerShell que você abre selecionando Executar como administrador):

Set-ExecutionPolicy RemoteSigned

Para obter mais informações sobre as políticas de execução, confira Sobre Políticas de Execução.

Ativar a autenticação básica no WinRM

Observação

As conexões baseadas em REST não exigem autenticação básica no WinRM, conforme descrito nesta seção. Conforme descrito anteriormente neste artigo, o acesso de autenticação básica (PowerShell remoto) a Exchange Online PowerShell e Segurança & Conformidade do PowerShell são preteridos. As informações nesta seção são mantidas para fins históricos.

Para conexões remotas do PowerShell que não usam a API REST (que agora são impossíveis), o WinRM precisa permitir a autenticação básica. Não enviamos a combinação de nome de usuário e senha. O cabeçalho de autenticação básica é necessário para enviar o token OAuth da sessão, pois a implementação do WinRM no lado do cliente não dá suporte ao OAuth.

Para verificar se a autenticação básica está habilitada para WinRM, execute o seguinte comando em um Prompt de comando ou Windows PowerShell:

Observação

Os seguintes comandos exigem que o WinRM esteja habilitado. Para habilitar o WinRM, execute o seguinte comando: winrm quickconfig.

winrm get winrm/config/client/auth

Se você não vir o valor Basic = true, precisará executar um dos seguintes comandos para habilitar a autenticação básica para WinRM:

  • Em um Prompt de comando:

    winrm set winrm/config/client/auth @{Basic="true"}
    
  • Em Windows PowerShell:

    winrm set winrm/config/client/auth '@{Basic="true"}'
    
  • Em Windows PowerShell para modificar o registro:

    Set-ItemProperty -Path 'HKLM:\SOFTWARE\Policies\Microsoft\Windows\WinRM\Client' -Name 'AllowBasic' -Type DWord -Value '1'
    

Se a autenticação básica do WinRM estiver desabilitada, você receberá um dos seguintes erros ao tentar se conectar usando uma conexão do PowerShell (autenticação básica remota):

O cliente WinRM não pode processar a solicitação. No momento, a autenticação básica está desabilitada na configuração do cliente. Altere a configuração do cliente e tente a solicitação novamente.

Falha ao criar Sessão do Powershell usando OAuth.

PowerShellGet para conexões baseadas em REST no Windows

As conexões baseadas em REST no Windows exigem o módulo PowerShellGet e, por dependência, o módulo PackageManagement. Consideração para esses módulos é mais para o PowerShell 5.1 do que o PowerShell 7, mas todas as versões do PowerShell se beneficiam de ter as versões mais recentes dos módulos instalados. Para obter instruções de instalação e atualização, consulte Instalando o PowerShellGet no Windows.

Observação

Versões beta dos módulos PackageManagement ou PowerShellGet podem causar problemas de conexão. Se você tiver problemas de conexão, verifique se não tem versões Beta dos módulos instalados executando o seguinte comando: Get-InstalledModule PackageManagement -AllVersions; Get-InstalledModule PowerShellGet -AllVersions.

Se você não tiver o PowerShellGet instalado ao tentar criar uma conexão baseada em REST, receberá o seguinte erro ao tentar se conectar:

Não é possível encontrar um cmdlet Update-Manifest

Instalar o módulo Exchange Online PowerShell

Para instalar o módulo pela primeira vez, conclua as seguintes etapas:

  1. Instale ou atualize o módulo PowerShellGet conforme descrito em Instalando o PowerShellGet.

  2. Feche e abra novamente a janela do Windows PowerShell.

  3. Agora você pode usar o cmdlet Install-Module para instalar o módulo do Galeria do PowerShell. Normalmente, você deseja a versão pública mais recente do módulo, mas também pode instalar uma versão preview se houver alguma disponível.

    • Para instalar a versão pública mais recente do módulo, execute um dos seguintes comandos:

      • Em uma janela elevada do PowerShell (todos os usuários):

        Install-Module -Name ExchangeOnlineManagement
        
      • Somente para a conta do usuário atual:

        Install-Module -Name ExchangeOnlineManagement -Scope CurrentUser
        
    • Para ver as versões de visualização disponíveis do módulo, execute o seguinte comando:

      Find-Module ExchangeOnlineManagement -AllVersions -AllowPrerelease
      
    • Para instalar a versão prévia mais recente disponível do módulo, execute um dos seguintes comandos:

      • Em uma janela elevada do PowerShell (todos os usuários):

        Install-Module -Name ExchangeOnlineManagement -AllowPrerelease
        
      • Somente para a conta do usuário atual:

        Install-Module -Name ExchangeOnlineManagement -Scope CurrentUser -AllowPrerelease
        
    • Para instalar uma versão prévia específica do módulo, substitua <PreviewVersion> pelo valor necessário e execute um dos seguintes comandos:

      • Em uma janela elevada do PowerShell (todos os usuários):

        Install-Module -Name ExchangeOnlineManagement -RequiredVersion <PreviewVersion> -AllowPrerelease
        
      • Somente para a conta do usuário atual:

        Install-Module -Name ExchangeOnlineManagement -RequiredVersion <PreviewVersion> -AllowPrerelease -Scope CurrentUser
        

    Quando terminar, insira Y para aceitar o contrato de licença.

Para obter informações detalhadas sobre sintaxes e parâmetros, confira Install-Module.

Atualizar o módulo Exchange Online PowerShell

Se o módulo já estiver instalado em seu computador, você poderá usar os procedimentos nesta seção para atualizar o módulo.

  1. Para ver a versão do módulo atualmente instalado e onde ele está instalado, execute o seguinte comando:

    Get-InstalledModule ExchangeOnlineManagement | Format-List Name,Version,InstalledLocation
    

    Se o módulo estiver instalado em C:\Program Files\WindowsPowerShell\Modules, ele será instalado para todos os usuários. Se o módulo estiver instalado na pasta Documentos, ele será instalado apenas para a conta de usuário atual.

  2. Você pode usar o cmdlet Update-Module para atualizar o módulo do Galeria do PowerShell. Normalmente, você deseja a versão pública mais recente do módulo, mas também pode atualizar para uma versão preview se houver alguma disponível.

    • Para atualizar para a versão pública mais recente do módulo, execute um dos seguintes comandos com base em como você instalou originalmente o módulo (todos os usuários versus somente para a conta de usuário atual):

      • Em uma janela elevada do PowerShell (todos os usuários):

        Update-Module -Name ExchangeOnlineManagement
        
      • Somente para a conta do usuário atual:

        Update-Module -Name ExchangeOnlineManagement -Scope CurrentUser
        
    • Para atualizar para uma versão de Pré-visualização do módulo, você pode atualizar para a versão de Pré-visualização mais recente disponível ou pode usar o parâmetro RequiredVersion para atualizar para uma versão de Pré-visualização específica.

      • Para ver as versões de visualização disponíveis do módulo, execute o seguinte comando:

        Find-Module ExchangeOnlineManagement -AllVersions -AllowPrerelease
        
      • Para atualizar para a versão prévia mais recente disponível do módulo, execute um dos seguintes comandos:

        • Em uma janela elevada do PowerShell (todos os usuários):

          Update-Module -Name ExchangeOnlineManagement -AllowPrerelease
          
        • Somente para a conta do usuário atual:

          Update-Module -Name ExchangeOnlineManagement -Scope CurrentUser -AllowPrerelease
          
      • Para atualizar para uma versão prévia específica do módulo, substitua <PreviewVersion> pelo valor necessário e execute um dos seguintes comandos:

        • Em uma janela elevada do PowerShell (todos os usuários):

          Update-Module -Name ExchangeOnlineManagement -RequiredVersion <PreviewVersion> -AllowPrerelease
          
        • Somente para a conta do usuário atual:

          Update-Module -Name ExchangeOnlineManagement -Scope CurrentUser -RequiredVersion <PreviewVersion> -AllowPrerelease
          

    Quando terminar, insira Y para aceitar o contrato de licença.

  3. Para confirmar se a atualização foi bem-sucedida, execute os seguintes comandos para verificar as informações da versão do módulo instalada:

    Import-Module ExchangeOnlineManagement; Get-Module ExchangeOnlineManagement
    

Para obter informações detalhadas sobre sintaxes e parâmetros, confira Update-Module.

Solucionar problemas da instalação do módulo Exchange Online PowerShell

  • Você recebe um dos seguintes erros:

    O módulo especificado 'ExchangeOnlineManagement' com o PowerShellGetFormatVersion '<version>' não tem suporte na versão atual do PowerShellGet. Obtenha a versão mais recente do módulo PowerShellGet para instalar esse módulo, "ExchangeOnlineManagement".

    AVISO: não é possível baixar do URI 'https://go.microsoft.com/fwlink/?LinkID=627338& clcid=0x409' para ''.

    AVISO: Não é possível baixar a lista de provedores disponíveis. Verifique sua conexão com a internet.

    Atualize a instalação do módulo PowerShellGet para a versão mais recente, conforme descrito em Instalando o PowerShellGet. Certifique-se de fechar e reabrir a janela do Windows PowerShell antes de tentar atualizar o módulo ExchangeOnlineManagement novamente.

  • Em abril de 2020, a Galeria do Windows PowerShell só oferece suporte a conexões usando TLS 1.2 ou posterior. Para obter mais informações, confira Suporte a TLS da galeria do Windows PowerShell.

    Para verificar suas configurações atuais no Microsoft .NET Framework, execute o seguinte comando no Windows PowerShell:

    [Net.ServicePointManager]::SecurityProtocol
    

    Conforme descrito no artigo de Suporte TLS da Galeria do PowerShell, para alterar temporariamente o protocolo de segurança para TLS 1.2 para instalar os módulos PowerShellGet ou ExchangeOnlineManagement, execute o seguinte comando no Windows PowerShell antes de instalar o módulo:

    [Net.ServicePointManager]::SecurityProtocol = [Net.SecurityProtocolType]::Tls12
    

    Para habilitar permanentemente a criptografia forte no Microsoft .NET Framework versão 4.x ou posterior, execute um dos seguintes comandos com base na arquitetura do Windows:

    • x64:

      Set-ItemProperty -Path 'HKLM:\SOFTWARE\Wow6432Node\Microsoft\.NETFramework\v4.0.30319' -Name 'SchUseStrongCrypto' -Type DWord -Value '1'
      
    • x86:

      Set-ItemProperty -Path 'HKLM:\SOFTWARE\Microsoft\.NETFramework\v4.0.30319' -Name 'SchUseStrongCrypto' -Type DWord -Value '1'
      

    Para obter mais informações, confira SchUseStrongCrypto.

  • Você recebe o seguinte erro:

    Nenhuma correspondência foi encontrada para os critérios de pesquisa especificados e o nome do módulo 'ExchangeOnlineManagement'. Tente executar Get-PSRepository para ver todos os repositórios de módulos registrados disponíveis.

    O repositório padrão para módulos do PowerShell não está definido como PSGallery. Para corrigir esse erro, execute o seguinte comando:

    Register-PSRepository -Default
    

Desinstalar o módulo Exchange Online PowerShell

Para ver a versão do módulo atualmente instalado e onde ele está instalado, execute o seguinte comando:

Get-InstalledModule ExchangeOnlineManagement | Format-List Name,Version,InstalledLocation

Se o módulo estiver instalado em C:\Arquivos de Programas\WindowsPowerShell\Modules, ele será instalado para todos os usuários. Se o módulo estiver instalado na pasta Documentos, ele será instalado apenas para a conta de usuário atual.

Para desinstalar o módulo, execute o comando a seguir em um dos seguintes ambientes com base em como você instalou originalmente o módulo (todos os usuários versus somente para a conta de usuário atual):

  • Em uma janela do PowerShell elevada (todos os usuários).

  • Em uma janela normal do PowerShell (somente para a conta de usuário atual).

    Uninstall-Module -Name ExchangeOnlineManagement
    

Para obter informações detalhadas sobre sintaxes e parâmetros, confira Uninstall-Module.

Propriedades e conjuntos de propriedades no módulo Exchange Online PowerShell

Cmdlets Exchange Online tradicionais retornam todas as propriedades possíveis do objeto em sua saída, incluindo muitas propriedades que geralmente estão em branco ou não estão interessadas em muitos cenários. Esse comportamento causa um desempenho degradado (mais computação de servidor e carregamento de rede adicionado). Você raramente (ou nunca) precisará do complemento total de propriedades na saída do cmdlet.

Os cmdlets Get-EXO* no módulo categorizaram as propriedades de saída. Em vez de dar a todas as propriedades a mesma importância e devolvê-las em todos os cenários, categorizamos as propriedades relacionadas específicas em conjuntos de propriedades. Em suma, esses conjuntos de propriedades são classificações de duas ou mais propriedades relacionadas no cmdlet.

Os maiores e mais usados cmdlets Get-EXO* usam conjuntos de propriedades:

Nesses cmdlets, os conjuntos de propriedades são controlados pelos seguintes parâmetros:

Você pode usar os parâmetros PropertySets e Properties em conjunto no mesmo comando.

Também incluímos um conjunto de propriedades mínimo que inclui um conjunto mínimo de propriedades necessárias para a saída do cmdlet (por exemplo, propriedades de identidade). As propriedades nos conjuntos de propriedades mínimas também são descritas em conjuntos de propriedades em cmdlets do módulo Exchange Online PowerShell.

  • Se você não usar os parâmetros PropertySets ou Properties, obterá automaticamente as propriedades no conjunto de propriedades Mínimo.
  • Se você usar os parâmetros PropertySets ou Properties, obterá as propriedades especificadas e as propriedades no conjunto de propriedades Mínimo.

De qualquer forma, a saída do cmdlet contém muito menos propriedades e o tempo necessário para retornar esses resultados é muito mais rápido.

Por exemplo, depois de conectar-se ao PowerShell do Exchange Online, o exemplo a seguir retorna apenas as propriedades no conjunto de propriedades mínimo para as dez primeiras caixas de correio.

Get-EXOMailbox -ResultSize 10

Por outro lado, a saída do mesmo comando Get-Mailbox retornaria pelo menos 230 propriedades para cada uma das dez primeiras caixas de correio.

Observação

Embora o parâmetro PropertySets aceite o valor All, não é recomendável usar esse valor para recuperar todas as propriedades, porque ele torna o comando mais lento e reduz a confiabilidade. Use sempre os parâmetros PropertySets e Properties para recuperar o número mínimo de propriedades necessárias para o seu cenário.

Para obter mais informações sobre filtragem no módulo, consulte Filtros no módulo Exchange Online PowerShell.

Notas de versão

A menos que seja observado de outra forma, a versão atual do módulo Exchange Online PowerShell contém todos os recursos das versões anteriores.

Versão atual

Versão 3.4.0

  • Correções de bug no Connect-ExchangeOnline, Get-EXORecipientPermission e Get-EXOMailboxFolderPermission.
  • O parâmetro THe SigningCertificate no Connect-ExchangeOnline agora dá suporte ao CLM (Modo de Linguagem Restrita).

Versões anteriores

Versão 3.3.0

  • Parâmetro SkipLoadingCmdletHelp no Connect-ExchangeOnline para dar suporte a ignorar o carregamento de arquivos de ajuda de cmdlet.
  • A variável global EXO_LastExecutionStatus está disponível para marcar o status do último cmdlet executado.
  • Correções de bugs em Connect-ExchangeOnline e Connect-IPPSSession.
  • Parâmetro IsUserControlEnabled em Add-VivaModuleFeaturePolicy e Update-VivaModuleFeaturePolicy para dar suporte à habilitação de controles de usuário por política para recursos integrados ao gerenciamento de acesso de recursos Viva.

Versão 3.2.0

  • Novos cmdlets:
    • Get-DefaultTenantBriefingConfig e Set-DefaultTenantBriefingConfig.
    • Get-DefaultTenantMyAnalyticsFeatureConfig e Set-DefaultTenantMyAnalyticsFeatureConfig.
    • Get-VivaModuleFeature, Get-VivaModuleFeatureEnablement, Add-VivaModuleFeaturePolicy, Get-VivaModuleFeaturePolicy, Remove-VivaModuleFeaturePolicy e Update-VivaModuleFeaturePolicy.
  • Suporte à conexão da API REST para o PowerShell da Central de Conformidade do & de Segurança.
  • Parâmetro ConnectionId em Get-ConnectionInformation e Disconnect-ExchangeOnline:
    • Obtenha informações de conexão para conexões de API REST específicas.
    • Desconexão seletiva para conexões de API REST.
  • O parâmetro SigningCertificate no Connect-ExchangeOnline permite que você assine os arquivos de formato (*. Format.ps1xml) ou arquivos de módulo de script (.psm1) no módulo temporário que o Connect-ExchangeOnline cria com um certificado de cliente a ser usado em todas as políticas de execução do PowerShell.
  • Correções de bug no Connect-ExchangeOnline.

Versão 3.1.0

  • Parâmetro AccessToken disponível no Connect-ExchangeOnline.
  • Correções de bugs em Connect-ExchangeOnline e Get-ConnectionInformation.
  • Correção de bug no Connect-IPPSSession para se conectar ao PowerShell de conformidade do & de segurança usando CertificateThumbprint.

Versão 3.0.0 (versões prévias conhecidas como v2.0.6-PreviewX)

  • Recursos já descritos nas conexões de API REST na seção módulo EXO V3 :
    • Autenticação baseada em certificado para Segurança & Conformidade do PowerShell (versão 2.0.6-Preview5 ou posterior).
    • O cmdlet Get-ConnectionInformation para conexões baseadas em REST (versão 2.0.6-Preview7 ou posterior).
    • A opção SkipLoadingFormatData no cmdlet Connect-ExchangeOnline para conexões baseadas em REST (versão 2.0.6-Preview8 ou posterior).
  • O parâmetro DelegatedOrganization funciona no cmdlet Connect-IPPSSession desde que você também use o parâmetro AzureADAuthorizationEndpointUri no comando.
  • Determinados cmdlets usados para solicitar confirmação em cenários específicos não o fazem mais. Por padrão, o cmdlet é executado até a conclusão.
  • O formato do erro retornado da execução de cmdlet com falha foi ligeiramente modificado. A exceção agora contém dados adicionais (por exemplo, o tipo de exceção) e FullyQualifiedErrorId o não contém o FailureCategory. O formato do erro está sujeito a modificações adicionais.

Versão 2.0.5

  • Novos cmdlets Get-OwnerlessGroupPolicy e Set-OwnerlessGroupPolicy para gerenciar grupos do Microsoft 365 sem proprietário.

    Observação

    Embora os cmdlets estejam disponíveis no módulo, o recurso está disponível apenas para membros de uma Visualização Privada.

  • Novos cmdlets Get-VivaInsightsSettings e Set-VivaInsightsSettings para controlar o acesso do usuário aos recursos do Headspace no Viva Insights.

Versão 2.0.4

  • O PowerShell 7 tem suporte oficial no MacOS do Windows, Linux e Apple, conforme descrito na seção Pré-requisitos para a seção Exchange Online módulo do PowerShell neste artigo.

  • O módulo no PowerShell 7 dá suporte ao SSO (logon único) baseado no navegador e a outros métodos de entrada. Para obter mais informações, confira Métodos de conexão exclusivos do PowerShell 7.

  • Os cmdlets Get-UserAnalyticsConfig e Set-UserAnalyticsConfig foram substituídos pelos Get-MyAnalyticsConfig e Set-MyAnalyticsConfig. Além disso, você pode configurar o acesso no nível do recurso. Para saber mais, consulte Configurar MyAnalytics.

  • Política em tempo real e aplicação de segurança em todas as autenticações baseadas no usuário. A CAE (Avaliação de Acesso Contínuo) foi habilitada no módulo. Leia mais sobre CAE aqui.

  • As propriedades LastUserActionTime e LastInteractionTime agora estão disponíveis na saída do cmdlet Get-EXOMailboxStatistics.

  • O processo de login interativo agora usa um método mais seguro para buscar tokens de acesso usando URLs de resposta seguros.

Versão 2.0.3

  • Disponibilidade geral da CBA (autenticação baseada em certificado), que permite o uso de autenticação moderna em cenários de script autônomo ou de automação em segundo plano. Os locais de armazenamento de certificado disponíveis são:
  • Conecte-se ao PowerShell do Exchange Online e ao PowerShell de Segurança e Conformidade simultaneamente em uma única janela do PowerShell.
  • O novo parâmetro CommandName permite especificar e restringir os cmdlets do Exchange Online PowerShell importados em uma sessão. Essa opção reduz o espaço de memória para aplicativos Windows PowerShell de uso alto.
  • Get-EXOMailboxFolderPermission agora dá suporte a ExternalDirectoryObjectID no parâmetro Identidade.
  • A latência otimizada da primeira chamada de cmdlet v2. Os resultados do laboratório mostram a latência da primeira chamada reduzida de 8 segundos para aproximadamente 1 segundo. Os resultados reais dependem do tamanho do resultado do cmdlet e do ambiente do locatário.

Versão 1.0.1

  • Versão de Disponibilidade Geral (GA) do módulo EXO V2. Ele é estável e está pronto para ser usado em ambientes de produção.
  • O cmdlet Get-ExoMobileDeviceStatistics agora dá suporte ao parâmetro Identidade.
  • Confiabilidade aprimorada da sessão de reconexão automática em alguns casos em que um script era executado por aproximadamente 50 minutos e acionava um erro de "cmdlet não encontrado" devido a um bug na lógica de reconexão automática.
  • Corrigidos problemas de tipo de dados de dois atributos "Usuário" e "MailboxFolderUser" comumente usados para facilitar a migração de scripts.
  • Suporte aprimorado para filtros, pois agora dá suporte a mais quatro operadores: EndsWith, Contains, Not e NotLike. Verifique Filtros no módulo Exchange Online PowerShell em busca de atributos que não têm suporte em filtros.

Versão 0.4578.0

  • Adicionado suporte para configurar o Email de Resumo da sua organização no nível do usuário com os cmdlets Set-UserBriefingConfig e Get-UserBriefingConfig.
  • Suporte à limpeza de sessão usando o cmdlet Disconnect-ExchangeOnline. Este cmdlet é o equivalente à V2 de Get-PSSession | Remove-PSSession. Além de limpar o objeto de sessão e os arquivos locais, ele também remove o token de acesso do cache, que é usado para autenticação nos cmdlets V2.
  • Agora você pode usar FolderId como um parâmetro de identidade em Get-EXOMailboxFolderPermission. Você pode obter o valor FolderId usando Get-MailboxFolder. Por exemplo: Get-MailboxFolderPermission -Identity <UPN>:<Folder-Path>Get-MailboxFolderPermission -Identity <UPN>:\<Folder-Id>
  • Confiabilidade aprimorada de EXOMailboxStatisticspois determinados erros de roteamento de solicitação que levaram a falha foram resolvidas.
  • Uso otimizado da memória quando uma sessão é criada, usando novamente qualquer módulo existente com uma nova sessão em vez de criar um novo toda vez que a sessão é importada.

Versão 0.4368.1

  • Adicionado suporte para cmdlets do PowerShell de Segurança e Conformidade usando o cmdlet Connect-IPPSSession.
  • Ocultar o banner de anúncio está disponível usando a opção ShowBanner (-ShowBanner:$false).
  • Terminar a execução do cmdlet na exceção do cliente.
  • O PowerShell remoto continha vários tipos de dados complexos, que não eram propositadamente compatíveis com cmdlets EXO para melhorar o desempenho. As diferenças em tipos de dados não complexos entre os cmdlets remotos do PowerShell e os cmdlets V2 foram resolvidos para permitir a migração contínua dos scripts de gerenciamento.

Versão 0.3582.0

  • Suporte para prefixo durante a criação da sessão:
    • Você pode criar apenas uma sessão por vez que contenha cmdlets prefixados.
    • Os cmdlets EXO V2 não são prefixados porque já têm o EXO do prefixo, portanto, não use EXO como prefixo.
  • Use cmdlets EXO V2 mesmo se a autenticação básica do WinRM estiver desabilitada na máquina do cliente. Observe que os cmdlets remotos do PowerShell requerem a autenticação básica do WinRM e não estarão disponíveis se ela estiver desabilitada.
  • O parâmetro de identidade para cmdlets V2 suporta Nome e Alias. Observe que usar Alias ou Nome reduz o desempenho dos cmdlets V2, portanto, não recomendamos usá-los.
  • Problema corrigido em que o tipo de dados dos atributos retornados pelo cmdlet V2 era diferente dos cmdlets remotos do PowerShell. Ainda temos poucos atributos que têm tipos de dados diferentes e planejamos tratá-los nos próximos meses.
  • Bug corrigido: sessões frequentes reconectam o problema quando o Connect-ExchangeOnline foi invocado com credenciais ou UserPrincipalName

Versão 0.3555.1

  • Correção de um bug em que os cmdlets canalizados falhavam devido a um problema de autenticação:

    Não é possível invocar o pipeline porque o runspace não está no estado Aberto. O estado atual do runspace é "Fechado".

Versão 0.3527.4

  • Conteúdo Get-Help atualizado.
  • Correção de um problema em Get-Help em que o parâmetro Online estava redirecionando para uma página inexistente com o código de erro 400.

Versão 0.3527.3

  • Adicionado suporte para gerenciar o Exchange para um locatário diferente usando o fluxo de delegação.
  • Funciona em conjunto com outros módulos do PowerShell em uma janela do PS.
  • Suporte adicional para os parâmetros de posição.
  • O campo data e hora agora tem suporte para a localidade do cliente.
  • Correção de bugs: PSCredential vazio quando transmitido durante o Connect-ExchangeOnline.
  • Correção de bugs: um erro de módulo de cliente quando o filtro continha $null.
  • As sessões criadas internamente no módulo EXO V2 agora têm nomes (padrão de nomenclatura: ExchangeOnlineInternalSession_% SomeNumber%).
  • Correção de bugs: os cmdlets remotos do PowerShell falham de forma sincronizada devido à diferença de tempo entre a validade do token e a PSSession ficando ociosa.
  • Atualização de segurança importante.
  • Correção de bugs e melhorias.