共用方式為


連線至 Exchange Online PowerShell

本文包含如何使用 Exchange Online PowerShell 模組連接 PowerShell 的說明,無論是否包含多重驗證Exchange Online (多重驗證) 。

提示

本文的連線說明同樣適用於本地 信箱內建的安全外掛

Exchange Online PowerShell 模組使用現代認證連接 PowerShell Exchange Online 安全 & 合規 PowerShell。 欲了解更多關於 Exchange Online PowerShell 模組的資訊,請參閱「關於 Exchange Online PowerShell 模組」。

若要連接 Exchange Online PowerShell 進行自動化,請參閱無人值守腳本的應用程式專用認證,並使用 Azure 管理身份連接 Exchange Online PowerShell

若要從 C# 連接 Exchange Online PowerShell,請參見「使用 C# 連接 Exchange Online PowerShell」。

開始之前有哪些須知?

步驟 1:載入 Exchange Online PowerShell 模組

注意事項

如果模組已經安裝好,通常可以跳過這個步驟,直接執行 Connect-ExchangeOnline ,不用手動載入模組。

安裝模組後,開啟 PowerShell 視窗並執行以下指令載入模組:

Import-Module ExchangeOnlineManagement

步驟 2:連結並驗證

注意事項

如果你用來連接的帳號設定檔路徑包含特殊 PowerShell 字元,例如) ,連接指令很可能會失敗 ($ 。 解決方法是用一個沒有特殊字元的帳號連線。

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

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

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

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

  • 當您使用 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 參數。

  • 在 3.7.0 版本或更新版本中,Exchange Online PowerShell 指令列說明文預設不再載入。 使用 LoadCmdletHelp 開關,這樣 Get-Help 指令碼就能取得 Exchange Online PowerShell cmdlet 的協助。

  • DelegatedOrganization 參數指定您要以授權的 Microsoft 合作夥伴的身份來管理的客戶組織。 欲了解更多資訊,請參閱 本文後面的連接範例

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

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

  • 使用 SkipLoadingFormatData 開關,避免從 Windows 服務內連接 Exchange Online PowerShell 時出錯。

  • PowerShell 7 需要版本 2.0.4 或更新版本。

  • 在 3.7.2 或更新版本中,若遇到 WAM 相關連線錯誤,則可啟用 DisableWAM 交換器 (WAM) 。

以下章節的連線範例使用現代認證,無法使用基本認證。

透過互動式登入提示連接 Exchange Online PowerShell

  1. 以下範例可在 Windows PowerShell 5.1 和 PowerShell 7 中運作,適用於有無 MFA 的帳號:

    • 此範例會連線至 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. 僅限多重驗證:驗證碼會根據您帳戶設定的回應選項產生並傳送,例如簡訊或裝置) Microsoft驗證器應用程式 (。

    在打開的驗證視窗中,輸入驗證碼,然後選擇 「驗證」。

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

PowerShell 7 exclusive connection methods

  • 在 PowerShell 7 中,對於 沒有 MFA 的帳號,這個範例會在 PowerShell 視窗中提示輸入憑證:

    Connect-ExchangeOnline -UserPrincipalName navin@contoso.onmicrosoft.com -InlineCredential
    
  • 在 PowerShell 7 中,無論有沒有 MFA,這個例子都是用另一台電腦來驗證並完成連線。 通常,使用者無法在 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認證 & PowerShell。

在客戶組織中連接 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>
    

步驟三:完成後斷線

結束後務必斷開連線。 如果你關閉 PowerShell 視窗卻沒有斷開連線,可能會用完所有可用的工作階段,並且需要等待工作階段到期。 要斷開會話,請執行以下指令:

Disconnect-ExchangeOnline

若要在沒有確認提示的情況下靜悄悄斷開連線,請執行以下指令:

Disconnect-ExchangeOnline -Confirm:$false

注意事項

如果你用來連接的帳號設定檔路徑包含特殊的 PowerShell 字元 (,例如) $ ,斷開指令很可能失敗。 解決方法是用一個沒有特殊字元的帳號連線。

你怎麼知道你成功連結了?

如果您未收到任何錯誤,便已順利連線。 一個快速測試是執行 Exchange Online PowerShell 指令檔,例如 Get-AcceptedDomain,看看結果。

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

  • 密碼錯誤是常見的問題。 重新執行連線步驟,並特別注意你使用的使用者名稱和密碼。

  • 你用來連接的帳號必須啟用才能存取 PowerShell。 如需詳細資訊,請參閱啟用或停用 Exchange Online 的封存權

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

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

  • 基於 REST 的 Exchange Online PowerShell 連線需要 PowerShellGet 模組。 依相依性而言,PowerShellGet 模組需要 PackageManagement 模組。 如果你嘗試連接時沒有安裝兩個模組,會收到錯誤。 例如,你可能會看到以下錯誤:

    「Update-ModuleManifest」一詞並不被識別為 cmdlet、函式、腳本檔案或可操作程式的名稱。 請檢查名稱的拼寫,或者如果包含路徑,請確認路徑是否正確,然後再試一次。

    欲了解更多關於 PowerShellGet 與 PackageManagement 模組需求的資訊,請參閱 Windows 中基於 REST 的 PowerShellGet

  • 連線後,你可能會收到如下錯誤訊息:

    無法載入檔案或組合語言 'System.IdentityModel.Tokens.Jwt,Version=<Version>, Culture=neutral, PublicKeyToken=<TokenValue>'。 找不到或載入特定檔案。

    此錯誤發生在 Exchange Online PowerShell 模組與導入跑道空間的另一個模組衝突時。 試著在匯入其他模組前,先在新的 Windows PowerShell 視窗中連線。

附錄:舊有與新連接方法比較

本節嘗試比較 Exchange Online PowerShell 模組所取代的舊有連線方式。 Basic 認證與 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
    
  • New-PSSession 搭配 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
    

連接多重驗證

  • Exchange Online PowerShell 模組,附有互動式憑證提示:

    Connect-ExchangeOnline -UserPrincipalName admin@contoso.onmicrosoft.com
    
  • 基本驗證:不可用。

  • New-PSSession 搭配 OAuth 代幣:不可用。

使用 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
    
  • New-PSSession 搭配 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
    

使用 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
    
  • New-PSSession 搭配 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
    

以訪客身份與客戶組織連結

  • 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
    
  • New-PSSession 搭配 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
    

連接以執行無人值守腳本

  • Exchange Online PowerShell 模組

    • 證書指紋

      注意事項

      CertificateThumbprint 參數僅支援 Microsoft Windows。

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

      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 Exchange Online 無人值守腳本的應用程式專用認證及合規安全 & PowerShell

  • 基本認證

    $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 搭配 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
    

使用管理身份連接

  • Exchange Online PowerShell 模組

    • 系統指派的管理身份

      Connect-ExchangeOnline -ManagedIdentity -Organization "contoso.onmicrosoft.com"
      
    • 使用者指派的管理身份

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

    欲了解更多資訊,請參閱使用 Azure 管理身份以連接 Exchange Online PowerShell

  • 基本驗證:不可用。

  • New-PSSession 搭配 OAuth 代幣:不可用。