Controlar el acceso remoto de PowerShell a servidores de Exchange

PowerShell remoto en Microsoft Exchange le permite administrar su organización de Exchange desde un equipo remoto que se encuentra en la red interna o desde Internet. Puede deshabilitar o habilitar la capacidad de un usuario para conectarse a un servidor exchange mediante PowerShell remoto y el Shell de administración de Exchange. Para obtener más información sobre PowerShell remoto, consulte Exchange Server PowerShell (Shell de administración de Exchange).

Para ver otras tareas de administración relacionadas con PowerShell remoto, vea Conectarse a servidores Exchange mediante PowerShell remoto.

¿Qué necesita saber antes de empezar?

  • Tiempo estimado para completar cada procedimiento: menos de 5 minutos

  • De forma predeterminada, todas las cuentas de usuario tienen acceso a PowerShell remoto. Sin embargo, para conectarse realmente a un servidor Exchange mediante PowerShell remoto, el usuario tiene que ser miembro de un grupo de roles de administración o que se le asigne directamente un rol de administración que le permita ejecutar cmdlets de Exchange. Para obtener más información sobre los grupos de roles y los roles de administración, consulte permisos de Exchange Server.

    Importante

    En su prisa por deshabilitar de forma rápida y global el acceso remoto a PowerShell en su organización, tenga cuidado con comandos como Get-User | Set-User -RemotePowerShellEnabled $false sin tener en cuenta cuentas de administrador, cuentas de servicio o buzones de supervisión de estado que necesiten acceso remoto a PowerShell. Use los procedimientos de este artículo para quitar selectivamente el acceso remoto a PowerShell o conservar el acceso para aquellos que lo necesiten mediante la siguiente sintaxis en el comando de eliminación global: Get-User | Where-Object {$_.UserPrincipalName -ne 'admin1@contoso.com' -and $_.UserPrincipalName -ne 'admin2@contoso.com'...} | Set-User -RemotePowerShellEnabled $false.

    Si accidentalmente se bloquea fuera del acceso remoto de PowerShell, deberá usar el método de otro modo muy desalentado de cargar directamente el complemento del Shell de administración de Exchange (Add-PSSnapIn Microsoft.Exchange.Management.PowerShell.SnapIn) para obtener acceso. Minimice el tiempo y los cambios que usa con este método. Corrija una cuenta y abra el Shell de administración de Exchange para realizar cambios adicionales.

  • Solo puede usar PowerShell para realizar estos procedimientos. Para obtener información sobre cómo abrir el Shell de administración de Exchange en su organización de Exchange local, consulte Open the Exchange Management Shell.

  • Para obtener información detallada sobre la sintaxis de filtro de OPATH en Exchange, vea Información adicional sobre la sintaxis de OPATH.

  • Deberá tener permisos asignados para poder llevar a cabo estos procedimientos. Para ver qué permisos necesita, consulte la entrada "PowerShell remoto" en el artículo Sobre la infraestructura de Exchange y los permisos de PowerShell .

  • Si usa herramientas de terceros para personalizar las direcciones de correo electrónico de los usuarios, debe deshabilitar las directivas de direcciones de correo electrónico en los usuarios afectados antes de realizar los procedimientos de este artículo. Si no lo hace, los comandos Set-User cambian las direcciones de correo electrónico de los usuarios para que coincidan con la directiva de dirección de correo electrónico aplicable. Para deshabilitar las directivas de direcciones de correo electrónico en los usuarios, establezca el valor del parámetro EmailAddressPolicyEnabled en $false en el cmdlet Set-Mailbox .

Sugerencia

¿Problemas? Pida ayuda en los foros de Exchange Server.

Visualización del acceso remoto de PowerShell para los usuarios

Para ver el estado de acceso remoto de PowerShell para un usuario específico, reemplace <UserIdentity> por el nombre o el nombre principal de usuario (UPN) del usuario y, a continuación, ejecute el siguiente comando:

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

Para mostrar el estado de acceso remoto de PowerShell para todos los usuarios, ejecute el siguiente comando:

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

Para mostrar todos los usuarios que no tienen acceso a PowerShell remoto, ejecute el siguiente comando:

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

Para mostrar todos los usuarios que tienen acceso a PowerShell remoto, ejecute el siguiente comando:

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

Usar Shell de administración de Exchange para habilitar o deshabilitar el acceso a PowerShell remoto para un usuario

En este ejemplo se deshabilita el acceso remoto de PowerShell para el usuario llamado Therese Lindqvist.

Set-User "Therese Lindqvist" -RemotePowerShellEnabled $false

En este ejemplo se habilita el acceso remoto a PowerShell para el usuario cuyo nombre es Sirirat Kitjakarn.

Set-User "Sirirat Kitjakarn" -RemotePowerShellEnabled $true

Uso del Shell de administración de Exchange para deshabilitar el acceso remoto a PowerShell para muchos usuarios

Para evitar el acceso remoto de PowerShell de un grupo concreto de usuarios existentes, tiene las siguientes opciones:

  • Filtrar usuarios en función de un atributo existente: este método supone que las cuentas de usuario de destino comparten un atributo filtrable único. Tenga en cuenta que algunos atributos, como cargo, departamento, dirección y número de teléfono, se muestran solo cuando se utiliza el cmdlet Get-User. Otros atributos, como CustomAttribute1-15, son visibles solamente cuando usa el cmdlet Get-Mailbox.

  • Use una lista de usuarios específicos: después de generar la lista de usuarios específicos, puede usar esa lista para deshabilitar su acceso a PowerShell remoto.

Filtrar usuarios en función de un atributo existente

Para deshabilitar el acceso a PowerShell remoto para cualquier número de usuarios en función de un atributo existente, use la sintaxis siguiente:

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

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

En este ejemplo se quita el acceso a PowerShell remoto para todos los usuarios cuyo atributo Title contiene el valor "Sales Associate".

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

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

Utilizar una lista de usuarios específicos

Para deshabilitar el acceso a PowerShell remoto para una lista de usuarios específicos, use la sintaxis siguiente:

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

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

En este ejemplo se usa el archivo de texto C:\My Documents\NoPowerShell.txt para identificar a los usuarios por su nombre principal de usuario (UPN). El archivo de texto debe contener un UPN en cada línea como este:

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

Después de rellenar el archivo de texto con las cuentas de usuario que desea actualizar, ejecute los siguientes comandos:

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

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