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

Модуль Exchange Online PowerShell использует современную проверку подлинности и работает с многофакторной проверкой подлинности (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 для всех командлетов:

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

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

Командлеты в подключениях 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.

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

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

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

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

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

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

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

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

    $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> -LogLevel All

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

Модуль EXO содержит девять эксклюзивных командлетов Get-EXO* , оптимизированных для ускорения сценариев массового получения данных (тысячи и тысячи объектов) в 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 или более поздней версии.

Совет

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

Другие командлеты 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 или более поздней версии.

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

Скачайте модуль из коллекции 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 24.04 LTS
  • Ubuntu 20.04 LTS
  • Ubuntu 18.04 LTS

Инструкции по установке 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 требуется универсальная среда выполнения C (CRT) Windows 10.

  • 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 API не требуется обычная проверка подлинности в WinRM, как описано в этом разделе. Как описано ранее в этой статье, доступ к Exchange Online PowerShell (обычная проверка подлинности (удаленная версия 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 API в Windows

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

Совет

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

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

Не удается найти 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.

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

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

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

    Register-PSRepository -Default
    
  • С апреля 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.

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

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

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

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

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

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

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

    Uninstall-Module -Name ExchangeOnlineManagement
    

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

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

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

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

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

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

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

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

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

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

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

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

Get-EXOMailbox -ResultSize 10

В отличие от этого, выходные данные той же команды Get-Mailbox возвращают по крайней мере 230 свойств для каждого из первых 10 почтовых ящиков.

Примечание.

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

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

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

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

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

Версия 3.5.1

  • Исправления ошибок в Get-EXOMailboxPermission и Get-EXOMailbox.
  • Модуль был обновлен для запуска в .NET 8, заменив предыдущую версию на основе .NET 6.
  • Усовершенствования в Add-VivaModuleFeaturePolicy.

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

Версия 3.5.0

  • Новый командлет Get-VivaFeatureCategory .
  • Добавлена поддержка операций политики на уровне категорий в Viva Управление доступом к функциям (VFAM).
  • Новое свойство IsFeatureEnabledByDefault в выходных данных Get-VivaModuleFeaturePolicy. Значение этого свойства показывает состояние включения по умолчанию для пользователей в клиенте, когда не были созданы политики клиента или пользователя или группы.

Версия 3.4.0

  • Исправления ошибок в Connect-ExchangeOnline, Get-EXORecipientPermission и Get-EXOMailboxFolderPermission.
  • Параметр 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.

  • Командлеты Get-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

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

Версия 0.3555.1

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

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

Версия 0.3527.4

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

Версия 0.3527.3

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