Сведения о модуле PowerShell Exchange Online

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

Инструкции по подключению с помощью модуля см. в следующих статьях:

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

Совет

Версия 3.0.0 и более поздние версии (2022) называется модулем Exchange Online PowerShell версии 3 (сокращенно — модуль EXO V3). Версия 2.0.5 и более ранние версии (2021) была известна как модуль Exchange Online PowerShell версии 2 (сокращенно — модуль EXO V2).

Подключения REST API в модуле EXO версии 3

Все доступные командлеты в Exchange Online PowerShell и Безопасность & соответствия PowerShell поддерживаются REST API на основе версии модуля EXO V3:

  • Exchange Online PowerShell: версии 3.0.0 или более поздней.
  • Безопасность & соответствия Требованиям PowerShell: версии 3.2.0 или более поздней.

В Exchange Online PowerShell и в PowerShell для соответствия требованиям безопасности & подключения REST API используются по умолчанию и требуют модулей PowerShellGet и PackageManagement. Дополнительные сведения см. в статье PowerShellGet для подключений на основе REST в Windows.

Командлеты REST API имеют следующие преимущества по сравнению со своими историческими аналогами:

  • Более безопасно: командлеты REST API имеют встроенную поддержку современной проверки подлинности и не используют удаленный сеанс PowerShell, поэтому PowerShell на клиентском компьютере не требует обычной проверки подлинности в WinRM.
  • Более надежно: командлеты REST API обрабатывают временные сбои с помощью встроенных повторных попыток, чтобы свести к минимуму сбои или задержки. Например:
    • Сбои из-за задержек в сети.
    • Задержки из-за больших запросов, которые занимают много времени.
  • Повышение производительности. Подключение позволяет избежать настройки пространства выполнения PowerShell.

Преимущества командлетов REST API описаны в следующей таблице:

  Удаленные командлеты PowerShell Командлеты Get-EXO* Командлеты REST API
Безопасность Наименее безопасный Высокий уровень безопасности Высокий уровень безопасности
Производительность Низкая производительность Высокая производительность Средняя производительность
Надежность Наименее надежный Высоконадежные Высоконадежные
Функция Доступны все параметры и свойства выходных данных Доступные ограниченные параметры и выходные свойства Доступны все параметры и свойства выходных данных

Командлеты REST API имеют те же имена командлетов и работают так же, как и их удаленные эквиваленты PowerShell, поэтому вам не нужно обновлять скрипты.

Совет

Командлет Invoke-Command не работает в подключениях REST API. Альтернативные варианты см. в статье Обходные решения для сценариев Invoke-Command в подключениях к REST API.

Подключения обычной проверки подлинности (remote PowerShell) устарели в Exchange Online PowerShell и PowerShell & безопасности. Дополнительные сведения см. здесь и здесь.

Несколько командлетов REST API в Exchange Online PowerShell были обновлены с помощью экспериментального переключателя UseCustomRouting. Этот переключатель направляет команду прямо на нужный сервер почтовых ящиков. При этом может повышаться общая производительность.

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

    • Имя участника-пользователя (UPN)
    • Адрес электронной почты
    • GUID почтового ящика
  • Переключатель UseCustomRouting доступен только для следующих командлетов REST API в Exchange Online PowerShell:

    • Get-Clutter
    • Get-FocusedInbox
    • Get-InboxRule
    • Get-MailboxAutoReplyConfiguration
    • Get-MailboxCalendarFolder
    • Get-MailboxFolderPermission
    • Get-MailboxFolderStatistics
    • Get-MailboxMessageConfiguration
    • Get-MailboxPermission
    • Get-MailboxRegionalConfiguration
    • Get-MailboxStatistics
    • Get-MobileDeviceStatistics
    • Get-UserPhoto
    • Remove-CalendarEvents
    • Set-Clutter
    • Set-FocusedInbox
    • Set-MailboxRegionalConfiguration
    • Set-UserPhoto

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

  • Используйте командлет Get-ConnectionInformation, чтобы получить сведения о подключениях на основе REST для Exchange Online PowerShell и безопасности & соответствия Требованиям PowerShell. Этот командлет является обязательным, так как командлет Get-PSSession в Windows PowerShell не возвращает сведения о подключениях на основе REST.

    Сценарии, в которых можно использовать Get-ConnectionInformation , описаны в следующей таблице:

    Сценарий Ожидаемые выходные данные
    Выполните команду Connect-ExchangeOnline или Connect-IPPSSession . Не возвращает никакого значения.
    Выполните команду Connect-ExchangeOnline или Connect-IPPSSession , которая подключается в режиме REST API. Возвращает один объект сведений о подключении.
    Выполните после нескольких команд Connect-ExchangeOnline или Connect-IPPSSession на основе REST. Возвращает коллекцию объектов сведений о подключении.
  • Используйте переключатель SkipLoadingFormatData в командлете Connect-ExchangeOnline , чтобы избежать загрузки данных формата и ускорить выполнение команд Connect-ExchangeOnline .

  • Командлеты, поддерживаемые REST API, имеют время ожидания в 15 минут, что может повлиять на массовые операции. Например, следующая команда Update-DistributionGroupMember для обновления 10000 членов группы рассылки может истекать:

    $Members = @("member1","member2",...,"member10000")
    
    Update-DistributionGroupMember -Identity DG01 -Members $Members
    

    Вместо этого используйте команду Update-DistributionGroupMember , чтобы обновить меньше элементов, а затем добавить остальные члены по отдельности с помощью команды Add-DistributionGroupMember . Например:

    Update-DistributionGroupMember -Identity DG01 -Members $Members[0..4999]
    
    $Remaining = $Members[-5000..-1]
    
    foreach ($Member in $Remaining)
    
    {
       Add-DistributionGroupMember -Identity DG01 -Member $Member
    }
    

Дополнительные сведения о новых возможностях модуля EXO версии 3 см. в разделе Заметки о выпуске далее в этой статье.

Сообщение об ошибках и проблемах для модуля PowerShell Exchange Online

Примечание.

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

При отправке отчета о проблемах в exocmdletpreview[at]service[dot]microsoft[dot]com не забудьте включить файлы журналов в сообщение электронной почты. Чтобы создать файлы журнала, замените <Path для хранения файла> журнала нужной выходной папкой и выполните следующую команду:

Connect-ExchangeOnline -EnableErrorReporting -LogDirectoryPath <Path to store log file> -LogLevel All

Примечание.

Частое использование командлетов Connect-ExchangeOnline и Disconnect-ExchangeOnline в одном сеансе или сценарии PowerShell может привести к утечке памяти. Лучший способ избежать этой проблемы — использовать параметр CommandName в командлете Connect-ExchangeOnline, чтобы ограничить командлеты, применяемые в сеансе.

Командлеты в модуле PowerShell Exchange Online

Все версии модуля содержат девять эксклюзивных командлетов Get-EXO* для Exchange Online PowerShell, оптимизированных для ускорения сценариев массового получения данных (тысячи и тысячи объектов). Улучшенные Exchange Online командлетов PowerShell, доступные только в модуле, перечислены в следующей таблице:

Командлет модуля EXO Соответствующий старый командлет
Get-EXOMailbox Get-Mailbox
Get-EXORecipient Get-Recipient
Get-EXOCasMailbox Get-CASMailbox
Get-EXOMailboxPermission Get-MailboxPermission
Get-EXORecipientPermission Get-RecipientPermission
Get-EXOMailboxStatistics Get-MailboxStatistics
Get-EXOMailboxFolderStatistics Get-MailboxFolderStatistics
Get-EXOMailboxFolderPermission Get-MailboxFolderPermission
Get-EXOMobileDeviceStatistics Get-MobileDeviceStatistics

Примечание.

При открытии нескольких подключений к Exchange Online PowerShell в одном окне командлеты Get-EXO* всегда связаны с последним (последним) Exchange Online подключением PowerShell. Выполните следующую команду, чтобы найти сеанс REST API, в котором выполняются командлеты Get-EXO* : Get-ConnectionInformation | Where-Object {$_.ConnectionUsedForInbuiltCmdlets -eq $true}.

Командлеты, связанные с подключением, в модуле перечислены в следующей таблице:

Командлет модуля EXO Соответствующий старый командлет Comments
Connect-ExchangeOnline Connect-EXOPSSession в версии 1 модуля
или
New-PSSession
Connect-IPPSSession Connect-IPPSSession в версии 1 модуля
Disconnect-ExchangeOnline Remove-PSSession
Get-ConnectionInformation Get-PSSession Доступно в версии 3.0.0 или более поздней версии.

Другие командлеты Exchange Online, которые находятся в модуле, перечислены в следующей таблице:

Командлет Comments
Get-DefaultTenantBriefingConfig Доступно в версии 3.2.0 или более поздней версии.
Set-DefaultTenantBriefingConfig Доступно в версии 3.2.0 или более поздней версии.
Get-DefaultTenantMyAnalyticsFeatureConfig Доступно в версии 3.2.0 или более поздней версии.
Set-DefaultTenantMyAnalyticsFeatureConfig Доступно в версии 3.2.0 или более поздней версии.
Get-MyAnalyticsFeatureConfig Этот командлет доступен в версии 2.0.4 и последующих версиях.
Set-MyAnalyticsFeatureConfig Этот командлет доступен в версии 2.0.4 и последующих версиях.
Get-UserBriefingConfig Заменен командлетом Get-MyAnalyticsFeatureConfig.
Set-UserBriefingConfig Заменен командлетом Set-MyAnalyticsFeatureConfig.
Get-VivaInsightsSettings Доступно в версии 2.0.5 и более поздних версиях.
Set-VivaInsightsSettings Доступно в версии 2.0.5 и более поздних версиях.
Get-VivaModuleFeature Доступно в версии 3.2.0 или более поздней версии.
Get-VivaModuleFeatureEnablement Доступно в версии 3.2.0 или более поздней версии.
Add-VivaModuleFeaturePolicy Доступно в версии 3.2.0 или более поздней версии.
Get-VivaModuleFeaturePolicy Доступно в версии 3.2.0 или более поздней версии.
Remove-VivaModuleFeaturePolicy Доступно в версии 3.2.0 или более поздней версии.
Update-VivaModuleFeaturePolicy Доступно в версии 3.2.0 или более поздней версии.

Установка и обслуживание модуля PowerShell Exchange Online

Скачайте модуль из коллекции PowerShell по адресу https://www.powershellgallery.com/packages/ExchangeOnlineManagement/.

В процедурах, описанных в этом разделе, объясняется, как установить, обновить и удалить модуль.

Поддерживаемые операционные системы для модуля PowerShell Exchange Online

Последние версии модуля официально поддерживаются в PowerShell 7 в Windows, Linux и Apple macOS.

В частности, в PowerShell 7.0.3 или более поздней версии поддерживается версия 2.0.4 или более поздняя.

Дополнительные сведения о PowerShell 7 см. в статье Объявление о PowerShell 7.0.

Apple macOS

Модуль поддерживается в следующих версиях macOS:

  • macOS 11 Big Sur и более поздние версии
  • macOS 10.15 Catalina
  • macOS 10.14 Mojave

Инструкции по установке PowerShell 7 в macOS см. в статье Установка PowerShell в macOS.

Примечание.

Как описано в статье об установке, необходимо установить OpenSSL, что необходимо для WSMan.

После установки PowerShell 7 и OpenSSL выполните следующие действия.

  1. Запустите PowerShell в качестве суперпользователя: sudo pwsh

  2. В сеансе суперпользователя PowerShell запустите следующие команды:

    Install-Module -Name PSWSMan
    
    Install-WSMan
    

    Если будет предложено, примите PSGallery в качестве источника командлетов.

Теперь вы можете выполнить обычные предварительные требования к PowerShell и установить Exchange Online модуля PowerShell.

Linux

Модуль официально поддерживается в следующих дистрибутивах Linux:

  • Ubuntu 18.04 LTS
  • Ubuntu 20.04 LTS

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

Инструкции по установке PowerShell 7 в Linux см. в статье Установка PowerShell в Linux.

После установки PowerShell 7 выполните следующие действия:

  1. Запустите PowerShell в качестве суперпользователя: sudo pwsh

  2. В сеансе суперпользователя PowerShell запустите следующие команды:

    Install-Module -Name PSWSMan
    
    Install-WSMan
    

    Если будет предложено, примите PSGallery в качестве источника командлетов.

Теперь вы можете выполнить обычные предварительные требования к PowerShell и установить Exchange Online модуля PowerShell.

Примечание.

При подключении к Exchange Online PowerShell из сети, которая находится за прокси-сервером, модуль EXO версии 2 (версия 2.0.5 или более ранняя) не работает в Linux. Необходимо использовать модуль EXO версии 3 (версии 3.0.0 или более поздней версии) в Linux для подключения из сети, которая находится за прокси-сервером.

Windows

Все версии модуля поддерживаются в Windows PowerShell 5.1.

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

Для подключения к модулю версии 2.0.5 или более поздней требуется microsoft платформа .NET Framework 4.7.2 или более поздней. В противном случае появится сообщение об ошибке System.Runtime.InteropServices.OSPlatform . Это требование не должно быть проблемой в текущих версиях Windows. Дополнительные сведения о версиях Windows, поддерживающих платформа .NET Framework 4.7.2, см. в этой статье.

Windows PowerShell требования и поддержка модулей в более ранних версиях Windows описаны в следующем списке:

  • Windows 8.1¹

  • Windows Server 2012 или Windows Server 2012 R2¹

  • Windows 7 с пакетом обновления 1 (SP1)2 ⁴

  • Windows Server 2008 R2 с пакетом обновления 1 (SP1)⁴

  • ¹ PowerShell 7 в этой версии Windows требуется Windows 10 универсальная среда выполнения C (CRT).

  • 2 Эта версия Windows достигла своего окончания поддержки и теперь поддерживается только на виртуальных машинах Azure.

  • ³ Эта версия Windows поддерживает только версию 2.0.3 или более ранние версии модуля.

  • ⁴ Windows PowerShell 5.1 в этой версии Windows требуется платформа .NET Framework 4.5 или более поздней версии и Windows Management Framework 5.1. Дополнительные сведения см. в статье Windows Management Framework 5.1.

Предварительные требования для модуля PowerShell Exchange Online

Задайте для политики выполнения PowerShell значение RemoteSigned.

Примечание.

Параметры в этом разделе применяются ко всем версиям PowerShell во всех операционных системах.

Чтобы запускать сценарии, необходимо настроить PowerShell. По умолчанию это приложение не настроено. При попытке подключения появится указанная ниже ошибка.

Файлы невозможно загрузить, поскольку выполнение сценариев в этой системе отключено. Предоставьте действительный сертификат для подписи файлов.

Чтобы требовать подпись надежного издателя для всех сценариев PowerShell, загружаемых из Интернета, выполните следующую команду в окне PowerShell с повышенными привилегиями (окно PowerShell, открываемое с помощью параметра Запуск от имени администратора).

Set-ExecutionPolicy RemoteSigned

Дополнительные сведения о политиках выполнения см. в статье Сведения о политиках выполнения.

Включение обычной проверки подлинности в WinRM

Примечание.

Для подключений на основе REST не требуется обычная проверка подлинности в WinRM, как описано в этом разделе. Как описано ранее в этой статье, обычная проверка подлинности (удаленная проверка подлинности) к Exchange Online PowerShell и PowerShell & безопасности не рекомендуется использовать. Сведения в этом разделе хранятся в исторических целях.

Для удаленных подключений PowerShell, которые не используют REST API (которые теперь невозможны), WinRM должен разрешить обычную проверку подлинности. Мы не отправляем сочетание имени пользователя и пароля. Заголовок обычная проверка подлинности требуется для отправки маркера OAuth сеанса, так как клиентская реализация WinRM не поддерживает OAuth.

Чтобы проверить, включена ли обычная проверка подлинности для WinRM, выполните в командной строке или в Windows PowerShell следующую команду.

Примечание.

Для следующих команд требуется включить WinRM. Чтобы включить WinRM, выполните следующую команду: winrm quickconfig.

winrm get winrm/config/client/auth

Если значение Basic = true не отображается, необходимо выполнитьодну из следующих команд, чтобы включить обычную проверку подлинности для WinRM:

  • В командной строке:

    winrm set winrm/config/client/auth @{Basic="true"}
    
  • В Windows PowerShell:

    winrm set winrm/config/client/auth '@{Basic="true"}'
    
  • В Windows PowerShell для изменения реестра:

    Set-ItemProperty -Path 'HKLM:\SOFTWARE\Policies\Microsoft\Windows\WinRM\Client' -Name 'AllowBasic' -Type DWord -Value '1'
    

Если обычная проверка подлинности для WinRM отключена, при попытке подключиться с помощью подключения к Обычной проверке подлинности (удаленному подключению PowerShell) возникает одна из следующих ошибок:

Клиенту WinRM не удается обработать этот запрос. В настоящий момент в конфигурации клиента обычная проверка подлинности отключена. Измените конфигурацию клиента и повторите запрос.

Не удалось создать сеанс Powershell с помощью OAuth.

PowerShellGet для подключений на основе REST в Windows

Для подключений на основе REST в Windows требуется модуль PowerShellGet, а по зависимости — модуль PackageManagement. Эти модули больше относятся к PowerShell 5.1, чем к PowerShell 7, но все версии PowerShell получают преимущество от установки последних версий модулей. Инструкции по установке и обновлению см. в статье Установка PowerShellGet в Windows.

Примечание.

Бета-версии модулей PackageManagement или PowerShellGet могут вызвать проблемы с подключением. Если у вас возникли проблемы с подключением, убедитесь, что у вас нет установленных бета-версий модулей, выполнив следующую команду: Get-InstalledModule PackageManagement -AllVersions; Get-InstalledModule PowerShellGet -AllVersions.

Если powerShellGet не установлен при попытке создать подключение на основе REST, при попытке подключения вы получите следующую ошибку:

Не удается найти Update-Manifest командлета

Установка модуля PowerShell Exchange Online

Чтобы установить модуль в первый раз, выполните следующие действия.

  1. Установите или обновите модуль PowerShellGet, как описано в статье Установка PowerShellGet.

  2. Закройте и снова откройте окно Windows PowerShell.

  3. Теперь можно использовать командлет Install-Module для установки модуля из коллекция PowerShell. Как правило, требуется последняя общедоступная версия модуля, но вы также можете установить предварительную версию, если она доступна.

    • Чтобы установить последнюю общедоступную версию модуля, выполните одну из следующих команд:

      • В окне PowerShell с повышенными правами (все пользователи):

        Install-Module -Name ExchangeOnlineManagement
        
      • Только для учетной записи текущего пользователя:

        Install-Module -Name ExchangeOnlineManagement -Scope CurrentUser
        
    • Чтобы просмотреть доступные предварительные версии модуля, выполните следующую команду:

      Find-Module ExchangeOnlineManagement -AllVersions -AllowPrerelease
      
    • Чтобы установить последнюю доступную предварительную версию модуля, выполните одну из следующих команд:

      • В окне PowerShell с повышенными правами (все пользователи):

        Install-Module -Name ExchangeOnlineManagement -AllowPrerelease
        
      • Только для учетной записи текущего пользователя:

        Install-Module -Name ExchangeOnlineManagement -Scope CurrentUser -AllowPrerelease
        
    • Чтобы установить определенную предварительную версию модуля, замените <PreviewVersion> необходимым значением и выполните одну из следующих команд:

      • В окне PowerShell с повышенными правами (все пользователи):

        Install-Module -Name ExchangeOnlineManagement -RequiredVersion <PreviewVersion> -AllowPrerelease
        
      • Только для учетной записи текущего пользователя:

        Install-Module -Name ExchangeOnlineManagement -RequiredVersion <PreviewVersion> -AllowPrerelease -Scope CurrentUser
        

    После завершения введите Y, чтобы принять лицензионное соглашение.

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

Обновление модуля PowerShell Exchange Online

Если модуль уже установлен на компьютере, можно использовать процедуры, описанные в этом разделе, для обновления модуля.

  1. Чтобы просмотреть версию установленного модуля и его расположение, выполните следующую команду:

    Get-InstalledModule ExchangeOnlineManagement | Format-List Name,Version,InstalledLocation
    

    Если модуль установлен в папке C:\Program Files\WindowsPowerShell\Modules, он устанавливается для всех пользователей. Если модуль установлен в папке Документы, он устанавливается только для текущей учетной записи пользователя.

  2. Чтобы обновить модуль из коллекция PowerShell, можно использовать командлет Update-Module. Как правило, требуется последняя общедоступная версия модуля, но вы также можете выполнить обновление до предварительной версии, если они доступны.

    • Чтобы выполнить обновление до последней общедоступной версии модуля, выполните одну из следующих команд в зависимости от того, как вы изначально установили модуль (все пользователи и только для текущей учетной записи пользователя):

      • В окне PowerShell с повышенными правами (все пользователи):

        Update-Module -Name ExchangeOnlineManagement
        
      • Только для учетной записи текущего пользователя:

        Update-Module -Name ExchangeOnlineManagement -Scope CurrentUser
        
    • Чтобы выполнить обновление до предварительной версии модуля, можно обновить до последней доступной предварительной версии или использовать параметр RequiredVersion для обновления до определенной предварительной версии.

      • Чтобы просмотреть доступные предварительные версии модуля, выполните следующую команду:

        Find-Module ExchangeOnlineManagement -AllVersions -AllowPrerelease
        
      • Чтобы обновить модуль до последней доступной предварительной версии , выполните одну из следующих команд:

        • В окне PowerShell с повышенными правами (все пользователи):

          Update-Module -Name ExchangeOnlineManagement -AllowPrerelease
          
        • Только для учетной записи текущего пользователя:

          Update-Module -Name ExchangeOnlineManagement -Scope CurrentUser -AllowPrerelease
          
      • Чтобы выполнить обновление до определенной предварительной версии модуля, замените <PreviewVersion> необходимым значением и выполните одну из следующих команд:

        • В окне PowerShell с повышенными правами (все пользователи):

          Update-Module -Name ExchangeOnlineManagement -RequiredVersion <PreviewVersion> -AllowPrerelease
          
        • Только для учетной записи текущего пользователя:

          Update-Module -Name ExchangeOnlineManagement -Scope CurrentUser -RequiredVersion <PreviewVersion> -AllowPrerelease
          

    После завершения введите Y, чтобы принять лицензионное соглашение.

  3. Чтобы убедиться в успешности обновления, выполните следующие команды для проверки версии установленного модуля:

    Import-Module ExchangeOnlineManagement; Get-Module ExchangeOnlineManagement
    

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

Устранение неполадок с установкой модуля PowerShell Exchange Online

  • Вы получаете одну из следующих ошибок:

    Указанный модуль ExchangeOnlineManagement с PowerShellGetFormatVersion version<> не поддерживается текущей версией PowerShellGet. Получите последнюю версию модуля PowerShellGet, чтобы установить этот модуль, "ExchangeOnlineManagement".

    ПРЕДУПРЕЖДЕНИЕ. Не удается скачать из URI 'https://go.microsoft.com/fwlink/?LinkID=627338& clcid=0x409" до "".

    ПРЕДУПРЕЖДЕНИЕ. Не удается скачать список доступных поставщиков. Проверьте подключение к Интернету.

    Обновите установку модуля PowerShellGet до последней версии, как описано в разделе Установка PowerShellGet. Закройте и снова откройте окно PowerShell, прежде чем вновь обновлять модуль ExchangeOnlineManagement.

  • С апреля 2020 г. коллекция PowerShell поддерживает только подключения с использованием TLS 1.2 или более поздней версии. Дополнительные сведения см. в разделе Поддержка TLS в коллекции PowerShell.

    Чтобы проверить текущие параметры в Microsoft .NET Framework, выполните в Windows PowerShell следующую команду.

    [Net.ServicePointManager]::SecurityProtocol
    

    Как описано в статье о поддержке TLS в коллекции PowerShell, чтобы временно изменить протокол безопасности на TLS 1.2 для установки модулей PowerShellGet или ExchangeOnlineManagement, перед установкой модуля выполните в Windows PowerShell следующую команду.

    [Net.ServicePointManager]::SecurityProtocol = [Net.SecurityProtocolType]::Tls12
    

    Чтобы навсегда включить надежное шифрование в Microsoft .NET Framework версии 4.x или более поздней, выполните одну из следующих команд в зависимости от своей архитектуры Windows.

    • x64:

      Set-ItemProperty -Path 'HKLM:\SOFTWARE\Wow6432Node\Microsoft\.NETFramework\v4.0.30319' -Name 'SchUseStrongCrypto' -Type DWord -Value '1'
      
    • x86:

      Set-ItemProperty -Path 'HKLM:\SOFTWARE\Microsoft\.NETFramework\v4.0.30319' -Name 'SchUseStrongCrypto' -Type DWord -Value '1'
      

    Дополнительные сведения см. в разделе SchUseStrongCrypto.

  • Вы получаете следующую ошибку:

    Для указанных критериев поиска и имени модуля ExchangeOnlineManagement совпадений не найдено. Чтобы увидеть все доступные репозитории зарегистрированных модулей, запустите Get-PSRepository.

    Для репозитория по умолчанию для модулей PowerShell не задано значение PSGallery. Чтобы устранить эту ошибку, запустите следующую команду:

    Register-PSRepository -Default
    

Удаление модуля PowerShell Exchange Online

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

Get-InstalledModule ExchangeOnlineManagement | Format-List Name,Version,InstalledLocation

Если модуль установлен в папке C:\Program Files\WindowsPowerShell\Modules, он был установлен для всех пользователей. Если модуль установлен в папке Документы, он был установлен только для текущей учетной записи пользователя.

Чтобы удалить модуль, выполните следующую команду в одной из следующих сред в зависимости от того, как вы изначально установили модуль (все пользователи и только для текущей учетной записи пользователя):

  • В окне PowerShell с повышенными привилегиями (все пользователи).

  • В обычном окне PowerShell (только для текущей учетной записи пользователя).

    Uninstall-Module -Name ExchangeOnlineManagement
    

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

Свойства и наборы свойств в модуле PowerShell Exchange Online

Традиционные командлеты Exchange Online возвращают все возможные свойства объекта в выходных данных, в том числе многие свойства, которые часто пусты или не заинтересованы во многих сценариях. Такое поведение приводит к снижению производительности (увеличивается объем серверных вычислений и нагрузка на сеть). Полный набор свойств редко требуется (практически никогда) в выходных результатах командлета.

Командлеты Get-EXO* в модуле имеют классифицированные выходные свойства. Вместо присвоения всем свойствам одинакового приоритета по важности и возврата их во всех сценариях мы классифицировали особые связанные свойства по наборам свойств. Проще говоря, наборы свойств — это пакеты из двух или более связанных свойств в командлете.

Самые большие и наиболее часто используемые командлеты Get-EXO* используют наборы свойств:

В этих командлетах наборы свойств управляются следующими параметрами:

  • PropertySets: этот параметр принимает одно или больше доступных имен наборов свойств с разделителями-запятыми. Доступные наборы свойств описаны в разделе Наборы свойств в командлетах модуля Exchange Online PowerShell.
  • Properties: этот параметр принимает одно или больше имен свойств с разделителями-запятыми.

Вы можете использовать параметры PropertySets и Properties вместе в одной команде.

Мы также включили набор свойств Minimum, содержащий минимальный набор обязательных свойств для выхода командлета (например, свойства удостоверений). Свойства в минимальных наборах свойств также описаны в разделе Наборы свойств в командлетах модуля Exchange Online PowerShell.

  • Если вы не используете параметры PropertySets или Properties, то автоматически получите свойства из набора Minimum.
  • Если вы используете параметры PropertySets или Properties, вы получите указанные свойства и свойства из набора Minimum.

В любом случае выходные данные командлета содержат гораздо меньше свойств, и время, необходимое для возврата этих результатов, гораздо быстрее.

Например, после подключения к Exchange Online PowerShell следующий пример возвращает только свойства из набора свойств Minimum для первых десяти почтовых ящиков.

Get-EXOMailbox -ResultSize 10

Для сравнения: выходной результат той же команды Get-Mailbox вернул бы как минимум 230 свойств для каждого из первых десяти почтовых ящиков.

Примечание.

Хотя параметр PropertySets принимает значение All, настоятельно рекомендуем не использовать это значение для получения всех свойств, так как замедлится работа команды и снизится надежность. Всегда используйте параметры PropertySets и Properties для получения минимального количества свойств, необходимых для вашего сценария.

Дополнительные сведения о фильтрации в модуле см. в разделе Фильтры в Exchange Online модуля PowerShell.

Заметки о выпуске

Если не указано иное, текущий выпуск модуля PowerShell Exchange Online содержит все функции предыдущих выпусков.

Текущая версия

Версия 3.4.0

  • Исправления ошибок в Connect-ExchangeOnline, Get-EXORecipientPermission и Get-EXOMailboxFolderPermission.
  • Параметр THe SigningCertificate в Connect-ExchangeOnline теперь поддерживает режим ограниченного языка (CLM).

Предыдущие выпуски

Версия 3.3.0

  • Параметр SkipLoadingCmdletHelp в Connect-ExchangeOnline для поддержки пропуска загрузки файлов справки командлетов.
  • Глобальная переменная EXO_LastExecutionStatus доступна для проверка состояния последнего запущенного командлета.
  • Исправления ошибок в Connect-ExchangeOnline и Connect-IPPSSession.
  • Параметр IsUserControlEnabled в Add-VivaModuleFeaturePolicy и Update-VivaModuleFeaturePolicy поддерживает включение пользовательских элементов управления с помощью политики для функций, подключенных к Viva управлению доступом к функциям.

Версия 3.2.0

  • Новые командлеты:
    • Get-DefaultTenantBriefingConfig и Set-DefaultTenantBriefingConfig.
    • Get-DefaultTenantMyAnalyticsFeatureConfig и Set-DefaultTenantMyAnalyticsFeatureConfig.
    • Get-VivaModuleFeature, Get-VivaModuleFeatureEnablement, Add-VivaModuleFeaturePolicy, Get-VivaModuleFeaturePolicy, Remove-VivaModuleFeaturePolicy и Update-VivaModuleFeaturePolicy.
  • Поддержка подключений REST API для PowerShell Центра соответствия требованиям безопасности &.
  • Параметр ConnectionId в Get-ConnectionInformation и Disconnect-ExchangeOnline:
    • Получение сведений о подключении для определенных подключений REST API.
    • Выборочное отключение для подключений REST API.
  • Параметр SignCertificate в Connect-ExchangeOnline позволяет подписывать файлы форматирования (*. Format.ps1xml) или файлы модуля скриптов (PSM1) во временном модуле, который Connect-ExchangeOnline создает с сертификатом клиента для использования во всех политиках выполнения PowerShell.
  • Исправления ошибок в Connect-ExchangeOnline.

Версия 3.1.0

  • Параметр AccessToken доступен в Connect-ExchangeOnline.
  • Исправления ошибок в Connect-ExchangeOnline и Get-ConnectionInformation.
  • Исправлена ошибка в Connect-IPPSSession для подключения к PowerShell & соответствия безопасности с помощью CertificateThumbprint.

Версия 3.0.0 (предварительные версии, известные как v2.0.6-PreviewX)

  • Функции, уже описанные в разделе "Подключения REST API" в модуле EXO версии 3 :
    • Проверка подлинности на основе сертификатов для PowerShell & соответствия безопасности (версия 2.0.6-Preview5 или более поздняя).
    • Командлет Get-ConnectionInformation для подключений на основе REST (версии 2.0.6-Preview7 или более поздней).
    • Переключатель SkipLoadingFormatData в командлете Connect-ExchangeOnline для подключений на основе REST (версия 2.0.6-Preview8 или более поздняя).
  • Параметр DelegatedOrganization работает в командлете Connect-IPPSSession , если в команде также используется параметр AzureADAuthorizationEndpointUri .
  • Некоторые командлеты, которые использовались для запроса подтверждения в определенных сценариях, больше не делают этого. По умолчанию командлет выполняется до завершения.
  • Формат ошибки, возвращенной при неудачном выполнении командлета, был немного изменен. Исключение теперь содержит дополнительные данные (например, тип исключения), а FullyQualifiedErrorId объект не содержит FailureCategory. Формат ошибки может быть изменен в дальнейшем.

Версия 2.0.5

  • Новые командлеты Get-OwnerlessGroupPolicy и Set-OwnerlessGroupPolicy для управления бесхозяйными группами Microsoft 365.

    Примечание.

    Хотя командлеты доступны в модуле, функция доступна только участникам закрытой предварительной оценки.

  • Новые командлеты Get-VivaInsightsSettings и Set-VivaInsightsSettings для управления доступом пользователей к функциям Headspace в Viva Insights.

Версия 2.0.4

  • PowerShell 7 официально поддерживается в Windows, Linux и Apple macOS, как описано в разделе Предварительные требования для модуля Exchange Online PowerShell этой статьи.

  • Модуль в PowerShell 7 поддерживает единый вход на основе браузера и другие методы входа. Дополнительные сведения см. в разделе Эксклюзивные методы подключения PowerShell 7.

  • Командлеты Set-UserAnalyticsConfig и Set- UserAnalyticsConfig заменены на Get-MyAnalyticsConfig и Set-MyAnalyticsConfig. Кроме того, вы можете настроить доступ на уровне компонента. Дополнительные сведения см. в статье Настройка MyAnalytics.

  • Применение политики в режиме реального времени и защиты во всех проверках подлинности на основе пользователей. В модуле включена непрерывная оценка доступа (CAE). Узнайте больше о CAE здесь.

  • Свойства LastUserActionTime и LastInteractionTime теперь доступны в выходных данных командлета Get-EXOMailboxStatistics.

  • В интерактивном процессе входа теперь используется более безопасный метод получения маркеров доступа с использованием безопасных URL-адресов ответа.

Версия 2.0.3

  • Общедоступная проверка подлинности на основе сертификатов (CBA), которая обеспечивает использование современной проверки подлинности при автоматических сценариях или сценариях с фоновой автоматизацией. Ниже указаны доступные расположения хранилищ сертификатов.
  • Одновременное подключение к Exchange Online PowerShell и PowerShell безопасности и соответствия требованиям в одном окне PowerShell.
  • Новый параметр CommandName позволяет указать и ограничить командлеты Exchange Online PowerShell, импортированные во время сеанса. Этот параметр сокращает объем памяти для приложений PowerShell с высокой загрузкой.
  • Get-EXOMailboxFolderPermission теперь поддерживает ExternalDirectoryObjectID в параметреIdentity.
  • Оптимизированная задержка первого вызова командлета V2. Результаты лабораторных анализов показывают, что задержка первого вызова сократилась с интервала в 8 секунд до примерно 1 секунды. Фактические результаты зависят от размера результата командлета и среды клиента.

Версия 1.0.1

  • Общедоступная версия модуля EXO V2. Она стабильна и готова для использования в производственной среде.
  • Командлет Get-ExoMobileDeviceStatistics теперь поддерживает параметр Identity.
  • Повышена надежность автоматического переподключения сеанса в определенных случаях, когда сценарий работал приблизительно 50 минут и выдавал ошибку "Командлет не найден" из-за ошибки в логике автоматического переподключения.
  • Устранены проблемы с типом данных двух широко используемых атрибутов "User" и "MailboxFolderUser" для легкого переноса сценариев.
  • Улучшена поддержка фильтров. Теперь поддерживаются еще четыре оператора: EndsWith, Contains, Not и NotLike. Проверьте фильтры в модуле Exchange Online PowerShell для атрибутов, которые не поддерживаются в фильтрах.

Версия 0.4578.0

  • Добавлена поддержка настройки писем со сводкой дел для организации на уровне пользователя с применением командлетов Set-UserBriefingConfig и Get-UserBriefingConfig.
  • Поддержка очистки сеанса с помощью командлета Disconnect-ExchangeOnline. Этот командлет является эквивалентом Get-PSSession | Remove-PSSession V2. Кроме очистки объекта сеанса и локальных файлов, это также приводит к удалению маркера доступа из кэша, который используется для проверки подлинности в командлетах V2.
  • Теперь можно использовать FolderId как параметр удостоверения в Get-EXOMailboxFolderPermission. Чтобы получить значение FolderId, используйте Get-MailboxFolder. Например: Get-MailboxFolderPermission -Identity <UPN>:<Folder-Path>Get-MailboxFolderPermission -Identity <UPN>:\<Folder-Id>
  • Улучшена надежность Get-EXOMailboxStatistics за счет устранения определенных ошибок маршрутизации запросов, которые приводили к сбоям.
  • Оптимизировано использование памяти при создании путем повторного применения существующего модуля с новым сеансом вместо создания нового при каждом импорте сеанса.

Версия 0.4368.1

  • Добавлена поддержка командлетов PowerShell безопасности и соответствия требованиям с использованием командлета Connect-IPPSSession.
  • Скрыть баннер с объявлением можно с помощью переключателя ShowBanner (-ShowBanner:$false).
  • Остановите выполнение командлета на исключениях клиента.
  • Удаленная оболочка PowerShell содержит различные сложные типы данных, которые преднамеренно не поддерживаются в командлетах EXO для повышения производительности. Различия в несложных типах данных между удаленными командлетами PowerShell и командлетами V2 были устранены для беспрепятственного переноса сценариев управления.

Версия 0.3582.0

  • Поддержка префикса во время создания сеанса:
    • Можно создать только 1 сеанс за раз, содержащий командлеты с префиксами.
    • Командлеты EXO версии 2 не имеют префикса, так как они уже имеют префикс EXO, поэтому не используйте EXO в качестве префикса.
  • Используйте командлеты EXO V2, даже если на клиентском компьютере отключена обычная проверка подлинности WinRM. Обратите внимание на то, что для удаленных командлетов PowerShell требуется обычная проверка подлинности WinRM, и они будут недоступны, если она отключена.
  • Параметр удостоверения для командлетов V2 теперь поддерживает имя и псевдоним. Обратите внимание на то, что использование псевдонимов или имен замедляет работу командлетов V2 и поэтому не рекомендуется.
  • Устранена проблема, из-за которой тип данных атрибутов, возвращаемых командлетом V2, отличался от тех, что возвращались командлетами PowerShell. У нас все еще есть несколько атрибутов с различными типами данных, и мы планируем их обработать в ближайшие месяцы.
  • Исправлена ошибка: проблема возникала при частых повторных подключениях сеансов при вызове Connect-ExchangeOnline с Credentials или UserPrincipalName

Версия 0.3555.1

  • Исправлена ошибка, из-за которой переданные командлеты не работали из-за проблемы с проверкой подлинности:

    Не удается вызвать конвейер, так как пространство выполнения не в состоянии "Открыто". Текущее состояние пространства выполнения — "закрыто".

Версия 0.3527.4

  • Обновлено содержимое Get-Help.
  • Устранена проблема в Get-Help, из-за которой параметр Online перенаправлял на несуществующую страницу с кодом ошибки 400.

Версия 0.3527.3

  • Добавлена поддержка управления Exchange для другого клиента с помощью потока делегирования.
  • Используется совместно с другими модулями PowerShell в одном окне PS.
  • Добавлена поддержка позиционных параметров.
  • Поле "Дата и время" теперь поддерживает языковой стандарт клиента.
  • Устранена ошибка, из-за которой параметр PSCredential становился пустым при передаче во время Connect-ExchangeOnline.
  • Устранена ошибка в модуле клиента, которая возникала, когда фильтр содержал $null.
  • Теперь у сеансов, созданных внутри в модуле EXO V2, есть имена (формат имен: ExchangeOnlineInternalSession_%SomeNumber%).
  • Исправлена ошибка, из-за которой удаленные командлеты PowerShell периодически давали сбой из-за разницы во времени между истечением срока действия маркера и отключением PSSession.
  • Значительное обновление безопасности.
  • Исправления ошибок и улучшения.