Logo de fravelz

Notas de Hacking

Fravelz

Diferencias entre Powershell y CMD


CMD (Command Prompt) {#cmd-command-prompt}

  • Origen: Basado en MS-DOS, presente en Windows desde versiones muy antiguas.
  • Lenguaje: Usa un lenguaje de comandos muy básico, llamado batch.
  • Funciones principales:
  • Ejecutar comandos simples del sistema (dir, copy, del, etc.).
  • Automatizar tareas básicas con archivos .bat.
  • Limitaciones: - Manejo de objetos muy limitado: CMD trabaja con **texto plano**, no con objetos. - Automatización avanzada complicada. - Funciones modernas de Windows (como administración de registros o servicios) son más difíciles de hacer.
  • ---

    PowerShell {#powershell}

    • Origen: Introducido en 2006 como una herramienta moderna de administración de Windows.
    • Lenguaje: Basado en .NET, orientado a objetos.
    • Funciones principales: No solo ejecuta comandos, sino que devuelve objetos completos, no solo texto. Ejemplo: Get-Process devuelve un objeto de proceso con propiedades (Id, CPU, Memory, etc.) que se pueden filtrar o manipular.
  • Automatización avanzada: scripts .ps1 pueden hacer casi cualquier cosa en Windows, desde tareas de administración hasta manipulación de servicios, registro, Active Directory, etc.
  • Combinación de cmdlets (comandos especializados de PowerShell) para tareas complejas.
  • Compatibilidad: Puede ejecutar casi todos los comandos de CMD, y mucho más.
  • Multiplataforma: PowerShell 7+ funciona en Windows, Linux y macOS.
  • ---

    Diferencias clave en práctica {#diferencias-clave-en-práctica}


    Ejemplo {#ejemplo}

    • CMD:
    dir | find "archivo.txt"
    • PowerShell:
    Get-ChildItem | Where-Object { $_.Name -eq "archivo.txt" }
    En PowerShell trabajas con objetos ($_.Name) y no solo con texto, lo que te da muchísima más flexibilidad.