Símbolo del sistema es el shell de línea de comandos tradicional en Windows. Proporcionó una forma de comunicarse directamente con una aplicación o el sistema operativo a través de la CLI, automatizar operaciones con archivos por lotes (.bat
) y ejecutar scripts.
PowerShell, que actualmente es el shell de línea de comandos predeterminado, amplía estos y proporciona una capacidad de automatización aún más robusta. Es un lenguaje de secuencias de comandos en sí mismo con su propio ISE y soporte para comandos cmd y bash también.
Dado que ambos tienen propósitos similares, es posible que se pregunte, ¿son realmente tan diferentes? ¿CMD es solo una versión más simple de PowerShell? ¿PowerShell va a reemplazar el símbolo del sistema en el futuro? Hemos respondido a estas y otras consultas similares en el siguiente artículo.
¿Qué es el símbolo del sistema?
En los días de MS-DOS, los usuarios tenían que ingresar comandos completamente a través de la interfaz de línea de comandos (CLI) para operar las computadoras. Con el tiempo y la innovación, MS-DOS fue reemplazado por sistemas operativos basados en GUI. Pero una parte de CLI se atascó en forma de símbolo del sistema, que se lanzó por primera vez en 1987.
Símbolo del sistema, también llamado CMD, es el intérprete de línea de comandos en la línea de sistemas operativos Windows NT. Interactúa con el usuario a través de una CLI, que se implementa a través de la consola Win32.
CMD acepta las entradas de los usuarios (comandos) y las traduce (interpreta) en una forma comprensible para la computadora (lenguaje de máquina). Los comandos de CMD están predeterminados y cada uno realiza una determinada tarea.
Estos comandos se pueden usar para propósitos simples (como verificar su ping o dirección IP) para cosas avanzadas como crear archivos por lotes y scripts para automatizar tareas de administración del sistema (instalar software, respaldar servidores o cerrar sesión de usuarios en PC en una red grande, por ejemplo).
La realización de tareas a través de CMD es generalmente más rápida y eficiente que la GUI, especialmente aquellas que se pueden realizar mediante la ejecución de lotes de comandos. Como sus comandos y secuencias de comandos se almacenan en un archivo de texto, sus comandos no solo son repetibles, sino que también son auditables, lo cual es otro gran beneficio.
Se puede acceder al símbolo del sistema con el comando de ejecución
Cmd
.
¿Qué es PowerShell?
PowerShell es un shell de línea de comandos multiplataforma, un lenguaje de secuencias de comandos y un marco de automatización, todo en uno. Basado en el nuevo marco .NET Core, los administradores de sistemas han utilizado tradicionalmente PowerShell.
En estos días, es cada vez más popular entre DevOps, Cloud Ops y desarrolladores gracias a características como el encadenamiento de canalizaciones, finalización de pestañas/predicción de comandos, alias, historial de línea de comandos, unidades de PowerShell, comunicación remota de PowerShell y más.
PowerShell se usa comúnmente para tareas de gestión y administración de sistemas automáticos, gestión de la nube, creación, prueba e implementación de soluciones en entornos de CI/CD, etc. Puede funcionar con tecnologías como Azure, SQL, Exchange, AWS, Google Cloud, VMWare y más.
PowerShell usa comandos livianos únicos conocidos como cmdlets (comandos pronunciados). Además de los cmdlets nativos, PowerShell también admite comandos CMD y Bash en forma de alias. Ah, y también puede crear sus propios cmdlets, módulos y funciones personalizados.
Como shell de línea de comandos predeterminado, se puede acceder a PowerShell desde el menú de usuario avanzado (Windows + X). Por supuesto, el comando ejecutar Powershell
También funciona bien.
PowerShell VS CMD Las principales diferencias
Si bien PowerShell y CMD pueden parecer similares a primera vista, son completamente diferentes entre sí, desde sus comandos y estructura de lenguaje hasta el entorno y las capacidades de secuencias de comandos. Estas son las principales diferencias entre PowerShell y el símbolo del sistema.
Comandos
Los cmdlets de PowerShell difieren de los comandos CMD en el sentido de que son instancias de clases .NET en lugar de ejecutables independientes.
PowerShell admite la creación de cmdlets nuevos y personalizados, que se pueden crear a partir de unas pocas líneas de código, mientras que CMD no lo hace.
PowerShell también admite comandos CMD y comandos Bash en forma de alias, mientras que no se puede decir lo mismo del símbolo del sistema.
Además, PowerShell también tiene cmdlets nativos para trabajar con el Instrumental de administración de Windows (WMI) en computadoras locales y remotas, mientras que CMD no.
Estructura del lenguaje
CMD tiene muchos comandos por lotes simples que recuerdan a MS-DOS, como Cd
O Dir
. Estos pueden ser difíciles de entender/recordar si no tienes mucha experiencia con ellos.
Por otro lado, los cmdlets de PowerShell son mucho más fáciles de aprender e interpretar debido a cómo está estructurado el lenguaje. Los cmdlets de PowerShell generalmente siguen un formato Verb-Noun o, a veces, Verb-ModuleNoun.
El verbo indica qué tipo de acción está tratando de realizar. Los verbos comúnmente usados incluyen obtener (obtener los detalles de algo), establecer (cambiar el estado o la configuración de algo), nuevo (Crear un elemento nuevo) y eliminar (Eliminar un elemento existente). Puede obtener una lista completa de todos los verbos posibles con el cmdlet Get-Verb
.
Módulo indica qué módulo contiene el comando, mientras que Sustantivo indica en qué tipo de elemento está trabajando.
Con un formato consistente como este, es posible hacer una suposición informada en muchas situaciones, lo que hace que el proceso de aprendizaje sea mucho más fácil que con el símbolo del sistema.
Tuberías, objetos y variables
Una canalización se usa para ejecutar varios comandos secuencialmente, donde la salida de un comando se usa directamente como entrada para el siguiente comando. El concepto de canalización no es exclusivo de PowerShell.
Lo que es único es que en PowerShell, los objetos se usan para recuperar y devolver datos, mientras que, en el símbolo del sistema, las entradas y salidas son simplemente cadenas. Esto hace que PowerShell sea más eficiente y capaz de procesar datos complejos de la misma manera que lo hacen los lenguajes de programación, algo que CMD no puede hacer.
En CMD, debe pasar las variables a los comandos en un orden estricto, ya que la cantidad de variables es limitada. No existen tales limitaciones en PowerShell.
Sistema de ayuda
En PowerShell, Get-Help
Y Get-Command
Se usan comúnmente para descifrar los comandos y obtener información adicional. El sistema de ayuda de PowerShell también está integrado con artículos de ayuda en línea.
El uso Get-Help
Le brinda información sobre cómo usar este cmdlet. Si usa Get-help ip
, obtiene una lista de todas las funciones, cmdlets y alias relacionados con IP. Si usa Get-help set-netipaddress
, solo muestra información sobre esa función específica.
De manera similar, el uso Get-Command
muestra una lista extensa de todos los comandos instalados en la computadora. Puede modificarlo con varios parámetros, como Get-Command -Type Cmdlet
, por ejemplo.
En el caso de CMD, el comando de ayuda muestra una lista de los comandos del sistema disponibles. Escribir Help dir
, por ejemplo, proporciona información detallada sobre el comando dir. Pero esto no funciona con todos los comandos, en cuyo caso, puede usar /?
Ya que sirve para el mismo fin. Por ejemplo, Ping /?
Muestra información sobre el comando ping.
Entorno y guiones
El símbolo del sistema es muy limitado, ya que solo puede ejecutar comandos básicos de DOS que no tienen acceso a muchas funciones de administración del sistema.
En CMD, deberá escribir un script en un bloc de notas, guardarlo como un archivo por lotes y ejecutarlo por separado, mientras que esto se puede invocar directamente en PowerShell. En ese sentido, los scripts de CMD se guardan como archivos .bat
, mientras que los scripts de PowerShell se guardan como archivos .ps1
.
CMD tampoco tiene un ISE (Entorno de secuencias de comandos integrado), lo que significa que simplemente no puede igualar la capacidad de PowerShell para crear secuencias de comandos complejas.
PowerShell tiene acceso profundo al sistema de Windows y puede interactuar con los objetos del sistema en el nivel central. Además, PowerShells ISE le permite escribir, ejecutar, probar y depurar comandos, alias y scripts.
Algunas otras características clave de PowerShell ISE incluyen la edición multilínea, la ejecución selectiva, la ayuda sensible al contexto, la finalización de pestañas, el coloreado de sintaxis, la compatibilidad con idiomas de derecha a izquierda y la personalización de la apariencia, entre otras.
Veredicto final PowerShell VS CMD
En resumen, estas son las principales diferencias entre PowerShell y CMD:
Potencia Shell | CMD |
Powershell utiliza objetos de programación autónomos llamados cmdlets que siguen un formato de verbo-sustantivo coherente. | Los comandos CMD no siguen un formato consistente. |
También admite alias y la creación de cmdlets personalizados. | CMD no admite alias ni la creación de nuevos comandos. |
Powershell admite comandos Bash y, por lo tanto, sistemas Linux. | CMD no es compatible con sistemas Linux. |
Puede canalizar las salidas como objetos en Powershell. | La salida de un comando en CMD es una cadena y no puede canalizarla a otro comando. |
Powershell tiene un ISE. | CMD no tiene ISE. |
Powershell tiene acceso a bibliotecas de programación. | CMD no tiene acceso a bibliotecas de programación. |
Para el usuario promedio, la razón por la que usa la línea de comando la mayor parte del tiempo es probablemente para verificar su ping o IP. El símbolo del sistema es una herramienta perfectamente adecuada para este propósito.
O tal vez eres un usuario mayor experto en CMD y no estás dispuesto a dejarlo todavía. CMD no desaparecerá pronto, por lo que si está haciendo el trabajo por usted, también está bien.
Pero no se puede negar que PowerShell es superior a CMD en casi todas las métricas. PowerShell es extensible, encadenable y ofrece mucha más funcionalidad.
La introducción de PowerShell eliminó las molestias a las que solían enfrentarse los administradores de sistemas: combinar y navegar manualmente por los directorios de Windows para ubicar los cmdlets con el fin de automatizar las tareas de administración, especialmente las copias de seguridad, la restauración, la actualización y los trabajos cron relacionados con el mantenimiento.
El símbolo del sistema simplemente no puede igualar las capacidades de automatización y administración del sistema de PowerShells. Esto es obvio para la mayoría de los usuarios avanzados y administradores de sistemas, razón por la cual Microsoft probablemente intentará reemplazar cmd con PowerShell eventualmente. Después de todo, PowerShell puede hacer la mayor parte de lo que hace CMD y mucho más.
Comparación de comandos más útiles
La mayoría de los usuarios se han encontrado con uno o dos errores que les han obligado a utilizar herramientas de línea de comandos para resolver el problema. Usar powershell o cmd puede parecer desalentador al principio, pero confiamos en que la siguiente tabla será útil en tales casos. En él, compilamos algunos de los cmdlets y comandos cmd de PowerShell más útiles, y describimos brevemente su función.
Comando Descripción | Cmdlet de PowerShell | Comando CMD |
Muestra una lista de elementos y elementos secundarios en una ubicación específica | Obtener elemento secundario | Directorio |
Obtiene el contenido de un elemento. | Obtener el contenido | Escribe |
Enumera los comandos disponibles con una breve descripción | Obtener comando | Ayuda |
Muestra información detallada sobre el comando especificado | Consigue ayuda | /? |
Muestra la ubicación de trabajo actual | Obtener ubicación | Discos compactos |
Cambia la ruta de trabajo actual a una especificada | Escoger localización | Cd, chdir |
Enumera todos los procesos en ejecución | Obtener proceso | Lista de tareas |
Detiene un proceso en ejecución | Proceso de parada | Matar tarea matar |
Copia artículos a otra ubicación | Copiar elemento | Copiar, xcopiar |
Mueve elementos a una nueva ubicación | Mover elemento | Muevete |
Elimina un elemento | Remover el artículo | Del, borrar |
Cambia el nombre de un elemento | Renombrar artículo | Ren, renombrar |
Devuelve la dirección IP del sistema | Get-NetIPAddress | Ipconfig |
Reinicia el sistema local | Reiniciar computadora | Apagado/r |
Borra la pantalla | Clear-Host | Cls |