PowerShell

PowerShell Online: qué es, para qué sirve y cómo usarlo en Windows

octubre 24, 2026 Window Error 11 min read
PowerShell Online: qué es, para qué sirve y cómo usarlo en Windows

Si tus scripts de Exchange Online PowerShell dejan de funcionar al actualizar el módulo, lo más probable es que dependan del código: Microsoft confirmó en febrero de 2026 la retirada del parámetro -Credential y la aplazó a diciembre de 2026. Aquí verás cómo saber si tu módulo está afectado, cómo sustituirlo por autenticación moderna y cómo migrar los trabajos desatendidos antes de que el servidor que valida el inicio de sesión se apague.

Qué es PowerShell Online y qué cambia en 2026

PowerShell Online no es un programa aparte, sino el nombre con el que se conoce al conjunto de módulos que conectan PowerShell con los servicios en la nube de Microsoft: Exchange Online, Microsoft Graph, Azure, SharePoint, Teams o Planner. Cada uno se instala desde la PowerShell Gallery y se actualiza por su cuenta, así que lo que cambia en 2026 no es PowerShell, sino uno de esos módulos: el de Exchange Online.

En febrero de 2026, el equipo de Exchange confirmó la retirada del parámetro -Credential en Exchange Online PowerShell. El motivo es que ese parámetro usa el flujo ROPC (Resource Owner Password Credentials), un método de inicio de sesión pensado para aplicaciones de confianza, en el que el script envía el usuario y la contraseña a un servidor y recibe un token. ROPC nunca ha funcionado con autenticación multifactor (MFA) ni con las directivas de acceso condicional, y Microsoft ya lo retiró de la biblioteca MSAL hace tiempo. En julio de 2026, Microsoft aplazó la fecha de junio a diciembre de 2026, pero el aviso sigue en pie: las nuevas versiones del módulo dejarán de traer el parámetro, y los scripts que dependan de él romperán al actualizar. Conviene entenderlo así: el módulo es el que cambia, PowerShell en sí sigue igual.

Lo que cambia con la retirada de -Credential y dónde se arregla

Lo que te pasa Por qué pasa Dónde se arregla
Los scripts piden contraseña al ejecutarse con la cuenta del usuario El script usa -Credential con un objeto PSCredential, que depende del flujo ROPC, incompatible con MFA Cambia Connect-ExchangeOnline a autenticación moderna
Los trabajos del Programador de tareas rompen al actualizar el módulo El flujo ROPC se retirará en diciembre de 2026 y el servidor que lo procesa desaparecerá más adelante Migra los scripts del Programador de tareas a autenticación desatendida
El script automatizado se ejecuta fuera de Azure y no puede iniciar sesión ROPC no admite MFA ni acceso condicional, así que deja de conectar a código antiguo Fija la versión del módulo Exchange Online PowerShell para que no se actualice
La organización exige MFA y acceso condicional ROPC nunca fue compatible con estos requisitos Cambia Connect-ExchangeOnline a autenticación moderna
La retirada se adelanta al actualizar el módulo Exchange Online PowerShell Las versiones posteriores a diciembre de 2026 ya no traerán el parámetro Confirma si tu instalación aún usa ROPC

Confirma si tu instalación de Exchange Online PowerShell aún usa ROPC

Antes de tocar nada conviene saber qué módulo y qué versión hay en el equipo, porque el cambio solo afecta a versiones posteriores a diciembre de 2026. Si tu módulo es anterior y no se actualiza, -Credential seguirá funcionando; si es posterior, el parámetro ya no estará disponible y verás un error al ejecutar el script.

Averigua qué módulo usa tu script

Abre PowerShell desde Win+R, escribe powershell y pulsa Enter; no hace falta como administrador para esta consulta.

Get-Module ExchangeOnlineManagement -ListAvailable

ModuleType Version:    Name:                       ItemName
---------- -------    ----                       --------
Script     3.6.0      ExchangeOnlineManagement    Microsoft.Online.Administration.Exchange
Script     3.4.0      ExchangeOnlineManagement    Microsoft.Online.Administration.Exchange
Binary     3.2.0      ExchangeOnlineManagement    Microsoft.Online.Administration.Exchange
Comprueba: Si aparece alguna versión 3.6.0 o superior publicada después de diciembre de 2026, -Credential ya no estará disponible. Si todas son anteriores, el parámetro seguirá presente hasta que actualices.

Comprueba la fecha del módulo instalado

Get-InstalledModule ExchangeOnlineManagement -AllVersions | Select-Object Name, Version, PublishedDate

Name                          Version  PublishedDate
----                          -------  -------------
ExchangeOnlineManagement      3.6.0    15/12/2026 10:32:07
ExchangeOnlineManagement      3.4.0    04/05/2026  9:14:51
Comprueba: Apunta la PublishedDate (fecha de publicación) de la versión que usas. Si es posterior a diciembre de 2026, el parámetro -Credential ya no estará disponible. Si es anterior, sigue funcionando, pero conviene migrar antes de la siguiente actualización.

Sustituye el inicio de sesión por autenticación moderna en Exchange Online

Para scripts interactivos o ejecutados a mano, el cambio es usar Connect-ExchangeOnline sin contraseña y dejar que Microsoft Entra abra la ventana de MFA. El usuario verá la misma pantalla de inicio de sesión que en Outlook o en el portal de Microsoft 365, con el código de Authenticator o el segundo factor que tenga configurado.

Cambia Connect-ExchangeOnline a autenticación moderna

Nota: Estos pasos sirven tanto en Windows PowerShell 5.1 como en PowerShell 7. Si tienes Windows 11 o Windows 10 con PowerShell 7 instalado, abre Terminal desde Win+X y elige Terminal (Administrador) o Windows PowerShell (Administrador). En Windows 10 con solo Windows PowerShell 5.1, búscalo en el menú Inicio.
  1. Abre PowerShell como administrador (clic derecho en el botón Inicio > Terminal (Administrador) o Windows PowerShell (Administrador)).
  2. Asegúrate de que el módulo está actualizado con Update-Module ExchangeOnlineManagement -Force.
  3. Sustituye la llamada antigua por la nueva autenticación:

Connect-ExchangeOnline -UserPrincipalName usuario@dominio.com
  1. Si gestionas varios tenants a la vez, añade -Device para que se muestre un código y puedas completar el inicio de sesión en otra pantalla:

Connect-ExchangeOnline -Device
  1. La primera vez te pedirá que inicies sesión con tu cuenta de Microsoft 365 y completes el MFA. Las siguientes veces, mientras la sesión siga activa, no volverá a pedirlo.
Comprueba: Si tras Connect-ExchangeOnline puedes ejecutar un cmdlet como Get-Mailbox sin error y ves los datos esperados, la autenticación moderna funciona. Si vuelve a pedir -Credential, revisa que el módulo sea la 3.6.0 o superior y que tu cuenta tenga MFA habilitado.

Añade el módulo a Windows PowerShell 5.1 si tu script es antiguo

Si tu script se diseñó para Windows PowerShell 5.1 (el que viene por defecto en Windows 10 y en Windows 11 hasta hace poco), instala el módulo actual desde la Terminal abierta como administrador:

Install-Module -Name ExchangeOnlineManagement -Force

Los módulos actuales también funcionan en Windows PowerShell 5.1, así que no hace falta migrar a PowerShell 7 solo por esto. PowerShell 7 se descarga desde learn.microsoft.com/powershell y aporta más compatibilidad con plataformas modernas, pero no es obligatorio para este caso.

Comprueba: Tras instalar, ejecuta Get-Module ExchangeOnlineManagement -ListAvailable y comprueba que aparece la versión 3.6.0 o superior. Si solo aparece una versión más antigua, usa Import-Module ExchangeOnlineManagement -MinimumVersion 3.6.0 para forzar la carga.

Migra los scripts del Programador de tareas a autenticación desatendida

Los trabajos que ejecutan tareas programadas al iniciar la sesión del usuario son los que más van a fallar, porque dependen de ROPC para no pedir inicio de sesión. Cuando el servidor ROPC se retire, esos scripts se quedarán sin credenciales y el trabajo fallará con un error de autenticación en el Visor de eventos. Hay dos caminos: autenticarse con un certificado desde el propio equipo, o mover la automatización a Azure Automation con una identidad administrada.

Usa un principal de servicio con un certificado para autenticarse sin MFA

Crea el registro de aplicación en Microsoft Entra con un secreto de certificados. Primero necesitas un certificado autofirmado (un archivo que el equipo reconoce como válido sin avisar al usuario) en el almacén del equipo o del usuario, y luego registrar la aplicación en Microsoft Entra.

Connect-ExchangeOnline -AppId <AppId> -CertificateThumbprint <huella> -Organization <tenant>.onmicrosoft.com
Cuidado: El certificado sustituye a la contraseña, así que protégelo igual que protegerías una. Guárdalo en el almacén Cert:\LocalMachine\My (equipo) o Cert:\CurrentUser\My (usuario), exporta una copia cifrada a un lugar seguro y revisa la fecha de caducidad antes de que expire, o el script volverá a fallar.
  1. Abre PowerShell como administrador.
  2. Crea el certificado autofirmado con New-SelfSignedCertificate -Subject "CN=ExchangeOnlineSP" -CertStoreLocation "Cert:\CurrentUser\My" -KeyExportPolicy Exportable -NotAfter (Get-Date).AddYears(2).
  3. Registra la aplicación en Entra con los cmdlets de Microsoft.Graph o desde el centro de administración de Microsoft Entra.
  4. Concede los permisos de Exchange Online al principal de servicio (por ejemplo, Exchange.ManageAsApp).
  5. En el script, sustituye Connect-ExchangeOnline con usuario y contraseña por la llamada de certificado:

Connect-ExchangeOnline -AppId "12345678-1234-1234-1234-123456789012" -CertificateThumbprint "ABC123..." -Organization "contoso.onmicrosoft.com"
Comprueba: Si tras conectar el script ejecuta un cmdlet como Get-Mailbox -ResultSize 1 sin pedirte MFA y devuelve datos, la autenticación con certificado funciona. Si el cmdlet devuelve Access is denied, revisa que los permisos de la aplicación incluyan Exchange.ManageAsApp y que la huella del certificado coincida con la del certificado instalado.

Mueve la automatización a Azure Automation con una identidad administrada

Nota: Azure Automation no está disponible en versiones Home de Windows; necesitas una suscripción de Azure y permisos para crear recursos.
  1. Entra en Azure Portal.
  2. Crea la cuenta de Automation:
Azure PortalAutomationCuentas de AutomationCrear
  1. Asigna una identidad administrada asignada por el sistema desde la cuenta de Automation (Identidad > Estado asignado por el sistema > Activado).
  2. Concede los permisos de Exchange Online a esa identidad desde el centro de administración de Microsoft 365 o con cmdlets de Graph.
  3. Carga el script como runbook (PowerShell Runbook) y prográmalo o dispara desde un webhook.

El plan gratuito ofrece 500 minutos al mes y, al pasarse, el coste es de 0,002 USD (~2 € · ~37 MXN · ~6.370 COP · ~3.030 ARS) por minuto, según los límites de Azure Automation.

Comprueba: Si el runbook se ejecuta y completa el estado Completed con datos esperados, la automatización desatendida funciona. Si el estado es Failed, abre la salida del runbook para ver el error y, si es de autenticación, revisa que la identidad administrada tenga los permisos de Exchange correctos.

Si el trabajo desatendido se ejecuta fuera de Azure y no puedes migrar todavía

Quedarse en ROPC es cada vez más arriesgado: el servidor que lo procesa se retirará tras diciembre de 2026 y los módulos antiguos dejarán de funcionar al actualizarse, así que este apartado es solo un parche temporal. Microsoft avisa de que los scripts que sigan usando -Credential dejarán de funcionar al actualizar el módulo.

Fija la versión del módulo Exchange Online PowerShell para que no se actualice

Abre la Terminal como administrador y ejecuta:

Install-Module -Name ExchangeOnlineManagement -RequiredVersion 3.4.0 -Force
Cuidado: Fijar la versión evita la rotura inmediata, pero también te deja sin las correcciones de seguridad y de errores del módulo. Marca en el calendario una fecha para migrar el script antes de que el servidor ROPC se apague, o el trabajo empezará a fallar sin aviso.
Comprueba: Tras instalar, ejecuta Get-Module ExchangeOnlineManagement -ListAvailable y comprueba que la versión 3.4.0 (o la que hayas fijado) es la única. Si hay otra más reciente, desinstálala con Uninstall-Module ExchangeOnlineManagement -RequiredVersion 3.6.0 -Force.

Revisa los scripts antes de diciembre de 2026 con el Asesor de PowerShell

Para localizar usos de -Credential en tus archivos .ps1:

Get-ScriptAdvisor
Nota: Get-ScriptAdvisor viene de la PowerShell Gallery, en powershellgallery.com, y analiza un script para proponer mejoras. No es oficial de Microsoft, pero sirve para localizar de un vistazo los puntos donde hay que tocar.
  1. Abre PowerShell como administrador.
  2. Instala el módulo con Install-Module -Name ScriptAdvisor -Force si aún no lo tienes.
  3. Pasa cada script con Invoke-ScriptAdvisor -Path "C:\Ruta\Al\Script.ps1".
  4. Busca en el informe las líneas que contengan -Credential o Get-Credential.
Comprueba: Si el informe lista las apariciones de -Credential, ya sabes qué líneas migrar. Si no lista ninguna, pero el script aun así falla, comprueba que no haya un perfil de PowerShell ($PROFILE) que esté cargando credenciales en segundo plano.

Lo que ya has comprobado en tu Exchange Online PowerShell

  • Versión del módulo y PublishedDate localizadas con Get-Module y Get-InstalledModule.
  • Connect-ExchangeOnline migrado a autenticación moderna con -UserPrincipalName o -Device.
  • Módulo actualizado a 3.6.0 o instalado en Windows PowerShell 5.1 con Install-Module.
  • Trabajos del Programador de tareas migrados a principal de servicio con certificado o a Azure Automation con identidad administrada.
  • Scripts revisados con Invoke-ScriptAdvisor antes de diciembre de migrar.

Siguiente paso: programa la migración definitiva del script que aún use -Credential antes de que el servidor ROPC se retire por completo. Cuando el módulo quede instalado y deje de usar -Credential, actualízalo con Update-Module ExchangeOnlineManagement -Force.

Dudas sobre la retirada de -Credential en Exchange Online PowerShell

1. Ejemplos de scripts en PowerShell para empezar

Un ejemplo muy básico es Get-Process, que muestra todos los procesos en ejecución. Otro habitual es Get-Service para listar los servicios del sistema. Si quieres guardar el resultado en un archivo, añade | Out-File C:\lista.txt al final del comando.

2. Cómo conectarse a Exchange Online con PowerShell

Primero instala el módulo con Install-Module ExchangeOnlineManagement desde una consola como administrador. Después conéctate con Connect-ExchangeOnline e inicia sesión con tu cuenta de Microsoft 365. Las credenciales se validan en el navegador y la sesión queda activa hasta que la cierres con Disconnect-ExchangeOnline.

3. Qué módulo se usa para administrar Exchange Online con PowerShell

El módulo oficial es ExchangeOnlineManagement, publicado por Microsoft en la PowerShell Gallery. Se instala con Install-Module ExchangeOnlineManagement y reemplaza al antiguo módulo EXO v1, que ya no se recomienda. Necesita Windows PowerShell 5.1 o PowerShell 7.4 o superior.

4. Qué tipo de lenguaje es PowerShell

PowerShell es un lenguaje de scripting orientado a objetos que se ejecuta sobre .NET. Combina la sintaxis de un shell clásico con cmdlets que devuelven objetos en lugar de texto plano, lo que permite encadenarlos con el operador pipe (|). Está disponible de forma predeterminada en Windows 10, Windows 11 y Windows Server.

5. Dónde aprender PowerShell desde cero paso a paso

La referencia oficial de Microsoft Learn incluye lecciones interactivas con la consola integrada, desde los primeros cmdlets hasta scripts completos. Para practicar con ejemplos comentados, las galerías de GitHub de la comunidad y la web oficial de PowerShell son los recursos más fiables. Evita tutoriales que prometen «trucos de hacker» y descargan scripts de origen desconocido.

Fuentes

  1. MicrosoftWhat is PowerShell? – PowerShell – Microsoft Learnconsultado el 15/10/2026
  2. MicrosoftServicio Power (Power) — documentación oficialconsultado el 15/10/2026