連線至 Exchange Online PowerShell

本文包含如何使用 Exchange Online PowerShell 模組連線到 Exchange Online PowerShell 的指示,其中包含或不使用多重要素驗證 (MFA) 。

Exchange Online PowerShell 模組會使用新式驗證來連線到 Microsoft 365 中所有與 Exchange 相關的 PowerShell 環境:Exchange Online PowerShell、安全 & 性合規性 PowerShell,以及獨立Exchange Online Protection (EOP) PowerShell。 如需 Exchange Online PowerShell 模組的詳細資訊,請參閱關於 Exchange Online PowerShell 模組

注意事項

2.0.5 版和更早版本稱為 Exchange Online PowerShell V2 模組 (縮寫為 EXO V2 模組) 。 3.0.0 版和更新版本稱為 Exchange Online PowerShell V3 模組 (縮寫為 EXO V3 模組) 。

若要連線到 Exchange Online PowerShell 以進行自動化,請參閱自動腳本的僅限應用程式驗證使用 Azure 受控識別連線到 Exchange Online PowerShell

若要從 C# 連線到 Exchange Online PowerShell,請參閱使用 C# 連線到 Exchange Online PowerShell

開始之前有哪些須知?

提示

有問題嗎? 在 Exchange Online 討論區中提問。

步驟 1:載入 Exchange Online PowerShell 模組

注意事項

如果模組已安裝,您通常可以略過此步驟並執行 Connect-ExchangeOnline, 而不需要先手動載入模組。

安裝模組之後,請開啟 PowerShell 視窗,然後執行下列命令來載入模組:

Import-Module ExchangeOnlineManagement

步驟 2:連線和驗證

注意事項

如果您用來連線之帳戶的設定檔路徑包含特殊 PowerShell 字元 (例如,) , $ 則連線命令可能會失敗。 因應措施是使用設定檔路徑中沒有特殊字元的不同帳戶進行連線。

您需要執行的命令會使用下列語法:

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

如需詳細的語法和參數資訊,請參閱 Connect-ExchangeOnline

附註

  • < UPN >是使用者主體名稱格式的帳戶, (例如, navin@contoso.onmicrosoft.com) 。

  • 使用 (v3.0.0 或更新版本的 EXO V3 模組) ,如果您不使用 UseRPSSession 參數,則只會使用 REST API Cmdlet。 如需詳細資訊,請參閱) 的 EXO V3 模組更新

  • 當您使用 ExchangeEnvironmentName 參數時,不需要使用 ConnectionUriAzureADAuthorizationEndPointUrl 參數。 下表說明 ExchangeEnvironmentName 參數的一般值:

    環境
    Microsoft 365 或 Microsoft 365 GCC 不適用*
    Microsoft 365 GCC High O365USGovGCCHigh
    Microsoft 365 DoD O365USGovDoD
    Office 365 Germany O365GermanyCloud
    由 21Vianet 運作的 Office 365 O365China

    * 必要的值 O365Default 也是預設值,因此您不需要在 Microsoft 365 或 Microsoft 365 GCC 環境中使用 ExchangeEnvironmentName 參數。

  • DelegatedOrganization 參數指定您要以授權的 Microsoft 合作夥伴的身份來管理的客戶組織。 如需詳細資訊,請參閱 本文稍後的連線範例

  • 如果您位於 Proxy 伺服器後方,您可以在連線命令中使用 PSSessionOption 參數,但前提是您也使用 UseRPSSession 參數。 首先,執行此命令: $ProxyOptions = New-PSSessionOption -ProxyAccessType <Value> ,其中 < Value > 為 IEConfigWinHttpConfigAutoDetect 。 然後,使用PSSessionOption參數的值 $ProxyOptions 。 如需詳細資訊,請參閱 New-PSSessionOption

  • 視組織的性質而定,您可能可以在連線命令中省略 UserPrincipalName 參數。 相反地,執行 Connect-ExchangeOnline 命令之後,請輸入使用者名稱和密碼,或選取儲存的認證。 如果無法執行,則需要使用 UserPrincipalName 參數。

  • 如果您未使用 MFA,您應該可以使用 Credential 參數,而非 UserPrincipalName 參數。 首先,執行命令 $Credential = Get-Credential,輸入您的使用者名稱和密碼,然後使用 Credential 參數的變數名稱 (-Credential $Credential)。 如果無法執行,則需要使用 UserPrincipalName 參數。

  • 在 PowerShell 7 中使用模組需要 2.0.4 版或更新版本。

下列各節中的連線範例使用新式驗證,而且無法使用基本驗證。

使用互動式登入提示連線到 Exchange Online PowerShell

  1. 下列範例適用于具有或不含 MFA 的帳戶Windows PowerShell 5.1 和 PowerShell 7:

    • 此範例會連線至 Microsoft 365 或 Microsoft 365 GCC 組織中的 Exchange Online PowerShell:

      Connect-ExchangeOnline -UserPrincipalName navin@contoso.onmicrosoft.com
      
    • 此範例會連線至 Microsoft GCC High 組織中的 Exchange Online PowerShell

      Connect-ExchangeOnline -UserPrincipalName laura@blueyonderairlines.us -ExchangeEnvironmentName O365USGovGCCHigh
      
    • 此範例會連線至 Microsoft 365 DoD 組織中的 Exchange Online PowerShell

      Connect-ExchangeOnline -UserPrincipalName julia@adatum.mil -ExchangeEnvironmentName O365USGovDoD
      
    • 此範例會連線至Office 365 德國組織中的 Exchange Online PowerShell

      Connect-ExchangeOnline -UserPrincipalName lukas@fabrikam.de -ExchangeEnvironmentName O365GermanyCloud
      
  2. 在開啟的登入視窗中,輸入您的密碼,然後按一下 [登入]

    在 [登入您的帳戶] 視窗中輸入您的密碼。

    注意事項

    在 PowerShell 7 中,預設會使用瀏覽器型單一登入 (SSO) ,因此登入提示會在您的預設網頁瀏覽器中開啟,而不是在獨立對話方塊中開啟。

  3. 僅限 MFA:系統會產生驗證碼並根據針對您的帳戶設定的回應選項 (例如,您的裝置上的簡訊或 Microsoft Authenticator 應用程式) 傳送。

    在開啟的驗證視窗中,輸入驗證碼,然後按一下 [驗證]

    在 [登入您的帳戶] 視窗中輸入您的驗證碼。

PowerShell 7 獨佔連線方法

  • 在 PowerShell 7 中, 針對沒有 MFA 的帳戶,此範例會在 PowerShell 視窗內提示輸入認證:

    Connect-ExchangeOnline -UserPrincipalName navin@contoso.onmicrosoft.com -InlineCredential
    
  • 在具有或不含 MFA 之帳戶的 PowerShell 7 中,此範例會使用另一部電腦來驗證並完成連線。 一般而言,您會在沒有網頁瀏覽器的電腦上使用此方法, (使用者無法在 PowerShell 7 中輸入其認證) :

    1. 在您要連線的電腦上執行下列命令:

      Connect-ExchangeOnline -Device
      

      連線命令會在下列輸出等候:

      若要登入,請使用網頁瀏覽器開啟頁面 https://microsoft.com/devicelogin ,並輸入程式碼 < XXXXXXXXX > 進行驗證。

      <請注意 XXXXXXXXX 程式 > 代碼值。

    2. 在具有網頁瀏覽器和網際網路存取的任何其他裝置上,開 https://microsoft.com/devicelogin 啟並輸入 < 上一個步驟中的 XXXXXXXXX 代碼 > 值。

    3. 在產生的頁面上輸入您的認證。

    4. 在確認提示中,按一下 [ 繼續]。 下一則訊息應該表示成功,而且您可以關閉瀏覽器或索引標籤。

    5. 步驟 1 中的命令會繼續將您連線至 Exchange Online PowerShell。

連線到 Exchange Online PowerShell,而不需要登入提示 (自動腳本)

如需完整指示,請參閱PowerShell 和安全 & 性合規性 PowerShell 中自動腳本的僅限應用程式驗證Exchange Online

在客戶組織中連線到 Exchange Online PowerShell

如需合作夥伴和客戶組織的詳細資訊,請參閱下列主題:

此範例會在下列案例中連線到客戶組織:

  • 使用 CSP 帳戶連線到客戶組織。

  • 使用 GDAP 連線到客戶組織。

  • 以來賓使用者身分連線到客戶組織。

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

使用受控識別連線到 Exchange Online PowerShell

如需詳細資訊,請參閱使用 Azure 受控識別連線到 Exchange Online PowerShell

  • 系統指派的受控識別:

    Connect-ExchangeOnline -ManagedIdentity -Organization "cohovinyard.onmicrosoft.com"
    
  • 使用者指派的受控識別:

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

步驟 3:當您完成時中斷連線

完成時,請務必中斷會話的連線。 如果您關閉 PowerShell 視窗而不中斷會話的連線,您可以用掉所有可供您使用的會話,而且您必須等候會話過期。 若要中斷會話的連線,請執行下列命令。

Disconnect-ExchangeOnline

若要在沒有確認提示的情況下以無訊息方式中斷連線,請執行下列命令:

Disconnect-ExchangeOnline -Confirm:$false

注意事項

如果您用來連線之帳戶的設定檔路徑包含特殊 PowerShell 字元,例如 $ (,) ,則中斷連線命令可能會失敗。 因應措施是使用設定檔路徑中沒有特殊字元的不同帳戶進行連線。

如何知道您已成功連線?

如果您未收到任何錯誤,表示您已成功連線。 快速測試是執行 Exchange Online PowerShell Cmdlet,例如Get-AcceptedDomain,並查看結果。

如果出現錯誤,請檢查下列需求:

  • 密碼錯誤是常見的問題。 再次執行連線步驟,並密切注意您使用的使用者名稱和密碼。

  • 為了協助防止拒絕服務 (DoS) 攻擊,當您使用UseRPSSession參數進行連線時,只能有五個開啟的連線Exchange Online PowerShell。

  • 用來連接到的帳戶必須能夠使用遠端 PowerShell。 如需詳細資訊,請參閱啟用或停用 Exchange Online 的封存權

  • 必須在本機電腦與 Microsoft 365 之間開啟 TCP 連接埠 80 流量。 該連接埠可能已開啟,但必須考量您的組織是否有限制性網際網路存取原則。

  • 如果組織使用同盟驗證,而您的身分識別提供者 (IDP) 和/或安全性權杖服務 (STS) 並未公開提供,您就無法使用同盟帳戶連線到 Exchange Online PowerShell。 請改為在 Microsoft 365 中建立並使用非同盟帳戶以連線至 Exchange Online PowerShell。

附錄:新舊連線方法的比較

本節會嘗試比較已由 Exchange Online PowerShell 模組取代的舊版連線方法。 基本驗證和 OAuth 權杖程式僅包含在歷程記錄參考中,不再支援。

不使用多重要素驗證進行連線

  • Exchange Online具有互動式認證提示的 PowerShell 模組

    Connect-ExchangeOnline -UserPrincipalName admin@contoso.onmicrosoft.com
    
  • Exchange Online沒有互動式認證提示的 PowerShell 模組

    $secpasswd = ConvertTo-SecureString '<Password>' -AsPlainText -Force
    
    $o365cred = New-Object System.Management.Automation.PSCredential ("admin@contoso.onmicrosoft.com", $secpasswd)
    
    Connect-ExchangeOnline -Credential $o365cred
    
  • 基本驗證

    $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
    
  • 具有 OAuth 權杖的 New-PSSession

    $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
    

使用多重要素驗證進行連線

  • Exchange Online具有互動式認證提示的 PowerShell 模組

    Connect-ExchangeOnline -UserPrincipalName admin@contoso.onmicrosoft.com
    
  • 基本驗證:無法使用。

  • 具有 OAuth 權杖的 New-PSSession:無法使用。

使用 CSP 帳戶連線到客戶組織

  • Exchange Online PowerShell 模組

    Connect-ExchangeOnline -UserPrincipalName admin@contoso.onmicrosoft.com -DelegatedOrganization delegated.onmicrosoft.com
    
  • 基本驗證

    $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
    
  • 具有 OAuth 權杖的 New-PSSession

    $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
    

使用 GDAP 連線到客戶組織

  • Exchange Online PowerShell 模組

    Connect-ExchangeOnline -UserPrincipalName admin@contoso.onmicrosoft.com -DelegatedOrganization delegated.onmicrosoft.com
    
  • 基本驗證

    $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
    
  • 具有 OAuth 權杖的 New-PSSession

    $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
    

以來賓使用者身分連線到客戶組織

  • Exchange Online PowerShell 模組

    Connect-ExchangeOnline -UserPrincipalName admin@contoso.onmicrosoft.com -DelegatedOrganization delegated.onmicrosoft.com
    
  • 基本驗證

    $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
    
  • 具有 OAuth 權杖的 New-PSSession

    $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
    

連線以執行自動腳本

  • Exchange Online PowerShell 模組

    • 憑證指紋

      Connect-ExchangeOnline -CertificateThumbPrint "012THISISADEMOTHUMBPRINT" -AppID "36ee4c6c-0812-40a2-b820-b22ebd02bce3" -Organization "contoso.onmicrosoft.com"
      
    • Certificate 物件

      Connect-ExchangeOnline -Certificate <%X509Certificate2Object%> -AppID "36ee4c6c-0812-40a2-b820-b22ebd02bce3" -Organization "contoso.onmicrosoft.com"
      
    • 憑證檔案

      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"
      

    如需詳細資訊,請參閱PowerShell 和安全 & 性合規性 PowerShell 中自動腳本的僅限應用程式驗證Exchange Online

  • 基本驗證

    $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
    
  • 具有 OAuth 權杖的 New-PSSession

    $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
    

使用受控識別進行連線

  • Exchange Online PowerShell 模組

    • 系統指派的受控識別

      Connect-ExchangeOnline -ManagedIdentity -Organization "contoso.onmicrosoft.com"
      
    • 使用者指派的受控識別

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

    如需詳細資訊,請參閱使用 Azure 受控識別連線到 Exchange Online PowerShell

  • 基本驗證:無法使用。

  • 具有 OAuth 權杖的 New-PSSession:無法使用。