PowerShell vs CMD ¿Cuál es la diferencia? - 3 - octubre 11, 2022

PowerShell vs CMD ¿Cuál es la diferencia?

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.

PowerShell vs CMD ¿Cuál es la diferencia? - 5 - octubre 11, 2022

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.

PowerShell vs CMD ¿Cuál es la diferencia? - 7 - octubre 11, 2022

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 vs CMD ¿Cuál es la diferencia? - 9 - octubre 11, 2022

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.

PowerShell vs CMD ¿Cuál es la diferencia? - 11 - octubre 11, 2022

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.

PowerShell vs CMD ¿Cuál es la diferencia? - 13 - octubre 11, 2022

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.

PowerShell vs CMD ¿Cuál es la diferencia? - 15 - octubre 11, 2022

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 ShellCMD
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ónCmdlet de PowerShellComando CMD
Muestra una lista de elementos y elementos secundarios en una ubicación específicaObtener elemento secundarioDirectorio
Obtiene el contenido de un elemento.Obtener el contenidoEscribe
Enumera los comandos disponibles con una breve descripciónObtener comandoAyuda
Muestra información detallada sobre el comando especificadoConsigue ayuda/?
Muestra la ubicación de trabajo actualObtener ubicaciónDiscos compactos
Cambia la ruta de trabajo actual a una especificadaEscoger localizaciónCd, chdir
Enumera todos los procesos en ejecuciónObtener procesoLista de tareas
Detiene un proceso en ejecuciónProceso de paradaMatar tarea matar
Copia artículos a otra ubicaciónCopiar elementoCopiar, xcopiar
Mueve elementos a una nueva ubicaciónMover elementoMuevete
Elimina un elementoRemover el artículoDel, borrar
Cambia el nombre de un elementoRenombrar artículoRen, renombrar
Devuelve la dirección IP del sistemaGet-NetIPAddressIpconfig
Reinicia el sistema localReiniciar computadoraApagado/r
Borra la pantallaClear-HostCls