El símbolo del sistema (CMD) existe desde Windows NT y casi todos los usuarios de Windows están familiarizados con él. Es una potente herramienta de línea de comandos que permite interactuar con el equipo mediante comandos de texto en lugar de una interfaz gráfica. CMD se introdujo en la década de 1980, mientras que en 2006, Microsoft anunció PowerShell, otra herramienta de línea de comandos que no solo es multiplataforma, sino que también es lo suficientemente potente como para administrar mediante programación todas las versiones modernas de Windows, así como una variedad de otras plataformas. Analizamos 6 aspectos en los que PowerShell es mejor que CMD.

6Compatibilidad entre plataformas

Funciona en Mac, Linux, Windows y más.

PowerShell ejecutándose en ChromeOS

Una de las características más destacadas de PowerShell es su compatibilidad entre plataformas. A diferencia del Símbolo del sistema, que está restringido a Windows, PowerShell funciona en múltiples plataformas.

Las primeras versiones de PowerShell eran exclusivas de Windows. Sin embargo, a partir de la versión 6, PowerShell también es compatible con macOS y Linux. La compatibilidad entre plataformas no tiene como objetivo reemplazar la experiencia nativa de shell de macOS y Linux, sino facilitar la colaboración en equipos de entornos mixtos.

Vale la pena señalar que, si bien PowerShell está disponible en varias plataformas, no ofrece las mismas funciones en todas partes. Algunas funciones se comportan de manera diferente o no están disponibles debido a diferencias en .NET Core y limitaciones específicas de la plataforma. Microsoft realizó muchos otros cambios para mejorar la interoperabilidad de PowerShell en plataformas que no sean Windows.

5Funciones avanzadas del lenguaje

PowerShell utiliza un lenguaje más avanzado

Captura de pantalla del Administrador de tareas junto a una ventana del símbolo del sistema que se ejecuta con privilegios de administrador

PowerShell utiliza un lenguaje más avanzado que CMD. Mientras que el Símbolo del sistema se limita a comandos básicos con opciones limitadas, PowerShell permite trabajar con variables, bucles, condicionales y funciones, lo que permite crear scripts más complejos. Los comandos de PowerShell, llamados cmdlets, siguen un formato verbo-sustantivo, lo que facilita la comprensión de lo que hace cada uno. Por ejemplo, para enumerar los archivos de una carpeta:

  • Cmdlet de PowerShell: Get-ChildItem C:\Users\Documents
  • Comando CMD: dir C:\Users\Documents

Puede ejecutar cada cmdlet por separado, pero la verdadera magia ocurre cuando los combina para realizar tareas. Gracias al uso de canales de PowerShell, puede pasar la salida de un cmdlet directamente al siguiente, lo que le permite encadenarlos para realizar tareas más potentes.

4Opciones de redirección mejoradas

Le permite canalizar la salida de un comando a otro.

Captura de pantalla que muestra la redirección de PowerShell

CMD admite la redirección de salida básica, como leer y escribir en un archivo, pero carece de las opciones de redirección avanzadas que ofrecen la mayoría de los intérpretes de shell modernos. PowerShell, por otro lado, tiene capacidades de redirección mucho más potentes. Una característica clave es la capacidad de canalizar la salida de un comando a otro. Por ejemplo, si desea enumerar todos los servicios que se están ejecutando actualmente en su sistema mediante PowerShell, puede escribir:

Obtener servicio | Dónde objeto {$_.Status -eq "En ejecución"}

Este comando solo mostrará los servicios que se están ejecutando activamente, lo que facilita el filtrado de la salida de una manera que CMD no puede.

3Salida orientada a objetos

PowerShell genera objetos que se pueden organizar de múltiples maneras

Salida en PowerShell

Una de las principales diferencias entre PowerShell y el símbolo del sistema es la forma en que manejan la salida. CMD genera texto sin formato, mientras que PowerShell genera objetos que se pueden organizar de múltiples maneras: como tablas, listas y archivos CSV. Esto significa que, en lugar de trabajar con cadenas de texto, puede interactuar fácilmente con las propiedades de los objetos y manipularlas directamente.

Por ejemplo, para enumerar procesos en PowerShell como una tabla:

Obtener proceso | Formato de tabla: nombre de propiedad, Id., CPU

Este comando formatea la salida como una tabla, mostrando el nombre del proceso, el ID y el uso de la CPU.

Otro ejemplo, para exportar una lista de servicios a un archivo CSV:

Obtener servicio | Exportar CSV - Ruta C:\services.csv - NoTypeInformation

Este comando exporta la lista de servicios a un archivo CSV, lo que facilita el análisis o el intercambio de datos.

2Integración perfecta con los servicios de Microsoft

Se integra con servicios como Azure, Active Directory y más.

Una computadora portátil que muestra la página de inicio de Microsoft 365 con íconos de logotipos de Office y aplicaciones de Google Docs

PowerShell se integra perfectamente con servicios de Microsoft como Azure, Active Directory y Office 365. Esto lo convierte en una herramienta de referencia para los administradores de sistemas que gestionan entornos a gran escala o infraestructuras en la nube. CMD no tiene soporte nativo para los servicios en línea o las herramientas en la nube de Microsoft. Dado que no admite módulos, deberá confiar en scripts o herramientas de terceros para conectarse a estos servicios.

1Acceso completo a las bibliotecas .NET

Powershell incluso puede soportar escenarios de scripting avanzados

Captura de pantalla que muestra el comando copiar en PowerShell

A diferencia del Símbolo del sistema, que ofrece acceso limitado a las funciones del sistema, PowerShell tiene acceso completo a las bibliotecas .NET. Esto le permite conectarse a bases de datos y administrarlas, trabajar con aplicaciones web y API, manejar operaciones de archivos complejas y analizar o manipular formatos de datos como JSON y XML. Esta integración también permite que PowerShell admita escenarios de scripting avanzados, como la automatización de servicios en la nube, la creación de herramientas personalizadas e incluso la creación de GUI para scripts.

PowerShell es el camino a seguir

Todo lo que CMD puede hacer, PowerShell también lo puede hacer, y más. PowerShell incluye cmdlets para casi todas las tareas administrativas que puedas necesitar. Puede resultar un poco abrumador si recién estás empezando, pero una vez que te familiarices con el lenguaje de scripting, te puede ahorrar mucho tiempo. También hemos elaborado unalista de otros comandosyscriptsde PowerShell que vale la pena consultar. Si usas una Mac, tómate un tiempo para aprendera usar la Terminal en macOS.