Microsoft continúa la limpieza de componentes obsoletos en su sistema operativo. Esta vez la compañía anunció el fin del soporte para PowerShell 2.0. Ya en las recientes compilaciones de prueba de Windows 11 esta versión ha sido totalmente eliminada, y en las próximas actualizaciones oficiales la novedad afectará a todos los usuarios.
A primera vista puede parecer un matiz técnico poco visible. Pero para los especialistas y quienes vigilan la seguridad del sistema, esta noticia tiene un significado mucho más profundo.
Para entender por qué la retirada del antiguo PowerShell es un paso positivo, conviene explicar qué es esta herramienta, cómo está hecha, qué tareas resuelve y por qué sus versiones iniciales desde hace tiempo se consideran un eslabón débil en la protección de Windows.
PowerShell: qué es esta herramienta
PowerShell — es un intérprete de comandos avanzado y un lenguaje de secuencias de comandos para administrar Windows y otros sistemas operativos. Llegó para sustituir al clásico Símbolo del sistema (cmd.exe), existente desde la época de MS-DOS, y amplió radicalmente las capacidades para trabajar con el sistema.
A diferencia de la consola simple, PowerShell permite no solo ejecutar comandos, sino construir scripts complejos, automatizar tareas rutinarias, gestionar procesos del sistema, servicios, archivos, configuraciones de red e incluso servicios en la nube.
Hoy en día PowerShell se utiliza ampliamente:
- por administradores de sistemas para automatizar el trabajo con Windows y servidores;
- por desarrolladores para probar y gestionar aplicaciones;
- por especialistas DevOps para controlar la infraestructura;
- en redes corporativas para la administración centralizada.
Historia de PowerShell: de experimento a estándar mundial
El desarrollo de PowerShell comenzó a principios de los años 2000, cuando Microsoft percibió la necesidad de ofrecer a los usuarios una herramienta de gestión por comandos más flexible y moderna. Las primeras versiones llevaron el nombre en clave Monad.
Etapas clave:
- 2006 — lanzamiento oficial de PowerShell 1.0;
- 2009 — aparición de PowerShell 2.0 con capacidades ampliadas y soporte para administración remota;
- desde 2016 — inicio de PowerShell Core, la versión multiplataforma basada en .NET Core para Windows, macOS y Linux;
- años 2020 — desarrollo activo de PowerShell 7 y versiones superiores, con mejoras en seguridad y compatibilidad.
PowerShell se convirtió rápidamente en un estándar para el trabajo profesional con Windows y, gracias a su flexibilidad, se emplea incluso fuera del ecosistema de Microsoft.
Por qué eliminar PowerShell 2.0 es lo correcto
Obviamente, la versión 2.0, publicada en 2009, lleva mucho tiempo obsoleta. Aun así, se siguió manteniendo porque algunas aplicaciones y scripts antiguos dependían de esa versión.
Sin embargo, se acumularon demasiados problemas:
- falta de mecanismos modernos de protección;
- vulnerabilidad frente a ataques similares a los macros maliciosos en documentos de Office;
- compatibilidad limitada con las nuevas versiones de Windows y .NET;
- uso de estándares criptográficos obsoletos.
PowerShell 2.0 se utilizaba con frecuencia por atacantes para eludir los mecanismos de protección modernos. Aunque las versiones más recientes de PowerShell incorporan medidas de seguridad integradas, control de acceso y mecanismos de registro, que hacen que esos ataques sean mucho más difíciles.
Por eso el cese de soporte de la versión obsoleta es un paso lógico e importante para mejorar la seguridad general del sistema.
Cómo afectará esto a los usuarios
Para la mayoría la novedad pasará desapercibida. Si no ejecutaban scripts antiguos manualmente o no usan soluciones corporativas obsoletas, probablemente no tendrán que cambiar nada.
Sin embargo, en algunos casos conviene prepararse:
- compruebe si tiene scripts o aplicaciones que requieran explícitamente la versión 2.0 (por ejemplo, usan
powershell.exe -version 2); - actualice todos los scripts y utilidades para que sean compatibles con las versiones actuales de PowerShell — como mínimo 5.1 o PowerShell 7;
- en las empresas es recomendable revisar las automatizaciones internas y los scripts de administración;
- si utiliza versiones antiguas de SQL Server o Exchange, asegúrese de que no dependen de PowerShell 2.0.
Microsoft advirtió con antelación sobre la próxima eliminación para dar a desarrolladores y administradores tiempo para prepararse.
En detalle: cómo funciona PowerShell por dentro
A diferencia de los intérpretes de comandos clásicos, PowerShell está construido sobre la plataforma .NET y trabaja con objetos de datos completos, no solo con cadenas de texto.
Modelo de objetos e integración con .NET
Cada comando de PowerShell devuelve no texto, sino objetos .NET estructurados. Esto permite procesar datos de forma conveniente, filtrarlos, acceder a propiedades concretas y combinar resultados sin tener que analizar cadenas manualmente.
Ejemplo: el comando Get-Process devuelve la lista de procesos como objetos que contienen información detallada de cada uno: nombre, identificador, carga de CPU y otros parámetros.
Mecanismo de canalización (Pipeline)
PowerShell soporta la noción de canalización: procesamiento secuencial de objetos de un comando a otro:
Get-Process | Where-Object { $_.CPU -gt 100 } | Sort-Object CPU -Descending
Este enfoque garantiza limpieza y comodidad al trabajar con datos. En cada etapa se puede controlar con precisión el resultado y pasar solo la información necesaria a la siguiente.
Extensibilidad y seguridad
PowerShell permite ampliar la funcionalidad mediante módulos propios y cmdlets. Existen miles de módulos listos para trabajar con Active Directory, Azure, VMware y otros sistemas.
A partir de las versiones 5.x y especialmente en PowerShell Core, Microsoft puso el énfasis en la seguridad:
- se incluyó el control de la política de ejecución (Execution Policy);
- se añadió Administración mínima necesaria (JEA), que permite limitar los privilegios de los scripts;
- se mejoró la protección de la ejecución remota de comandos (PowerShell Remoting);
- se usan estándares criptográficos modernos.
Estas medidas complican considerablemente los intentos de usar PowerShell para ataques cuando se trata de versiones modernas de la herramienta. Sin embargo, los problemas de seguridad aparecen periódicamente — por ejemplo, una vulnerabilidad crítica en PowerShell 7 o problemas con PowerShell Gallery.