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

Удаленная оболочка PowerShell в Microsoft Exchange позволяет управлять организацией Exchange с удаленного компьютера в составе внутренней сети или через Интернет. Вы можете разрешать или запрещать пользователям подключаться к серверу Exchange с помощью удаленной оболочки PowerShell. Дополнительные сведения об удаленной оболочке PowerShell см. в разделе Exchange Server PowerShell (командная консоль Exchange).

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

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

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

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

    Важно!

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

    Если вы случайно заблокируете удаленный доступ к PowerShell, вам потребуется использовать метод непосредственной загрузки оснастки командной консоли Exchange (Add-PSSnapIn Microsoft.Exchange.Management.PowerShell.SnapIn), чтобы предоставить себе доступ. Сведите к минимуму время и изменения, которые вы используете в этом методе. Исправьте одну учетную запись и откройте командную консоль Exchange, чтобы внести дополнительные изменения.

  • Для выполнения этой процедуры можно использовать только PowerShell. Сведения о том, как открыть командную консоль Exchange в локальной организации Exchange, см. в статье Open the Exchange Management Shell.

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

  • Для выполнения этой процедуры (процедур) необходимы соответствующие разрешения. Сведения о необходимых разрешениях см. в записи "Remote PowerShell" статьи Об инфраструктуре Exchange и разрешениях PowerShell .

  • Если вы используете сторонние средства для настройки адресов электронной почты пользователей, перед выполнением процедур, описанных в этой статье, необходимо отключить политики адресов электронной почты для затронутых пользователей. В противном случае команды Set-User изменят адреса электронной почты пользователей в соответствии с применимой политикой адресов электронной почты. Чтобы отключить политики адресов электронной почты для пользователей, задайте для параметра EmailAddressPolicyEnabled значение $false в командлете Set-Mailbox .

Совет

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

Использование Командная консоль Exchange для включения или отключения удаленного доступа PowerShell для пользователя

В этом примере удаленный доступ к PowerShell отключается для пользователя Тереза Lindqvist.

Set-User "Therese Lindqvist" -RemotePowerShellEnabled $false

В этом примере включается удаленный доступ PowerShell для пользователя с именем Sirirat Kitjakarn.

Set-User "Sirirat Kitjakarn" -RemotePowerShellEnabled $true

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

$NPS | foreach {Set-User -Identity $_ -RemotePowerShellEnabled $false}

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

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

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

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

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

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

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

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

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