本文包含如何使用 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」。
開始之前有哪些須知?
安裝與使用該模組的要求詳述於「安裝與維護 Exchange Online PowerShell 模組」。
Exchange Online PowerShell V3 模組中的 REST API 連線需要 PowerShellGet 和 PackageManagement 模組。 欲了解更多資訊,請參閱 PowerShellGet 以支援 Windows 中基於 REST 的連線。
連線後,基於角色的存取控制 (RBAC) 會控制你有或沒有權限的指令匣和參數。 如需詳細資訊,請參閱 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 指令列說明文預設不再載入。 使用 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
以下範例可在 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) ,因此登入提示會在預設瀏覽器中開啟,而非獨立對話框。
僅限多重驗證:驗證碼會根據您帳戶設定的回應選項產生並傳送,例如簡訊或裝置) Microsoft驗證器應用程式 (。
在打開的驗證視窗中,輸入驗證碼,然後選擇 「驗證」。
PowerShell 7 exclusive connection methods
在 PowerShell 7 中,對於 沒有 MFA 的帳號,這個範例會在 PowerShell 視窗中提示輸入憑證:
Connect-ExchangeOnline -UserPrincipalName navin@contoso.onmicrosoft.com -InlineCredential在 PowerShell 7 中,無論有沒有 MFA,這個例子都是用另一台電腦來驗證並完成連線。 通常,使用者無法在 PowerShell) 7 輸入憑證 (的電腦上使用此方法
在你想連接的電腦上執行以下指令:
Connect-ExchangeOnline -Device連線指令會在以下輸出處等待:
登入時,請使用網頁瀏覽器開啟頁面 https://microsoft.com/devicelogin 並輸入代碼 <XXXXXXXXX> 進行驗證。
請注意 <XXXXXXXXX> 的代碼值。
在任何有網頁瀏覽器和網路連線的裝置上,打開 https://microsoft.com/devicelogin 並輸入 <前一步的 XXXXXXXXX> 代碼值。
在結果頁面輸入你的資歷。
在確認提示中,選擇繼續。 下一則訊息應該會顯示成功,你可以關閉瀏覽器或分頁。
步驟 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.comExchange 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基本驗證:不可用。
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 $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 模組:
證書指紋:
注意事項
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 $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。
基本驗證:不可用。
New-PSSession 搭配 OAuth 代幣:不可用。