Conectar-se ao Exchange Online PowerShell

Este artigo contém instruções sobre como ligar ao PowerShell do Exchange Online com o módulo do PowerShell do Exchange Online com ou sem autenticação multifator (MFA).

O módulo do PowerShell do Exchange Online utiliza a autenticação moderna para ligar a todos os ambientes do PowerShell relacionados com o Exchange no Microsoft 365: PowerShell do Exchange Online, PowerShell de Conformidade & de Segurança e PowerShell autónomo do Exchange Online Protection (EOP). Para obter mais informações sobre o módulo do PowerShell do Exchange Online, veja Acerca do módulo do PowerShell do Exchange Online.

Para ligar ao PowerShell do Exchange Online para automatização, veja Autenticação apenas de aplicações para scripts autónomos eUtilizar identidades geridas do Azure para ligar ao PowerShell do Exchange Online.

Para ligar ao PowerShell do Exchange Online a partir de C#, consulte Utilizar C# para ligar ao PowerShell do Exchange Online.

Do que você precisa saber para começar?

Dica

Está com problemas? Pergunte no fórum do Exchange Online.

Passo 1: carregar o módulo do PowerShell do Exchange Online

Observação

Se o módulo já estiver instalado, normalmente pode ignorar este passo e executar o Connect-ExchangeOnline sem carregar manualmente o módulo primeiro.

Depois de instalar o módulo, abra uma janela do PowerShell e carregue o módulo ao executar o seguinte comando:

Import-Module ExchangeOnlineManagement

Passo 2: Ligar e autenticar

Observação

Os comandos de ligação provavelmente falharão se o caminho do perfil da conta que utilizou para ligar contiver carateres especiais do PowerShell (por exemplo, $). A solução é ligar com uma conta diferente que não tenha carateres especiais no caminho do perfil.

O comando que você precisa executar usa a seguinte sintaxe:

Connect-ExchangeOnline -UserPrincipalName <UPN> [-ExchangeEnvironmentName <Value>] [-ShowBanner:$false] [-DelegatedOrganization <String>] [-SkipLoadingFormatData]

Para informações detalhadas sobre sintaxe e parâmetros, confira Connect-ExchangeOnline.

  • <O UPN> é a sua conta no formato de nome principal de utilizador (por exemplo, navin@contoso.onmicrosoft.com).

  • Com o módulo EXO V3 (v3.0.0 ou posterior) e o fim das ligações de autenticação Básica (PowerShell remoto) ao Exchange Online, está a utilizar apenas cmdlets da API REST. Para obter mais informações, veja Ligações à API REST no módulo EXO V3.

  • Quando você usa o parâmetro ExchangeEnvironmentName, não é necessário usar os parâmetros ConnectionUri ou AzureADAuthorizationEndPointUrl. Os valores comuns para o parâmetro ExchangeEnvironmentName são descritos na seguinte tabela:

    Ambiente Valor
    Microsoft 365 ou Microsoft 365 GCC n/d*
    Microsoft 365 GCC High O365USGovGCCHigh
    Microsoft 365 DoD O365USGovDoD
    Office 365 Alemanha O365GermanyCloud
    Office 365 operado pela 21Vianet O365China

    * O valor O365Default necessário também é o valor predefinido, pelo que não precisa de utilizar o parâmetro ExchangeEnvironmentName em ambientes do Microsoft 365 ou Microsoft 365 GCC.

  • O parâmetro DelegatedOrganization especifica a organização do cliente que você deseja gerenciar como um parceiro autorizado da Microsoft. Para obter mais informações, veja os exemplos de ligação mais adiante neste artigo.

  • Dependendo da natureza da sua organização, poderá conseguir omitir o parâmetro UserPrincipalName no comando de ligação. Em vez disso, você insere o nome de usuário e a senha ou seleciona as credenciais armazenadas após executar o comando Connect-ExchangeOnline. Se não funcionar, será necessário usar o parâmetro UserPrincipalName.

  • Se não estiver usando a MFA, você pode usar o parâmetro Credential em vez do parâmetro UserPrincipalName. Primeiro, execute o comando $Credential = Get-Credential, insira seu nome de usuário e senha e use o nome da variável para o parâmetro Credential (-Credential $Credential). Se não funcionar, será necessário usar o parâmetro UserPrincipalName.

  • Utilize o comutador SkipLoadingFormatData para evitar erros ao ligar ao PowerShell do Exchange Online a partir de um serviço Windows.

  • Utilizar o módulo no PowerShell 7 requer a versão 2.0.4 ou posterior.

Os exemplos de ligação nas secções seguintes utilizam autenticação moderna e são incapazes de utilizar a autenticação Básica.

Ligar ao PowerShell do Exchange Online com um pedido de início de sessão interativo

  1. Os exemplos seguintes funcionam no Windows PowerShell 5.1 e PowerShell 7 para contas com ou sem MFA:

    • Este exemplo se conecta ao Exchange Online PowerShell em uma organização do Microsoft 365 ou Microsoft 365 GCC:

      Connect-ExchangeOnline -UserPrincipalName navin@contoso.onmicrosoft.com
      
    • Este exemplo se conecta ao Exchange Online PowerShell em uma organização do Microsoft GCC High:

      Connect-ExchangeOnline -UserPrincipalName laura@blueyonderairlines.us -ExchangeEnvironmentName O365USGovGCCHigh
      
    • Este exemplo se conecta ao Exchange Online PowerShell em uma organização do Microsoft 365 DoD:

      Connect-ExchangeOnline -UserPrincipalName julia@adatum.mil -ExchangeEnvironmentName O365USGovDoD
      
    • Este exemplo se conecta ao Exchange Online PowerShell em uma organização do Office 365 Alemanha:

      Connect-ExchangeOnline -UserPrincipalName lukas@fabrikam.de -ExchangeEnvironmentName O365GermanyCloud
      
  2. Na janela de entrada exibida, insira sua senha e, em seguida, clique em Entrar.

    Insira sua senha na janela Entrar na sua conta.

    Observação

    No PowerShell 7, o início de sessão único (SSO) baseado no browser é utilizado por predefinição, pelo que o pedido de início de sessão é aberto no browser predefinido em vez de numa caixa de diálogo autónoma.

  3. Apenas para MFA: um código de verificação é gerado e fornecido com base na opção de resposta de verificação que está configurada para sua conta (por exemplo, uma mensagem de texto ou o aplicativo Microsoft Authenticator em seu dispositivo).

    Na janela de verificação exibida, digite o código de verificação e, em seguida, clique em Verificar.

    Insira seu código de verificação na janela Entrar na sua conta.

Métodos de ligação exclusivos do PowerShell 7

  • No PowerShell 7 para contas sem MFA, este exemplo pede credenciais na janela do PowerShell:

    Connect-ExchangeOnline -UserPrincipalName navin@contoso.onmicrosoft.com -InlineCredential
    
  • No PowerShell 7 para contas com ou sem MFA, este exemplo utiliza outro computador para autenticar e concluir a ligação. Normalmente, utiliza este método em computadores que não têm browsers (os utilizadores não conseguem introduzir as respetivas credenciais no PowerShell 7):

    1. Execute o seguinte comando no computador onde pretende ligar:

      Connect-ExchangeOnline -Device
      

      O comando de ligação aguarda o seguinte resultado:

      Para iniciar sessão, utilize um browser para abrir a página https://microsoft.com/devicelogin e introduza o código <XXXXXXXXX> para autenticar.

      Repare no <valor de código XXXXXXXXX> .

    2. Em qualquer outro dispositivo com um browser e acesso à Internet, abra https://microsoft.com/devicelogin e introduza o <valor de código XXXXXXXXX> do passo anterior.

    3. Introduza as suas credenciais nas páginas resultantes.

    4. No pedido de confirmação, clique em Continuar. A mensagem seguinte deve indicar êxito e pode fechar o browser ou o separador.

    5. O comando do passo 1 continua a ligá-lo ao PowerShell do Exchange Online.

Ligar ao PowerShell do Exchange Online sem um pedido de início de sessão (scripts sem supervisão)

Para obter instruções completas, consulte Autenticação apenas de aplicações para scripts autónomos no PowerShell do Exchange Online e No PowerShell de Conformidade & de Segurança.

Ligar ao PowerShell do Exchange Online em organizações de clientes

Para obter mais informações sobre parceiros e organizações de clientes, veja os seguintes tópicos:

Este exemplo liga-se às organizações de clientes nos seguintes cenários:

  • Ligue-se a uma organização de cliente com uma conta CSP.

  • Ligue-se a uma organização de cliente com um GDAP.

  • Ligue-se a uma organização de cliente como um utilizador convidado.

    Connect-ExchangeOnline -UserPrincipalName navin@contoso.onmicrosoft.com -DelegatedOrganization adatum.onmicrosoft.com
    

Ligar ao PowerShell do Exchange Online com a identidade gerida

Para obter mais informações, veja Utilizar identidades geridas do Azure para ligar ao PowerShell do Exchange Online.

  • Identidade gerida atribuída pelo sistema:

    Connect-ExchangeOnline -ManagedIdentity -Organization "cohovinyard.onmicrosoft.com"
    
  • Identidade gerida atribuída pelo utilizador:

    Connect-ExchangeOnline -ManagedIdentity -Organization "constoso.onmicrosoft.com" -ManagedIdentityAccountId <ManagedIdentityAccountIdGuid>
    

Passo 3: Desligar quando tiver terminado

Certifique-se de que desliga a sessão quando terminar. Se fechar a janela do PowerShell sem desligar a sessão, pode utilizar todas as sessões disponíveis para si e tem de esperar que as sessões expirem. Para desligar a sessão, execute o seguinte comando:

Disconnect-ExchangeOnline

Para desligar automaticamente sem um pedido de confirmação, execute o seguinte comando:

Disconnect-ExchangeOnline -Confirm:$false

Observação

O comando desligar provavelmente falhará se o caminho do perfil da conta que utilizou para ligar contiver carateres especiais do PowerShell (por exemplo, $). A solução é ligar com uma conta diferente que não tenha carateres especiais no caminho do perfil.

Como sabe que se ligou com êxito?

Se não receber erros, terá ligado com êxito. Um teste rápido consiste em executar um cmdlet do PowerShell do Exchange Online, por exemplo Get-AcceptedDomain, e ver os resultados.

Caso você receba erros, verifique os seguintes requisitos:

  • Um problema comum é uma senha incorreta. Execute novamente os passos de ligação e preste muita atenção ao nome de utilizador e palavra-passe que utiliza.

  • A conta que utiliza para ligar tem de estar ativada para acesso ao PowerShell. Para obter mais informações, confira Habilitar ou desabilitar o acesso ao PowerShell do Exchange Online.

  • O tráfego da porta TCP 80 precisa estar aberto entre seu computador local e o Microsoft 365. Provavelmente ele está aberto, mas é algo a ser considerado caso a sua organização tenha uma política de acesso à Internet restritiva.

  • Se sua organização usa autenticação federada e seu provedor de identidade (IDP) e/ou serviço de token de segurança (STS) não estiver disponível ao público, você não poderá usar uma conta federada para se conectar ao PowerShell do Exchange Online. Em vez disso, crie e use uma conta não federada no Microsoft 365 para se conectar ao PowerShell do Exchange Online.

  • As ligações baseadas em REST ao PowerShell do Exchange Online requerem o módulo PowerShellGet e, por dependência, o módulo PackageManagement, pelo que receberá erros se tentar ligar sem ter os mesmos instalados. Por exemplo, poderá ver o seguinte erro:

    O termo "Update-ModuleManifest" não é reconhecido como o nome de um cmdlet, função, ficheiro de script ou programa operável. Verifique a ortografia do nome ou, se um caminho foi incluído, verifique se o caminho está correto e tente novamente.

    Para obter mais informações sobre os requisitos do módulo PowerShellGet e PackageManagement, veja PowerShellGet for REST-based connections in Windows (PowerShellGet para ligações baseadas em REST no Windows).

  • Depois de se ligar, poderá ter recebido um erro semelhante ao seguinte:

    Não foi possível carregar o ficheiro ou a assemblagem "System.IdentityModel.Tokens.Jwt,Version=<Version>, Culture=neutral, PublicKeyToken=<TokenValue>". Não foi possível localizar ou carregar um ficheiro específico.

    Este erro ocorre quando o módulo do PowerShell do Exchange Online entra em conflito com outro módulo que é importado para o espaço de execução. Experimente ligar-se numa nova janela do Windows PowerShell antes de importar outros módulos.

Apêndice: comparação dos métodos de ligação antigos e novos

Esta secção tenta comparar métodos de ligação mais antigos que foram substituídos pelo módulo do PowerShell do Exchange Online. Os procedimentos de autenticação básica e token OAuth estão incluídos apenas para referência histórica e já não são suportados.

Ligar sem autenticação multifator

  • Módulo do PowerShell do Exchange Online com pedido de credenciais interativo:

    Connect-ExchangeOnline -UserPrincipalName admin@contoso.onmicrosoft.com
    
  • Módulo do PowerShell do Exchange Online sem pedido de credenciais interativas:

    $secpasswd = ConvertTo-SecureString '<Password>' -AsPlainText -Force
    
    $o365cred = New-Object System.Management.Automation.PSCredential ("admin@contoso.onmicrosoft.com", $secpasswd)
    
    Connect-ExchangeOnline -Credential $o365cred
    
  • Autenticação básica:

    $secpasswd = ConvertTo-SecureString '<Password>' -AsPlainText -Force
    
    $o365cred = New-Object System.Management.Automation.PSCredential ("admin@contoso.onmicrosoft.com", $secpasswd)
    
    $Session = New-PSSession -ConfigurationName Microsoft.Exchange -ConnectionUri https://outlook.office365.com/PowerShell-LiveID/ -Credential $o365cred -Authentication Basic -AllowRedirection
    
    Import-PSSession $Session
    
  • New-PSSession com token OAuth:

    $oauthTokenAsPassword = ConvertTo-SecureString '<EncodedOAuthToken>' -AsPlainText -Force
    
    $o365cred = New-Object System.Management.Automation.PSCredential ("admin@contoso.onmicrosoft.com", $oauthTokenAsPassword)
    
    $Session = New-PSSession -ConfigurationName Microsoft.Exchange -ConnectionUri https://outlook.office365.com/PowerShell-LiveID/?BasicAuthToOAuthConversion=true -Credential $o365cred -Authentication Basic -AllowRedirection
    
    Import-PSSession $Session
    

Ligar com a autenticação multifator

  • Módulo do PowerShell do Exchange Online com pedido de credenciais interativo:

    Connect-ExchangeOnline -UserPrincipalName admin@contoso.onmicrosoft.com
    
  • Autenticação básica: não disponível.

  • New-PSSession com token OAuth: Não disponível.

Ligar a uma organização de cliente com uma conta CSP

  • Módulo do PowerShell do Exchange Online:

    Connect-ExchangeOnline -UserPrincipalName admin@contoso.onmicrosoft.com -DelegatedOrganization delegated.onmicrosoft.com
    
  • Autenticação básica:

    $secpasswd = ConvertTo-SecureString '<Password>' -AsPlainText -Force
    
    $o365cred = New-Object System.Management.Automation.PSCredential ("admin@contoso.onmicrosoft.com", $secpasswd)
    
    $Session = New-PSSession -ConfigurationName Microsoft.Exchange -ConnectionUri https://outlook.office365.com/PowerShell-LiveID/?DelegatedOrg=delegated.onmicrosoft.com&email=SystemMailbox{bb558c35-97f1-4cb9-8ff7-d53741dc928c}@delegated.onmicrosoft.com -Credential $o365cred -Authentication Basic -AllowRedirection
    
    Import-PSSession $Session
    
  • New-PSSession com token OAuth:

    $oauthTokenAsPassword = ConvertTo-SecureString '<EncodedOAuthToken>' -AsPlainText -Force
    
    $o365cred = New-Object System.Management.Automation.PSCredential ("admin@contoso.onmicrosoft.com", $oauthTokenAsPassword)
    
    $Session = New-PSSession -ConfigurationName Microsoft.Exchange -ConnectionUri https://outlook.office365.com/PowerShell-LiveID/? DelegatedOrg=delegated.onmicrosoft.com&BasicAuthToOAuthConversion=true&email=SystemMailbox{bb558c35-97f1-4cb9-8ff7-d53741dc928c}@delegated.onmicrosoft.com -Credential $o365cred -Authentication Basic -AllowRedirection
    
    Import-PSSession $Session
    

Ligar a uma organização do cliente com o GDAP

  • Módulo do PowerShell do Exchange Online:

    Connect-ExchangeOnline -UserPrincipalName admin@contoso.onmicrosoft.com -DelegatedOrganization delegated.onmicrosoft.com
    
  • Autenticação básica:

    $secpasswd = ConvertTo-SecureString '<Password>' -AsPlainText -Force
    
    $o365cred = New-Object System.Management.Automation.PSCredential ("admin@contoso.onmicrosoft.com", $secpasswd)
    
    $Session = New-PSSession -ConfigurationName Microsoft.Exchange -ConnectionUri https://outlook.office365.com/PowerShell-LiveID/?DelegatedOrg=delegated.onmicrosoft.com&email=SystemMailbox{bb558c35-97f1-4cb9-8ff7-d53741dc928c}@delegated.onmicrosoft.com -Credential $o365cred -Authentication Basic -AllowRedirection
    
    Import-PSSession $Session
    
  • New-PSSession com token OAuth:

    $oauthTokenAsPassword = ConvertTo-SecureString '<EncodedOAuthToken>' -AsPlainText -Force
    
    $o365cred = New-Object System.Management.Automation.PSCredential ("admin@contoso.onmicrosoft.com", $oauthTokenAsPassword)
    
    $Session = New-PSSession -ConfigurationName Microsoft.Exchange -ConnectionUri https://outlook.office365.com/PowerShell-LiveID/?DelegatedOrg=delegated.onmicrosoft.com&BasicAuthToOAuthConversion=true&email=SystemMailbox{bb558c35-97f1-4cb9-8ff7-d53741dc928c}@delegated.onmicrosoft.com -Credential $o365cred -Authentication Basic -AllowRedirection
    
    Import-PSSession $Session
    

Ligar a uma organização do cliente como um utilizador convidado

  • Módulo do PowerShell do Exchange Online:

    Connect-ExchangeOnline -UserPrincipalName admin@contoso.onmicrosoft.com -DelegatedOrganization delegated.onmicrosoft.com
    
  • Autenticação básica:

    $secpasswd = ConvertTo-SecureString '<Password>' -AsPlainText -Force
    
    $o365cred = New-Object System.Management.Automation.PSCredential ("admin@contoso.onmicrosoft.com", $secpasswd)
    
    $Session = New-PSSession -ConfigurationName Microsoft.Exchange -ConnectionUri https://outlook.office365.com/PowerShell-LiveID/?DelegatedOrg=delegated.onmicrosoft.com&email=SystemMailbox{bb558c35-97f1-4cb9-8ff7-d53741dc928c}@delegated.onmicrosoft.com -Credential $o365cred -Authentication Basic -AllowRedirection
    
    Import-PSSession $Session
    
  • New-PSSession com token OAuth:

    $oauthTokenAsPassword = ConvertTo-SecureString '<EncodedOAuthToken>' -AsPlainText -Force
    
    $o365cred = New-Object System.Management.Automation.PSCredential ("admin@contoso.onmicrosoft.com", $oauthTokenAsPassword)
    
    $Session = New-PSSession -ConfigurationName Microsoft.Exchange -ConnectionUri https://outlook.office365.com/PowerShell-LiveID/?DelegatedOrg=delegated.onmicrosoft.com&BasicAuthToOAuthConversion=true&email=SystemMailbox{bb558c35-97f1-4cb9-8ff7-d53741dc928c}@delegated.onmicrosoft.com -Credential $o365cred -Authentication Basic -AllowRedirection
    
    Import-PSSession $Session
    

Ligar para executar scripts sem supervisão

  • Módulo do PowerShell do Exchange Online:

    • Thumbprint do certificado:

      Observação

      O parâmetro CertificateThumbprint só é suportado no Microsoft Windows.

      Connect-ExchangeOnline -CertificateThumbPrint "012THISISADEMOTHUMBPRINT" -AppID "36ee4c6c-0812-40a2-b820-b22ebd02bce3" -Organization "contoso.onmicrosoft.com"
      
    • Objeto de certificado:

      Connect-ExchangeOnline -Certificate <%X509Certificate2Object%> -AppID "36ee4c6c-0812-40a2-b820-b22ebd02bce3" -Organization "contoso.onmicrosoft.com"
      
    • Ficheiro de certificado:

      Connect-ExchangeOnline -CertificateFilePath "C:\Users\navin\Desktop\automation-cert.pfx" -CertificatePassword (ConvertTo-SecureString -String "<Password>" -AsPlainText -Force) -AppID "36ee4c6c-0812-40a2-b820-b22ebd02bce3" -Organization "contoso.onmicrosoft.com"
      

    Para obter mais informações, veja Autenticação apenas de aplicações para scripts autónomos no PowerShell do Exchange Online e No PowerShell de Conformidade & de Segurança.

  • Autenticação básica:

    $secpasswd = ConvertTo-SecureString '<Password>' -AsPlainText -Force
    
    $o365cred = New-Object System.Management.Automation.PSCredential ("admin@contoso.onmicrosoft.com", $secpasswd)
    
    $Session = New-PSSession -ConfigurationName Microsoft.Exchange -ConnectionUri https://outlook.office365.com/PowerShell-LiveID/ -Credential $o365cred -Authentication Basic -AllowRedirection
    
    Import-PSSession $Session
    
  • New-PSSession com token OAuth:

    $oauthTokenAsPassword = ConvertTo-SecureString '<EncodedOAuthToken>' -AsPlainText -Force
    
    $o365cred = New-Object System.Management.Automation.PSCredential ("admin@contoso.onmicrosoft.com", $oauthTokenAsPassword)
    
    $Session = New-PSSession -ConfigurationName Microsoft.Exchange -ConnectionUri https://outlook.office365.com/PowerShell-LiveID/?BasicAuthToOAuthConversion=true&email=SystemMailbox{bb558c35-97f1-4cb9-8ff7-d53741dc928c}@contoso.onmicrosoft.com -Credential $o365cred -Authentication Basic -AllowRedirection
    
    Import-PSSession $Session
    

Ligar com a identidade gerida

  • Módulo do PowerShell do Exchange Online:

    • Identidade gerida atribuída pelo sistema:

      Connect-ExchangeOnline -ManagedIdentity -Organization "contoso.onmicrosoft.com"
      
    • Identidade gerida atribuída pelo utilizador:

      Connect-ExchangeOnline -ManagedIdentity -Organization "contoso.onmicrosoft.com" -ManagedIdentityAccountId <UserAssignedManagedIdentityPrincipalIdValue>
      

    Para obter mais informações, veja Utilizar identidades geridas do Azure para ligar ao PowerShell do Exchange Online.

  • Autenticação básica: não disponível.

  • New-PSSession com token OAuth: Não disponível.