d4redevil
  • whoami
  • Active Directory
    • Enumeración
    • PowerShell para gestionar Active Directory
    • PowerView & SharpView
    • Ataques a Kerberos
    • Ataque de contraseñas
    • SMB Relay
    • Token Impersonation
    • Golden Ticket
    • LLMNR Poisoning
    • Mimikatz
    • Grupos privilegiados
    • LAPS
  • Linux
    • Enumeración
    • Escalación de privilegios
    • Transferencia de Archivos
  • Windows
    • Enumeración
    • Escalación de privilegios
      • SeImporsonate
      • SeDebugPrivilege
      • SeTakeOwnershipPrivilege
      • Backup Operators
      • DnsAdmins
    • Transferencia de Archivos
  • Scripting
    • Powershell
      • Introducción
      • Cmdlet
      • Alias
      • Comentarios
      • Comandos utiles
      • Variables
      • Tuberías (Pipes)
      • Operaciones
      • Estructuras Condicionales
  • OWASP TOP 10 y Vulnerabilidades Web
    • Inyecciones SQL
      • ¿Qué son las Inyecciones SQL?
      • Laboratorio
      • Inyecciones SQL basada en Uniones
      • Inyecciones SQL basadas en booleanos
      • Inyecciones SQL basadas en tiempo
  • Writeups
    • Hack The Box
      • Linux
        • 🟢Easy
        • 🟡Medium
          • Zipping
        • 🔴Hard
        • ⚫Insane
      • Windows
        • 🟢Easy
          • Devel
          • Grandpa
          • Granny
          • Jerry
          • Optimum
          • Legacy
          • Active
          • Sauna
        • 🟡Medium
        • 🔴Hard
        • ⚫Insane
    • The Hackers Labs
      • Linux
        • 🟢Principiante
          • Papaya
          • Can You Hack Me?
        • 🟡Avanzado
          • Runners
          • El Candidato
          • El Cliente
        • 🔴Profesional
        • ⚫Experto
          • ⚫Thlcppt_v16
      • Windows
        • 🟢Principiante
          • Cocido Andaluz
          • Ensalá Papas
        • 🟡Avanzado
        • 🔴Profesional
          • BlackGold
        • ⚫Experto
    • Dockerlabs
      • 🔵Muy fácil
      • 🟡Fácil
      • 🟠Medio
        • Database
      • 🔴Difícil
    • VulnHub
      • Linux
        • 🟢Easy
        • 🟡Medium
        • 🔴Hard
      • Windows
        • 🟢Easy
        • 🟡Medium
        • 🔴Hard
    • HackMyVM
      • Linux
        • 🟢Easy
        • 🟡Medium
        • 🔴Hard
        • ⚫Insane
      • Windows
        • 🟢Easy
        • 🟡Medium
        • 🔴Hard
        • ⚫Insane
  • Servicios Comunes
    • TCP
    • UDP
    • FTP (21)
    • SMB (445)
    • MySQL (3306)
    • MSSQL (1433)
  • Cheatsheet
    • Reconocimiento
    • Enumeración
    • Enumeración Web
    • Enumeración de CMS
    • Fuerza Bruta
    • Pivoting
    • Msfvenom
    • Utilidades
    • Fuerza bruta
    • Transferencia de Archivos
  • Contenedores
    • Docker
Con tecnología de GitBook
En esta página
  • Estructura básica de un cmdlet
  • Verbo-Sustantivo
  • Valores devueltos
  • Ciclo de vida de un cmdlet
  • Referencias
  1. Scripting
  2. Powershell

Cmdlet

AnteriorIntroducciónSiguienteAlias

Última actualización hace 5 meses

En este primer artículo de la serie sobre PowerShell, hablaremos de los Cmdlets. Un cmdlet podemos definirlo como un comando ligero que realiza una tarea específica en el entorno de Powershell. Estos comandos están diseñados para ser simples, modulares y altamente reutilizables. A continuación, desglosamos la anatomía de un cmdlet para entender cómo se estructura y cómo funcionan.

Estructura básica de un cmdlet

La sintaxis básica de un cmdlet sigue el formato:

<Verbo-Sustantivo> [-Parámetros] [ValoresOpcionales]

Verbo-Sustantivo

El Verbo representa la acción que realizará el cmdlet. Powershell utiliza un conjunto estándar de verbos aprobados (por ejemplo, Get, Set, New, Remove) para garantizar consistencia.

Ejemplo: Get (obtener), Set (establecer), Remove (eliminar).

Por su parte, el Sustantivo describe el objeto sobre el que actúa el verbo.

Ejemplo: Process (procesos), Service (servicios), Item (elemento de un sistema de archivos).

Por ejemplo, un cmdlet completo sería el siguiente:

Get-Process

Este cmdlet obtiene información sobre los procesos en ejecución.

Parámetros

Los parámetros son opciones que proporcionan más detalles o modifican el comportamiento del cmdlet.

  • Obligatorios: Algunos cmdlets requieren ciertos parámetros para funcionar.

  • Opcionales: Otros parámetros son opcionales y ajustan los resultados o el alcance.

  • Alias: Algunos parámetros tienen alias (abreviaciones, los cuales veremos en el próximo artículo).

Ejemplo:

Get-Process -Name "notepad"

En este caso, -Name es un parámetro que especifica el nombre del proceso que queremos obtener.

Debemos tener en cuenta, que si no existe un proceso con el nombre notepad lanzará un error.

Valores devueltos

Un cmdlet generalmente devuelve un objeto o un conjunto de objetos como salida. Powershell trabaja con objetos, no con texto, lo que facilita la manipulación de datos en secuencias de comandos.

Ejemplo:

Get-Process | Select-Object Name, CPU
  • Get-Process: Devuelve todos los procesos en ejecución.

  • Select-Object: Filtra las propiedades Name y CPU de los objetos devueltos.

Ciclo de vida de un cmdlet

  1. Entrada: Los cmdlets reciben datos a tráves de parámetros o mediante un pipeline

  2. Procesamiento: Ejecutan la lógica definida (ejemplo: buscar, modificar, o eliminar datos).

  3. Salida: Devuelven objetos al pipeline, que pueden ser procesados por otros cmdlets.

Ejemplo con pipeline:

Get-Service | Where-Object {$_.Status -eq "Running"}
  • Get-Service: Lista los servicios

  • Where-Object: Filtra solo aquellos con estado "Running".

Referencias

Para profundizar en los conceptos, te recomiendo consultar las referencias de la documentación oficial, las cuales son altamente recomendables para un análisis más detallado.

What is a PowerShell command (cmdlet)?
PowerShell cmdlets
Approved Verbs for PowerShell Commands