Habilitar o deshabilitar el acceso al PowerShell de Exchange Online

PowerShell de Exchange Online es la interfaz administrativa que le permite administrar la parte de Exchange Online de su organización de Microsoft 365 desde la línea de comandos (incluidas muchas características de seguridad integradas para todos los buzones de nube y protecciones en Microsoft Defender para Office 365).

De forma predeterminada, todas las cuentas de Microsoft 365 pueden usar PowerShell de Exchange Online. Este acceso no proporciona a los usuarios capacidades administrativas. Siguen estando limitados por el control de acceso basado en roles (RBAC). Por ejemplo, pueden configurar algunas opciones en su propio buzón de correo y administrar los grupos de distribución que poseen, pero no mucho más.

Los administradores pueden usar los procedimientos descritos en este artículo para deshabilitar o habilitar la capacidad de un usuario para conectarse a Exchange Online PowerShell.

¿Qué necesita saber antes de empezar?

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

  • Los procedimientos descritos en este artículo solo están disponibles en PowerShell de Exchange Online. Para conectarse al PowerShell de Exchange Online, consulte Conexión a Exchange Online PowerShell.

  • Para poder realizar los procedimientos de este artículo, deberá tener asignados los permisos necesarios. Tiene las siguientes opciones:

    • Permisos de Exchange Online: pertenencia a los grupos de roles Administración de organización o Administración de destinatarios.
    • Microsoft Entra RBAC: la pertenencia a los roles de administrador de Exchange o administrador global* proporciona a los usuarios los permisos necesarios y los permisos para otras características de Microsoft 365.

    Importante

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

    Si accidentalmente se bloquea el acceso a PowerShell, cree una nueva cuenta de administrador en el Centro de administración de Microsoft 365 y, a continuación, use esa cuenta para obtener acceso a PowerShell mediante los procedimientos descritos en este artículo.

    * Microsoft recomienda utilizar roles con la menor cantidad de permisos. El uso de cuentas con permisos más bajos ayuda a mejorar la seguridad de su organización. Administrador global es un rol con muchos privilegios que debe limitarse a escenarios de emergencia cuando no se puede usar un rol existente.

  • Para obtener información detallada acerca de la sintaxis del filtro OPATH en Exchange Online, consulte Información adicional de sintaxis de OPATH.

Habilitar o deshabilitar el acceso remoto de PowerShell para un usuario

En este ejemplo se deshabilita el acceso del usuario david@contoso.onmicrosoft.coma PowerShell para Exchange Online.

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

En este ejemplo se permite el acceso al PowerShell de Exchange Online para el usuariochris@contoso.onmicrosoft.com.

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

Deshabilitar el acceso remoto de 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 asume que todas las cuentas de usuario de destino comparten un atributo filtrable único. Algunos atributos (por ejemplo, título, departamento, información de dirección y número de teléfono) solo están disponibles en el cmdlet Get-User . Otros atributos (por ejemplo, CustomAttribute1 a CustomAttribute15) solo están disponibles en el cmdlet Get-Mailbox .
  • Use una lista de usuarios específicos: después de generar la lista de usuarios específicos, puede usarla para deshabilitar su acceso a Exchange Online PowerShell.

Filtrar usuarios en función de un atributo existente

Para deshabilitar el acceso a PowerShell de Exchange Online 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 $_.WindowsEmailAddress -EXOModuleEnabled $false}

En este ejemplo se elimina el acceso remoto de PowerShell de 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 $_.WindowsEmailAddress -EXOModuleEnabled $false}

Utilizar una lista de usuarios específicos

Para deshabilitar el acceso remoto de PowerShell de una lista de usuarios concretos, use la siguiente sintaxis.

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

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

En el ejemplo siguiente se usa el archivo de texto C:\Mis Documents\NoPowerShell.txt para identificar a los usuarios por sus cuentas. El archivo de texto debe contener una cuenta en cada línea, como se indica a continuación:

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

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

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

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

Ver el estado de acceso de PowerShell de Exchange Online para los usuarios

Sugerencia

La propiedad más reciente EXOModuleEnabled no está disponible para usarse con el parámetro Filter en el cmdlet Get-User , pero los valores de la EXOModuleEnabled propiedad y la propiedad anterior RemotePowerShellEnabled son siempre los mismos, por lo que use la RemotePowerShellEnabled propiedad con el parámetro Filter en el cmdlet Get-User .

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

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

Para mostrar el estado de acceso de PowerShell de Exchange Online a todos los usuarios, ejecute el siguiente comando:

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

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

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

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

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