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

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

Модуль PowerShell Exchange Online использует современную проверку подлинности для подключения ко всем средам PowerShell, связанным с Exchange, в Microsoft 365: Exchange Online PowerShell, PowerShell для обеспечения безопасности & соответствия требованиям и автономной Exchange Online Protection (EOP) PowerShell. Дополнительные сведения о модуле PowerShell Exchange Online см. в разделе Сведения о модуле PowerShell Exchange Online.

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

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

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

Совет

Возникли проблемы? Обратитесь на форум по Exchange Online.

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

Примечание.

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

После установки модуля откройте окно PowerShell и загрузите модуль, выполнив следующую команду:

Import-Module ExchangeOnlineManagement

Шаг 2. Подключение и проверка подлинности

Примечание.

Команды connect, скорее всего, завершатся ошибкой, если путь к профилю учетной записи, используемой для подключения, содержит специальные символы PowerShell (например, $). Обходной путь заключается в подключении с помощью другой учетной записи, которая не содержит специальных символов в пути к профилю.

В команде, которую вам нужно выполнить, используется следующий синтаксис:

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

Дополнительные сведения о синтаксисе и параметрах см. в статье Connect-ExchangeOnline.

  • <Имя> участника-пользователя — это ваша учетная запись в формате имени участника-пользователя (например, navin@contoso.onmicrosoft.com).

  • При использовании модуля EXO версии 3 (версии 3.0.0 или более поздней версии) и прекращения подключения обычной проверки подлинности (удаленного PowerShell) к Exchange Online вы используете только командлеты REST API. Дополнительные сведения см. в разделе Подключения REST API в модуле EXO версии 3.

  • Если вы используете параметр 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.

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

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

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

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

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

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

Подключение к 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 по умолчанию используется единый вход на основе браузера, поэтому запрос на вход открывается в веб-браузере по умолчанию, а не в автономном диалоговом окне.

  3. Только многофакторная проверка подлинности: Код проверки создается и отправляется на основе варианта ответа, настроенного для вашей учетной записи (например, текстовое сообщение или приложение 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 в веб-браузере и введите код <XXXXXXXXXX для> проверки подлинности.

      Обратите внимание на <значение кода XXXXXXXXXXX> .

    2. На любом другом устройстве с веб-браузером и доступом к Интернету <откройте https://microsoft.com/devicelogin и введите значение кода XXXXXXXXX> из предыдущего шага.

    3. Введите учетные данные на результирующие страницы.

    4. В запросе на подтверждение нажмите кнопку Продолжить. Следующее сообщение должно указывать на успешное выполнение, и вы можете закрыть браузер или вкладку.

    5. Команда из шага 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 (например, $). Обходной путь заключается в подключении с помощью другой учетной записи, которая не содержит специальных символов в пути к профилю.

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

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

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

  • Распространенная проблема — неправильный пароль. Выполните шаги подключения еще раз и обратите внимание на имя пользователя и пароль, которые вы используете.

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

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

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

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

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

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

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

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

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

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

В этом разделе предпринята попытка сравнить старые методы подключения, которые были заменены модулем PowerShell Exchange Online. Процедуры обычной проверки подлинности и маркера 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"
      
    • Объект 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
    
  • 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: недоступно.