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

Exchange Online PowerShell — это административный интерфейс, позволяющий администраторам управлять Exchange Online частью организации Microsoft 365 из командной строки (включая множество функций безопасности в Exchange Online Protection и 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 RBAC: членство в группах ролей "Управление организацией" или "Управление получателями".
    • Microsoft Entra RBAC: членство в роли глобального администратора.

    Важно!

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

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

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

Совет

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

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

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

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

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

Set-User -Identity chris@contoso.onmicrosoft.com -RemotePowerShellEnabled $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 -RemotePowerShellEnabled $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 -RemotePowerShellEnabled $false}

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

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

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

$<VariableName> | foreach {Set-User -Identity $_ -RemotePowerShellEnabled $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 $_ -RemotePowerShellEnabled $false}

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

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

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

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

Get-User -ResultSize unlimited | Format-Table -Auto Name,DisplayName,RemotePowerShellEnabled

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

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

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

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