Управление удаленным доступом PowerShell к серверам Exchange
Удаленный powerShell в Microsoft Exchange позволяет управлять организацией Exchange с удаленного компьютера, который находится в вашей внутренней сети, или из Интернета. Вы можете отключить или включить возможность подключения пользователя к серверу Exchange Server с помощью удаленной оболочки PowerShell и командной консоли Exchange. Дополнительные сведения об удаленной оболочке 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.
Просмотр удаленного доступа к 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'
Использование Командная консоль 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}