Подключение к Exchange Online PowerShell

В этой статье содержатся инструкции по подключению к Exchange Online PowerShell с помощью модуля Exchange Online PowerShell с многофакторной проверкой подлинности (MFA) или без нее.

Совет

Инструкции по подключению, приведенные в этой статье, также относятся к встроенной надстройке безопасности для локальных почтовых ящиков.

Модуль Exchange Online PowerShell использует современную проверку подлинности для подключения к Exchange Online PowerShell и Security & Compliance PowerShell. Дополнительные сведения о модуле PowerShell Exchange Online см. в статье О модуле PowerShell Exchange Online.

Сведения о подключении к автоматической оболочке Exchange Online см. в статьях "Автоматическая проверка подлинности только в приложении" и "Использование управляемых удостоверений Azure для подключения к Exchange Online PowerShell".

Сведения о том, как подключиться к Exchange Online PowerShell из C#, см. в статье "Подключение к Exchange Online PowerShell с помощью C#".

Что нужно знать перед началом работы

Шаг 1. Загрузка модуля PowerShell Exchange Online

Примечание.

Если модуль уже установлен, обычно можно пропустить этот шаг и запустить 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 O365USGovGCCHigh
    Microsoft 365 DoD O365USGovDoD
    Office 365 Germany O365GermanyCloud
    Служба Office 365, предоставляемая 21Vianet O365China

    * Обязательное значение O365Default также является значением по умолчанию, поэтому вам не нужно использовать параметр ExchangeEnvironmentName в средах Microsoft 365 или Microsoft 365 GCC.

  • В версии 3.7.0 и более поздних версиях справка командной строки для командлетов PowerShell в Exchange Online больше не загружается по умолчанию. Используйте ключ LoadCmdletHelp, чтобы справка по командлетам PowerShell Exchange Online была доступна командлету Get-Help.

  • В параметре DelegatedOrganization указывается организация клиента, которой вы хотите управлять в качестве авторизованного партнера корпорации Майкрософт. Дополнительные сведения см. в примерах подключений далее в этой статье.

  • В зависимости от характера вашей организации можно опустить параметр UserPrincipalName в команде подключения. Вместо этого введите имя пользователя и пароль или выберите сохраненные учетные данные после выполнения команды Connect-ExchangeOnline. Если это не сработает, необходимо использовать параметр UserPrincipalName.

  • Если вы не используете многофакторную проверку подлинности, у вас должна быть возможность применить параметр Credential вместо параметра UserPrincipalName. Сначала запустите команду $Credential = Get-Credential, введите имя пользователя и пароль, а затем используйте имя переменной для параметра Credential (-Credential $Credential). Если это не сработает, необходимо использовать параметр UserPrincipalName.

  • Используйте переключатель SkipLoadingFormatData, чтобы избежать ошибок при подключении к Exchange Online PowerShell из службы Windows.

  • Для PowerShell 7 требуется версия 2.0.4 или более поздняя.

  • В версии 3.7.2 и более поздних версиях доступен параметр DisableWAM для отключения диспетчера учетных веб-записей (WAM) при возникновении ошибок подключения, связанных с WAM.

В примерах подключений в следующих разделах используется современная проверка подлинности, и базовая проверка подлинности недоступна.

Подключение к Exchange Online PowerShell с помощью интерактивного запроса на вход

  1. Следующие примеры работают в Windows PowerShell 5.1 и PowerShell 7 для учетных записей с MFA или без нее:

    • В этом примере выполняется подключение к Exchange Online PowerShell в организации Microsoft 365 или Microsoft 365 GCC:

      Connect-ExchangeOnline -UserPrincipalName navin@contoso.onmicrosoft.com
      
    • В этом примере выполняется подключение к Exchange Online PowerShell в организации Microsoft GCC High:

      Connect-ExchangeOnline -UserPrincipalName laura@blueyonderairlines.us -ExchangeEnvironmentName O365USGovGCCHigh
      
    • В этом примере выполняется подключение к Exchange Online PowerShell в организации Microsoft 365 DoD:

      Connect-ExchangeOnline -UserPrincipalName julia@adatum.mil -ExchangeEnvironmentName O365USGovDoD
      
    • В этом примере выполняется подключение к Exchange Online PowerShell в организации Office 365 Germany:

      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
    
  • В 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 без запроса на вход (автоматические сценарии)

Полные инструкции см. в разделах Проверка подлинности только в приложении для автоматических сценариев в Exchange Online PowerShell и Security & Compliance 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 (например, $). В качестве обходного решения можно подключиться с помощью другой учетной записи, в пути к профилю которой нет специальных символов.

Как узнать, что вы успешно подключились?

Если при этом не возникают ошибки, подключение установлено. Для быстрой проверки запустите командлет PowerShell для Exchange Online, например Get-AcceptedDomain, и просмотрите результаты.

Если возникают ошибки, просмотрите список возможных причин ниже.

  • Распространенная проблема — неправильный пароль. Повторите этапы подключения и обратите особое внимание на используемые имя пользователя и пароль.

  • Учетная запись, используемая для подключения, должна иметь доступ к PowerShell. Дополнительные сведения см. в статье Включение и отключение доступа к Exchange Online PowerShell.

  • Необходимо открыть TCP-порт 80 для трафика между локальным компьютером и Microsoft 365. Вполне вероятно, что он уже открыт, но в этом следует убедиться, если в вашей организации действует политика ограниченного доступа к Интернету.

  • Если в вашей организации используется федеративная проверка подлинности и ваш поставщик удостоверений (IDP) и/или служба маркеров безопасности (STS) не являются общедоступными, вы не сможете использовать федеративную учетную запись для подключения к Exchange Online PowerShell. Вместо этого создайте и используйте нефедеративную учетную запись в Microsoft 365 для подключения к Exchange Online PowerShell.

  • Для подключений на основе REST к PowerShell в Exchange Online требуется модуль PowerShellGet. В зависимости для модуля PowerShellGet требуется модуль PackageManagement. При попытке подключения без установленных обоих модулей возникают ошибки. Например, вы можете увидеть следующую ошибку:

    Термин "Update-ModuleManifest" не распознается как имя командлета, функции, файла сценария или работоспособной программы. Проверьте орфографию имени или в случае включения пути проверьте правильность указания пути и повторите попытку.

    Дополнительные сведения о требованиях к модулям PowerShellGet и PackageManagement см. в статье PowerShellGet для подключений на основе REST в Windows.

  • После подключения может появиться сообщение об ошибке, которое выглядит следующим образом:

    Не удалось загрузить файл или сборку 'System.IdentityModel.Tokens.Jwt,Version=<Version>, Culture=neutral, PublicKeyToken<=TokenValue>'. Не удалось найти или загрузить определенный файл.

    Эта ошибка возникает, когда модуль PowerShell Exchange Online конфликтует с другим модулем, импортированным в пространство выполнения. Попробуйте подключиться в новом окне Windows PowerShell перед импортом других модулей.

Приложение: Сравнение старых и новых способов подключения

В этом разделе предпринята попытка сравнить старые методы подключения, которые заменил модуль PowerShell в Exchange Online. Основные проверки подлинности и процедуры токена OAuth включены только для справки за прошлые периоды и больше не поддерживаются.

Подключение без многофакторной проверки подлинности

  • Модуль PowerShell Exchange Online с интерактивным запросом на ввод учетных данных:

    Connect-ExchangeOnline -UserPrincipalName admin@contoso.onmicrosoft.com
    
  • Модуль PowerShell Exchange Online без интерактивного запроса на ввод учетных данных:

    $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
    

Подключитесь с помощью многофакторной проверки подлинности

  • Модуль PowerShell Exchange Online с интерактивным запросом на ввод учетных данных:

    Connect-ExchangeOnline -UserPrincipalName admin@contoso.onmicrosoft.com
    
  • Обычная проверка подлинности: недоступна.

  • New-PSSession с маркером OAuth: недоступно.

Подключение к организации-клиенту с помощью учетной записи CSP

  • Модуль PowerShell Exchange Online:

    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

  • Модуль PowerShell Exchange Online:

    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
    

Подключитесь к клиентской организации в качестве гостя

  • Модуль PowerShell Exchange Online:

    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
    

Подключение для автоматического выполнения сценариев

  • Модуль PowerShell Exchange Online:

    • Отпечаток сертификата:

      Примечание.

      Параметр 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"
      

    Дополнительные сведения см. в разделах Проверка подлинности только в приложении для автоматических сценариев в Exchange Online PowerShell и Security & Compliance 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
    

Подключение с помощью управляемого удостоверения

  • Модуль PowerShell Exchange Online:

    • Назначенное системой управляемое удостоверение:

      Connect-ExchangeOnline -ManagedIdentity -Organization "contoso.onmicrosoft.com"
      
    • Назначенное пользователем управляемое удостоверение:

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

    Дополнительные сведения см. в статье Использование управляемых удостоверений Azure для подключения к Exchange Online PowerShell.

  • Обычная проверка подлинности: недоступна.

  • New-PSSession с маркером OAuth: недоступно.