Разрешение или отключение доступа к Exchange Online PowerShell

PowerShell для Exchange Online — это интерфейс администратора, позволяющий управлять частью Exchange Online в организации Microsoft 365 из командной строки (включая множество встроенных функций безопасности для всех облачных почтовых ящиков и средства защиты в Microsoft Defender для Office 365).

По умолчанию всем учетным записям в Microsoft 365 разрешено использовать Exchange Online PowerShell. Такой доступ не предоставляет пользователям возможности администрирования. Они по-прежнему ограничены ролевым управлением доступом (RBAC). Например, они могут настроить некоторые параметры для своего почтового ящика и управлять собственными группами рассылки, но не более того.

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

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

  • Предполагаемое время для завершения каждой процедуры: менее 5 минут

  • Действия, описанные в этой статье, доступны только в Exchange Online PowerShell. Сведения о том, как подключиться к Exchange Online PowerShell, см. в статье Подключение к Exchange Online PowerShell.

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

    • Разрешения Exchange Online: Членство в ролевых группах "Управление организацией" или "Управление получателями".
    • Microsoft Entra RBAC: членство в ролях администратора Exchange или глобального администратора* предоставляет пользователям необходимые разрешения и разрешения для других функций в Microsoft 365.

    Важно!

    В спешке быстрого и глобального отключения доступа PowerShell в облачной организации остерегайтесь команд, например Get-User | Set-User -EXOModuleEnabled $false без учета учетных записей администраторов. Используйте процедуры, описанные в этой статье, чтобы выборочно удалить доступ к PowerShell или сохранить доступ для тех, кому он нужен , с помощью следующего синтаксиса команды глобального удаления: Get-User | Where-Object {$_.UserPrincipalName -ne 'admin1@contoso.onmicrosoft.com' -and $_.UserPrincipalName -ne 'admin2@contoso.onmicrosoft.com'...} | Set-User -EXOModuleEnabled $false.

    Если вы случайно заблокировали себе доступ к PowerShell, создайте новую учетную запись администратора в Центре администрирования Microsoft 365, а затем используйте эту учетную запись для предоставления себе доступа к PowerShell с помощью процедур, описанных в этой статье.

    * Корпорация Майкрософт рекомендует использовать роли с минимальным количеством разрешений. Использование учетных записей с более низким уровнем разрешений помогает повысить безопасность организации. Глобальный администратор — это роль с высокими привилегиями, которую следует ограничивать экстренными сценариями, когда вы не можете использовать существующую роль.

  • Подробные сведения о синтаксисе фильтра OPATH в Exchange Online см. в статье Дополнительные сведения о синтаксисе OPATH.

Включение или отключение доступа к удаленной оболочке PowerShell для пользователя

В этом примере отключается доступ пользователя david@contoso.onmicrosoft.comк PowerShell Exchange Online.

Set-User -Identity david@contoso.onmicrosoft.com -EXOModuleEnabled $false

В этом примере предоставляется доступ пользователю chris@contoso.onmicrosoft.comк Exchange Online PowerShell.

Set-User -Identity chris@contoso.onmicrosoft.com -EXOModuleEnabled $true

Отключение доступа к удаленной оболочке PowerShell для нескольких пользователей

Отключить доступ к удаленной оболочке PowerShell для определенной группы пользователей можно несколькими способами, указанными ниже.

  • Фильтрация пользователей на основе существующего атрибута: этот метод предполагает, что все учетные записи целевых пользователей имеют общий уникальный фильтруемый атрибут. Некоторые атрибуты (например, должность, отдел, сведения об адресе и номер телефона) доступны только из командлета Get-User . Другие атрибуты (например, от CustomAttribute1 до CustomAttribute15) доступны только из командлета Get-Mailbox .
  • Использование списка определенных пользователей: После создания списка конкретных пользователей можно использовать этот список, чтобы отключить им доступ к Exchange Online PowerShell.

Фильтрация пользователей на основе существующего атрибута

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

$<VariableName> = <Get-Mailbox | Get-User> -ResultSize unlimited -Filter <Filter>

$<VariableName> | foreach {Set-User -Identity $_.WindowsEmailAddress -EXOModuleEnabled $false}

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

$DSA = Get-User -ResultSize unlimited -Filter "(RecipientType -eq 'UserMailbox') -and (Title -like 'Sales Associate*')"

$DSA | foreach {Set-User -Identity $_.WindowsEmailAddress -EXOModuleEnabled $false}

Использование списка определенных пользователей

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

$<VariableName> = Get-Content <text file>

$<VariableName> | foreach {Set-User -Identity $_ -EXOModuleEnabled $false}

В следующем примере текстовый файл C:\My Documents\NoPowerShell.txt используется для идентификации пользователей по их учетным записям. Текстовый файл должен содержать по одному аккаунту в каждой строке, как показано ниже:

akol@contoso.onmicrosoft.com
tjohnston@contoso.onmicrosoft.com
kakers@contoso.onmicrosoft.com

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

$NoPS = Get-Content "C:\My Documents\NoPowerShell.txt"

$NoPS | foreach {Set-User -Identity $_ -EXOModuleEnabled $false}

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

Совет

Новое EXOModuleEnabled свойство недоступно для использования с параметром Filter в командлете Get-User , но значения EXOModuleEnabled свойства и старого RemotePowerShellEnabled свойства всегда совпадают, поэтому используйте свойство RemotePowerShellEnabled с параметром Filter в командлете Get-User .

Чтобы просмотреть состояние доступа к PowerShell для определенного пользователя, замените <UserIdentity> именем или именем участника-пользователя (UPN) пользователя и выполните следующую команду:

Get-User -Identity "<UserIdentity>" | Format-List EXOModuleEnabled

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

Get-User -ResultSize unlimited | Format-Table -Auto DisplayName,EXOModuleEnabled

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

Get-User -ResultSize unlimited -Filter 'RemotePowerShellEnabled -eq $false'

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

Get-User -ResultSize unlimited -Filter 'RemotePowerShellEnabled -eq $true'