Habilitar o deshabilitar el acceso al PowerShell de Exchange Online
Exchange Online PowerShell es la interfaz administrativa que permite a los administradores administrar la parte de Exchange Online de una organización de Microsoft 365 desde la línea de comandos (incluidas muchas características de seguridad en Exchange Online Protection y Microsoft Defender para Office 365).
De forma predeterminada, todas las cuentas de Microsoft 365 pueden usar Exchange Online PowerShell. Este acceso no ofrece a los usuarios funcionalidades administrativas en una organización. Siguen estando limitados por el control de acceso basado en roles (RBAC) (por ejemplo, pueden configurar opciones en su propio buzón de correo o administrar los grupos de distribución que poseen, pero no mucho más).
Los administradores pueden usar los procedimientos de 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 de 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.
Debe tener asignados permisos para poder realizar los procedimientos de este artículo. Tiene las siguientes opciones:
- RBAC de Exchange Online: pertenencia a los grupos de roles Administración de la organización o Administración de destinatarios .
- Microsoft Entra RBAC: la pertenencia a los roles Administrador de Exchange o Administrador* global proporciona a los usuarios los permisos y permisos necesarios para otras características de Microsoft 365.
Importante
En su prisa por deshabilitar el acceso de PowerShell de forma rápida y global en la 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 de este artículo para quitar selectivamente el acceso de 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.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 concederse acceso a PowerShell mediante los procedimientos de este artículo.
* Microsoft recomienda usar roles con los permisos más mínimos. El uso de cuentas con permisos inferiores ayuda a mejorar la seguridad de su organización. Administrador global es un rol con privilegios elevados que debe limitarse a escenarios de emergencia cuando no se puede usar un rol existente.
Para obtener información detallada sobre la sintaxis de filtro de OPATH en Exchange Online, consulte Información adicional sobre la sintaxis de OPATH.
Sugerencia
¿Problemas? Solicite ayuda en los foros de Exchange. Visite los foros en Exchange Online o Exchange Online Protection.
Habilitar o deshabilitar el acceso remoto de PowerShell para un usuario
En este ejemplo se deshabilita el acceso a Exchange Online PowerShell para el usuario david@contoso.onmicrosoft.com
.
Set-User -Identity david@contoso.onmicrosoft.com -EXOModuleEnabled $false
En este ejemplo se habilita el acceso a Exchange Online PowerShell para el usuario chris@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 supone que las cuentas de usuario de destino comparten un atributo filtrable único. Algunos atributos, como Title, Department, address information y telephone number, solo están disponibles desde el cmdlet Get-User . Otros atributos, como CustomAttribute1 a CustomAttribute15, solo están disponibles desde 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 Exchange Online PowerShell.
Filtrar usuarios en función de un atributo existente
Para deshabilitar el acceso a Exchange Online PowerShell 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:\My Documents\NoPowerShell.txt para identificar a los usuarios por sus cuentas. El archivo de texto debe contener una cuenta en cada línea de la siguiente manera:
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}
Visualización del estado de acceso de PowerShell de Exchange Online para los usuarios
Para ver el estado de acceso de PowerShell para 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 para 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 Exchange Online PowerShell, ejecute el siguiente comando:
Get-User -ResultSize unlimited -Filter 'EXOModuleEnabled -eq $false'
Para mostrar todos los usuarios que tienen acceso a Exchange Online PowerShell, ejecute el siguiente comando:
Get-User -ResultSize unlimited -Filter 'EXOModuleEnabled -eq $true'