PowerShell ya lleva varios años en el mercado y, en ese tiempo, ha eclipsado casi por completo al antiguo shell cmd.exe y se ha vuelto cada vez más potente. Está estrechamente integrado con muchas funciones básicas del sistema operativo Windows y puede ayudarte a crear scripts para casi cualquier función de Windows. PowerShell no siempre ha sido el lenguaje más popular (aunque muchos administradores de Windows lo recomiendan), pero en los últimos años ha vuelto a cobrar impulso, con la ayuda de un impulso general para mejorar las herramientas de desarrollo en Windows con herramientas como el nuevoWindows Terminaly WSL.

Pero si eres nuevo en Windows, la diferencia entre PowerShell y la línea de comandos puede resultar un poco confusa. Básicamente, son herramientas diferentes, creadas para distintos propósitos y para distintas generaciones. Son casi completamente diferentes en su funcionamiento y en su diseño para su uso, y PowerShell es ahora, con diferencia, el más potente de los dos.

Con esto en mente, repasemos algunas de las diferencias clave entre PowerShell y CMD, y los aspectos que debemos tener en cuenta al usarlos.

3Sintaxis y funcionalidad del lenguaje

PowerShell no es sólo una versión más bonita de CMD

Primer plano de una ventana de terminal de Windows después de ejecutar un comando con sudo

Este es el más obvio. PowerShell y cmd.exe funcionan con una sintaxis completamente diferente. El símbolo del sistema interpreta tradicionalmente scripts por lotes (.bat o .cmd) y algunos comandos básicos del sistema. Estos solían ser engorrosos y resultaba difícil escribir scripts más avanzados para ellos. El tipo de scripts de PowerShell extensibles, interoperables y dinámicos que disfrutamos ahora sería, en el mejor de los casos, difícil de crear por lotes. Este es un problema heredado: los scripts por lotes han existido de alguna forma desde MS-DOS.

Por el contrario, la sintaxis de PowerShell está construida sobre .NET, que, a pesar de no ser el framework más "de moda", es extremadamente potente dentro de un entorno Windows. Está diseñado desde cero para la automatización dentro de Windows y tiene API extensas y enlaces al sistema operativo. La ventaja de esto es que el framework subyacente está separado de la interfaz, lo que permite a los desarrolladores de PowerShell operar en una API contenida con salvaguardas en su lugar, en lugar de tratar de lidiar directamente con la difícil WinAPI.

Otra diferencia clave entre las dos herramientas es cómo interactúan con otro software. CMD genera texto (lo cual no es necesariamente algo malo, Bash también genera texto sin formato), mientras que PowerShell genera objetos .NET. Esto tiene algunas ventajas y desventajas, ya que la interoperabilidad dentro de las herramientas creadas para PowerShell es más fácil y las herramientas pueden absorber más fácilmente la salida de otras herramientas sin necesidad de analizar texto (o manejar verbosidad en cosas como JSON). Esto ayuda a la automatización y es una puerta de entrada a una administración de sistemas más compleja en Windows (aunque a menudo verá que las herramientas de PowerShell se alejan bastante de la filosofía KISS de muchas buenas herramientas de Unix). Sin embargo, puede dificultar la visualización de algunos resultados y el formato puede ser un poco extraño.

2Soporte multiplataforma

PowerShell en Linux no habría parecido una broma hace una década

Manjaro para WSL en Windows 11

Si bien no es una opción muy popular, una gran diferencia entre PowerShell y el símbolo del sistema es que PowerShell es interoperable con macOS y Linux. El marco subyacente para PowerShell (.NET Core) es multiplataforma de manera predeterminada, lo que hace que sea mucho más fácil desarrollar PowerShell teniendo en cuenta la compatibilidad con varias plataformas. Este no siempre fue el caso: la compatibilidad con varias plataformas solo se agregó con PowerShell Core 6, pero las versiones modernas de PowerShell deberían funcionar de manera relativamente fluida en todos los entornos.

CMD se desarrolló originalmente pensando únicamente en la compatibilidad con Windows, y muchas de sus funciones están estrechamente vinculadas a componentes específicos de Windows dentro del sistema operativo. El progreso de PowerShell en este caso refleja un cambio arquitectónico más amplio entre CMD y PowerShell, donde PowerShell se basa en gran medida en .NET Core, mientras que CMD a menudo se basa directamente en WinAPI.

La historia detrás de cómo el equipo de PowerShell convirtió PowerShell en código abierto y le brindó soporte multiplataforma es una historia interesante de refactorización de una base de código más antigua, y se ha escrito sobre ella en unapublicación de blogde 2016.

Relacionado
La guía definitiva sobre PowerShell en Windows 11

¿Quieres automatizar tareas en tu computadora para ser más productivo? PowerShell puede ayudarte y hacer muchas otras cosas además de eso.

1

1PowerShell es de código abierto (en parte)

El desarrollo orientado a la comunidad ha marcado una gran diferencia para Microsoft

PowerShell-Github
Fuente:Github

CMD representa una herramienta del pasado para Microsoft, como una herramienta de código cerrado y propietaria cuyo desarrollo han controlado durante años. PowerShell, sin embargo, es parte de un cambio que se ha producido en la última década con respecto al Microsoft del pasado. Existe un enfoque cada vez mayor en la creación de plataformas de código abierto y con amplio respaldo para ayudar a la comunidad en su conjunto, en lugar de crear un jardín amurallado para Windows. Esto ha involucrado todo, desde VS Code hasta F#, TypeScript y elSubsistema de Windows para Linux.

PowerShell no es una excepción en este sentido, y su desarrollo dePowerShell Corese sigue abiertamente en GitHub (ahora también propiedad de Microsoft, lo que lleva este esfuerzo un paso más allá). Esto permite que la comunidad no solo contribuya y ayude a dirigir el desarrollo de PowerShell, sino que también lo convierte en una herramienta mucho más confiable sobre la que construir. Las versiones anteriores siempre estarán disponibles, al igual que el soporte de la comunidad. Esto contrasta con CMD, que nunca se sintió como una plataforma diseñada teniendo en cuenta a los desarrolladores modernos (y para ser justos, no lo fue).

Los beneficios de que PowerShell pase a una licencia de código abierto como esta incluyen un mejor soporte de la comunidad, aportes de la comunidad sobre la dirección del desarrollo, una plataforma común para informes de errores y debates, sin mencionar la capacidad de la comunidad para contribuir fácilmente. Este modelo ha sido muy exitoso para Microsoft durante la última década, y espero que sigan priorizando el desarrollo abierto y orientado a la comunidad, especialmente para herramientas diseñadas para desarrolladores o usuarios avanzados. ¡Incluso herramientas comoPowerToysson de código abierto!

Relacionado
La guía definitiva sobre PowerShell en Windows 11

¿Quieres automatizar tareas en tu computadora para ser más productivo? PowerShell puede ayudarte y hacer muchas otras cosas además de eso.

1

PowerShell es una gran mejora con respecto a CMD y mejora cada vez más.

CMD era una herramienta de su época y ahora está claramente obsoleta en Windows (y lo ha estado durante años). Microsoft ha estado haciendo grandes avances para mejorar esto, tanto con la introducción de WSL, que es una gran incorporación para los desarrolladores, como con las capacidades cada vez mejores de PowerShell, que está más orientado a los administradores de sistemas y automatizadores.

PowerShell mejora constantemente y Microsoft parece preocuparse mucho por su desarrollo. En 2024, no deberías usar CMD si puedes evitarlo, y aprender a usar PowerShell es una excelente manera de comenzar a sentirte un poco más poderoso cuando te sientes frente a una PC con Windows.