本文包含如何使用 Exchange Online PowerShell 模組連線到 Exchange Online PowerShell,搭配或不使用多重要素驗證 (MFA) 。
提示
本文中的連線指示也適用於 內部部署信箱的內建安全性附加元件。
Exchange Online PowerShell 模組使用新式驗證連線到 Exchange Online PowerShell 和安全性 & 合規性 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 模組的必要條件和 ExchangeOnline PowerShell 模組支援的作業系統中說明了安裝和使用模組的需求。
連線之後,角色型存取控制 (RBAC) 會控制您有權或無權存取的 Cmdlet 和參數。 如需詳細資訊,請參閱 Exchange Online 中的權限。
若要尋找在組織中執行特定的 Exchange Online cmdlet 權限,請參閱 尋找執行任何 Exchange 指令程式所需的權限。
步驟 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 參數時,不需要使用 ConnectionUri 或 AzureADAuthorizationEndPointUrl 參數。 下表說明 ExchangeEnvironmentName 參數的常見值:
環境 值 Microsoft 365 或 Microsoft 365 GCC 不適用* Microsoft 365 GCC High O365USGovGCCHighMicrosoft 365 DoD O365USGovDoDOffice 365 Germany O365GermanyCloud由 21Vianet 運作的 Office 365 O365China* 必要值
O365Default也是預設值,因此您不需要在 Microsoft 365 或 Microsoft 365 GCC 環境中使用 ExchangeEnvironmentName 參數。在版本 3.7.0 或更新版本中,不再預設載入 Exchange Online PowerShell Cmdlet 的命令列說明。 使用 LoadCmdletHelp 參數,讓 Get-Help Cmdlet 可以使用 Exchange Online PowerShell Cmdlet 的說明。
DelegatedOrganization 參數指定您要以授權的 Microsoft 合作夥伴的身份來管理的客戶組織。 如需詳細資訊,請參閱 本文稍後的連線範例。
視組織的性質而定,您或許可以省略 connection 命令中的 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 參數可用來停用 Web 帳戶管理員 (WAM) 。
下列各節中的連線範例使用新式驗證,而且無法使用基本驗證。
使用互動式登入提示連線到 Exchange Online PowerShell
下列範例適用於 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
在開啟的登入視窗中,輸入您的密碼,然後選取 [登入]。
注意事項
在 PowerShell 7 中,預設會使用瀏覽器型單一登入 (SSO) ,因此登入提示會在您的預設網頁瀏覽器中開啟,而不是獨立對話方塊。
僅限 MFA:驗證碼是根據為您帳戶設定的回應選項產生並傳遞 (例如簡訊或裝置上的 Microsoft Authenticator 應用程式) 。
在開啟的驗證視窗中,輸入驗證碼,然後選取 [ 驗證]。
PowerShell 7 專用連線方法
在適用於 沒有 MFA 的帳戶的 PowerShell 7 中,此範例會在 PowerShell 視窗內提示輸入認證:
Connect-ExchangeOnline -UserPrincipalName navin@contoso.onmicrosoft.com -InlineCredential在 PowerShell 7 中,對於有或沒有 MFA 的帳戶,此範例會使用另一部電腦來驗證並完成連線。 一般而言,在沒有網頁瀏覽器的電腦上使用此方法, (使用者無法在 PowerShell 7 中輸入其認證,) :
在您要連線的電腦上執行下列命令:
Connect-ExchangeOnline -Deviceconnection 命令會等候下列輸出:
若要登入,請使用網頁瀏覽器開啟頁面 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。
與 Exchange Online PowerShell 的 REST 型連線需要 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 模組所取代的舊版連線方法。 基本驗證和 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 $SessionNew-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基本驗證:無法使用。
具有 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 $SessionNew-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 $SessionNew-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 $SessionNew-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 模組:
憑證指紋:
注意事項
只有 Microsoft Windows 才支援 CertificateThumbprint 參數。
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"
如需詳細資訊,請參閱 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 $SessionNew-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。
基本驗證:無法使用。
具有 OAuth 權杖的 New-PSSession:無法使用。