連線至 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 模組。
若要連線到 Exchange Online PowerShell 以進行自動化,請參閱自動腳本的僅限應用程式驗證和使用 Azure 受控識別連線到 Exchange Online PowerShell。
若要從 C# 連線到 Exchange Online PowerShell,請參閱使用 C# 連線到 Exchange Online PowerShell。
開始之前有哪些須知?
安裝和使用模組的需求會在安裝和維護 Exchange Online PowerShell 模組中說明。
注意事項
遠端 PowerShell 連線在 Exchange Online PowerShell 中已被取代。 如需詳細資訊,請參閱在 Exchange Online 中淘汰遠端 PowerShell。
Exchange Online PowerShell V3 模組中的 REST API 連線需要 PowerShellGet 和 PackageManagement 模組。 如需詳細資訊,請參閱 Windows 中 REST 型連線的 PowerShellGet。
連線後,您有權或無權存取的 cmdlet 和參數由角色型存取控制 (RBAC) 控制。 如需詳細資訊,請參閱 Exchange Online 中的權限。
若要尋找在組織中執行特定的 Exchange Online cmdlet 權限,請參閱 尋找執行任何 Exchange 指令程式所需的權限。
提示
有問題嗎? 在 Exchange Online 討論區中提問。
步驟 1:載入 Exchange Online PowerShell 模組
注意事項
如果模組已安裝,您通常可以略過此步驟並執行 Connect-ExchangeOnline, 而不需要先手動載入模組。
安裝模組之後,請開啟 PowerShell 視窗,然後執行下列命令來載入模組:
Import-Module ExchangeOnlineManagement
步驟 2:連線和驗證
注意事項
如果您用來連線之帳戶的配置檔路徑包含特殊 PowerShell 字元 (例如,) , $
則連線命令可能會失敗。 因應措施是使用配置檔路徑中沒有特殊字元的不同帳戶進行連線。
您需要執行的命令會使用下列語法:
Connect-ExchangeOnline -UserPrincipalName <UPN> [-ExchangeEnvironmentName <Value>] [-ShowBanner:$false] [-DelegatedOrganization <String>] [-SkipLoadingFormatData]
如需詳細的語法和參數資訊,請參閱 Connect-ExchangeOnline。
<UPN> 是使用者主體名稱格式的帳戶, (例如,
navin@contoso.onmicrosoft.com
) 。透過 EXO V3 模組 (v3.0.0 或更新版本) ,以及遠端 PowerShell (遠端 PowerShell) 連線至 Exchange Online 的基本身份驗證,您只會使用 REST API Cmdlet。 如需詳細資訊,請參閱 EXO V3 模組中的 REST API 連線。
當您使用 ExchangeEnvironmentName 參數時,不需要使用 ConnectionUri 或 AzureADAuthorizationEndPointUrl 參數。 下表說明 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 合作夥伴的身份來管理的客戶組織。 如需詳細資訊,請參閱 本文稍後的聯機範例。
視組織的性質而定,您可能可以在連線命令中省略 UserPrincipalName 參數。 相反地,執行 Connect-ExchangeOnline 命令之後,請輸入使用者名稱和密碼,或選取儲存的認證。 如果無法執行,則需要使用 UserPrincipalName 參數。
如果您未使用 MFA,您應該可以使用 Credential 參數,而非 UserPrincipalName 參數。 首先,執行命令
$Credential = Get-Credential
,輸入您的使用者名稱和密碼,然後使用 Credential 參數的變數名稱 (-Credential $Credential
)。 如果無法執行,則需要使用 UserPrincipalName 參數。使用 SkipLoadingFormatData 參數,以避免從 Windows 服務內連線到 Exchange Online PowerShell 時發生錯誤。
在 PowerShell 7 中使用模組需要 2.0.4 版或更新版本。
下列各節中的連線範例使用新式驗證,而且無法使用基本身份驗證。
使用互動式登入提示連線到 Exchange Online PowerShell
下列範例適用於具有或不含 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
在開啟的登入視窗中,輸入您的密碼,然後按一下 [登入]。
注意事項
在 PowerShell 7 中,預設會使用瀏覽器型單一登錄 (SSO) ,因此登入提示會在您的預設網頁瀏覽器中開啟,而不是在獨立對話框中開啟。
僅限 MFA:系統會產生驗證碼並根據針對您的帳戶設定的回應選項 (例如,您的裝置上的簡訊或 Microsoft Authenticator 應用程式) 傳送。
在開啟的驗證視窗中,輸入驗證碼,然後按一下 [驗證]。
PowerShell 7 獨佔連線方法
在 PowerShell 7 中, 針對沒有 MFA 的帳戶,此範例會在 PowerShell 視窗內提示輸入認證:
Connect-ExchangeOnline -UserPrincipalName navin@contoso.onmicrosoft.com -InlineCredential
在具有或不含 MFA 之帳戶的 PowerShell 7 中,此範例會使用另一部計算機來驗證並完成連線。 一般而言,您會在沒有網頁瀏覽器的計算機上使用此方法, (用戶無法在PowerShell 7 中輸入其認證) :
在您要連線的電腦上執行下列命令:
Connect-ExchangeOnline -Device
線上命令會在下列輸出等候:
若要登入,請使用網頁瀏覽器開啟頁面 https://microsoft.com/devicelogin ,並輸入程式碼 <XXXXXXXXX> 進行驗證。
<請注意 XXXXXXXXX 程式>代碼值。
在具有網頁瀏覽器和因特網存取的任何其他裝置上,開 https://microsoft.com/devicelogin 啟並輸入 <上一個步驟中的 XXXXXXXXX 代碼> 值。
在產生的頁面上輸入您的認證。
在確認提示中,按兩下 [ 繼續]。 下一則訊息應該表示成功,而且您可以關閉瀏覽器或索引標籤。
步驟 1 中的命令會繼續將您連線至 Exchange Online PowerShell。
連線到 Exchange Online PowerShell,而不需要登入提示 (自動腳本)
如需完整指示,請參閱 Exchange Online PowerShell 和安全性 & 合規性 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>
步驟 3:當您完成時中斷連線
完成時,請務必中斷會話的連線。 如果您關閉 PowerShell 視窗而不中斷工作階段的連線,您可以用掉所有可供您使用的工作階段,而且您必須等候工作階段到期。 若要中斷會話的連線,請執行下列命令:
Disconnect-ExchangeOnline
若要在沒有確認提示的情況下以無訊息方式中斷連線,請執行下列命令:
Disconnect-ExchangeOnline -Confirm:$false
注意事項
如果您用來連線之帳戶的配置檔路徑包含特殊 PowerShell 字元,例如 (,) ,則 $
中斷連線命令可能會失敗。 因應措施是使用配置檔路徑中沒有特殊字元的不同帳戶進行連線。
如何知道您已成功連線?
如果您未收到任何錯誤,表示您已成功連線。 快速測試是執行 Exchange Online PowerShell Cmdlet,例如 Get-AcceptedDomain,並查看結果。
如果出現錯誤,請檢查下列需求:
密碼錯誤是常見的問題。 再次執行連線步驟,並密切注意您使用的使用者名稱和密碼。
您用來連線的帳戶必須啟用才能存取 PowerShell。 如需詳細資訊,請參閱啟用或停用 Exchange Online 的封存權。
必須在本機電腦與 Microsoft 365 之間開啟 TCP 連接埠 80 流量。 該連接埠可能已開啟,但必須考量您的組織是否有限制性網際網路存取原則。
如果組織使用同盟驗證,而您的身分識別提供者 (IDP) 和/或安全性權杖服務 (STS) 並未公開提供,您就無法使用同盟帳戶連線到 Exchange Online PowerShell。 請改為在 Microsoft 365 中建立並使用非同盟帳戶以連線至 Exchange Online PowerShell。
以 REST 為基礎的連線 Exchange Online PowerShell 需要 PowerShellGet 模組,而依相依性,也需要 PackageManagement 模組,因此如果您嘗試連線但未安裝它們,則會收到錯誤。 例如,您可能會看到下列錯誤:
'Update-ModuleManifest' 一詞無法辨識為 Cmdlet、函式、腳本檔案或可操作程序的名稱。 請檢查名稱的拼寫,或者如果包含路徑,請確認路徑是否正確,然後再試一次。
如需 PowerShellGet 和 PackageManagement 模組需求的詳細資訊,請參閱 適用於 Windows 中 REST 連線的 PowerShellGet。
線上之後,您可能會收到如下的錯誤:
無法載入檔案或元件 'System.IdentityModel.Tokens.Jwt,Version=<Version>, Culture=neutral, PublicKeyToken=<TokenValue>'。 找不到或載入特定檔案。
當 Exchange Online PowerShell 模組與另一個匯入 Runspace 的模組發生衝突時,就會發生此錯誤。 請嘗試在新的 Windows 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 模組:
憑證指紋:
注意事項
只有 Microsoft Windows 才支援 CertificateThumbprint 參數。
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"
如需詳細資訊,請參閱 Exchange Online PowerShell 和安全性 & 合規性 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
具有 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>
基本身份驗證:無法使用。
具有 OAuth 令牌的 New-PSSession:無法使用。
意見反應
https://aka.ms/ContentUserFeedback。
即將登場:在 2024 年,我們將逐步淘汰 GitHub 問題作為內容的意見反應機制,並將它取代為新的意見反應系統。 如需詳細資訊,請參閱:提交並檢視相關的意見反應