🇯🇵 日本語 | 🇺🇸 English | 🇪🇸 Español | 🇵🇹 Português | 🇹🇭 ไทย | 🇨🇳 中文

Diferencias con PowerShell: ¿Por qué deberías graduarte de cmd?

En la serie hasta ahora, hemos aprendido sobre la historia del shell tradicional de Windows, el Símbolo del sistema (cmd.exe), su uso básico y hasta la automatización simple. Su simplicidad y su continua existencia por razones de compatibilidad podrían considerarse la historia misma de Windows.

Sin embargo, por otro lado, también conocemos la existencia de un "PowerShell" más moderno y potente. Muchos de ustedes probablemente sientan: "Ya entiendo lo básico de cmd, pero ¿realmente debería cambiarme a PowerShell?" o "Quiero saber más sobre los beneficios concretos".

Este artículo es tu "guía de graduación". Mientras recordamos con cariño el "anuario" que es el Símbolo del sistema, explicaremos a fondo, a través de una comparación, las razones decisivas y concretas por las que los creadores web modernos deberían avanzar a la "nueva etapa" de PowerShell. ¡Cuando termines de leer este artículo, tu mano, al abrir la terminal, se dirigirá naturalmente al icono de PowerShell!


Comparación 1: El poder de "encontrar" la información que quieres - Los límites del texto y el potencial de los objetos

La diferencia más fundamental entre ambos radica en el formato de la información que devuelven los comandos. Entender esto es la clave para comprender la diferencia entre ambos.

El reto: "Quiero averiguar cuáles son los 5 archivos más grandes en mi carpeta de documentos."

El intento con el Símbolo del sistema (cmd)

Intentar hacer esto en cmd no es tarea fácil. Puedes obtener una lista de archivos con dir /s, pero el resultado es solo una sarta de texto. Extraer solo la parte del tamaño del archivo, ordenarla correctamente como un número y mostrar los 5 primeros... se convierte en una tarea muy avanzada y propensa a errores que requiere el uso de bucles for /f complejos y manipulación de cadenas de texto.

En otras palabras, cmd es bueno para que "los humanos lo vean y juzguen", pero no es adecuado para que "un programa reutilice el resultado para realizar un procesamiento más avanzado".

La brillante solución con PowerShell

Por otro lado, en PowerShell, esta tarea se puede resolver con una sola línea, fluida como el agua.

Get-ChildItem -Path "C:\Users\YourName\Documents" -File -Recurse | Sort-Object -Property Length -Descending | Select-Object -First 5

Esto es lo que hace esta única línea, paso a paso:

  1. Get-ChildItem: Primero, obtiene todos los archivos y carpetas en la carpeta especificada como "objetos".
  2. |: Pasa la colección de objetos al siguiente comando a través de una canalización.
  3. Sort-Object: Ordena los objetos pasados por el tamaño del archivo (la propiedad Length) en orden descendente (-Descending).
  4. |: Pasa los resultados ordenados al siguiente comando.
  5. Select-Object: De los objetos pasados, selecciona y muestra solo los 5 primeros (-First 5).

En lugar de esforzarse por analizar texto, se manipulan libremente datos estructurados por sus propiedades. Esta es la principal razón por la que se dice que PowerShell es "potente".


Comparación 2: El poder de "integración" con el exterior - ¿Se puede o no se puede llamar a una API?

En la creación web moderna, es frecuente tener que obtener y utilizar datos de API (Application Programming Interface) externas. Por ejemplo, obtener información de un servicio web o datos del pronóstico del tiempo.

El reto: "Quiero usar la API de GitHub para obtener la información del usuario de Microsoft y mostrar el número de repositorios públicos."

El desafío con el Símbolo del sistema (cmd)

cmd no tiene una función estándar para acceder a la web y obtener o analizar datos como JSON. Para lograrlo, sería necesario instalar por separado una herramienta externa como curl, y luego procesar el texto JSON obtenido con otro método, lo que resulta muy engorroso.

La sencilla solución con PowerShell

PowerShell viene de serie con un potente cmdlet llamado Invoke-RestMethod. Es una excelente herramienta que accede a una API web y convierte automáticamente los datos JSON devueltos en objetos de PowerShell.

Primero, obtenemos los datos de la API y los guardamos en una variable.

$gitHubUser = Invoke-RestMethod -Uri "https://api.github.com/users/microsoft"

Y con solo eso, lo único que queda es acceder a las propiedades del objeto.

Write-Host "Nombre de usuario: $($gitHubUser.name)"
Write-Host "Número de repositorios públicos: $($gitHubUser.public_repos)"

Como si fueran datos locales, hemos podido acceder fácilmente a la información de la web con formatos como .name y .public_repos. Esta capacidad de integración con servicios externos es una ventaja abrumadora de PowerShell que cmd no tiene.


Resumen: ¿Por qué deberíamos graduarnos de cmd?

Como hemos visto, PowerShell no es un simple sucesor del Símbolo del sistema. Es una herramienta con una filosofía completamente nueva, rediseñada desde cero para realizar tareas modernas.

Las razones por las que deberías migrar de cmd a PowerShell son claras:

El conocimiento del Símbolo del sistema no es en vano para entender la historia de Windows. Sin embargo, para aumentar la productividad como creador web o como profesional de TI de ahora en adelante, migrar a la herramienta más potente y moderna que es PowerShell es, sin duda, la inversión más inteligente.

La serie de introducción a cmd.exe concluye aquí. Esperamos que esta serie te haya ayudado a superar tu reticencia a la "pantalla negra" y a descubrir el verdadero poder de la línea de comandos. ¡Gracias!