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
  1. Scripting
  2. Powershell

Tuberías (Pipes)

AnteriorVariablesSiguienteOperaciones

Última actualización hace 5 meses

En este nuevo artículo, estaremos hablando de las Tuberías (Pipes) en PowerShell. Las tuberías o también llamadas pipes, son un mecanismo poderoso para encadenar cmdlets y permite que la salida de un comando se utilice como la entrda de otro cmdlet. Esto permite gran flexibilidad y modularidad en la manipulación de datos.

En PowerShell, la tubería se representa con el símbolo | (una barra vertical). Su función es tomar la salida de un cmdlet y pasarla directamente como entrada de otro cmdlet, permitiendo un procesamiento secuencial de datos.

PowerShell no pasa texto plano por la tubería, sino objetos que pueden ser manipulados de manera más estructurada. Por ejemplo, el cmdlet Get-Process devuelve una lista de objetos Process, que contienen varias propiedades, como son Name, ID, CPU, entre otras.

A su vez, las tuberías permiten realizar selección y filtrado de datos. Cmdlets como Select-Object y Where-Object son comúnmente usados en tuberías para filtrar o seleccionar propiedades específicas de los objetos que se están pasando a través de la tubería.

Ejemplo:

Al momento de utilizar las tuberías en PowerShell debemos tener algunas consideraciones imporantes.

En primer lugar, como ya mencionamos anteriormente las tuberías pasan objetos entre los cmdlets, no texto plano. Esto quiere decir que podemos usar objetos en lugar de solo manipular cadenas de texto.

En cuanto al simbolo $_, representa el objeto actual en el flujo de la tubería. Se utiliza dentro de los Cmdlets como ForEach-Object y Where-Object para acceder a las propiedades de los objetos en la tubería.

Además, podemos destacar la eficiencia de las tuberías. PowerShell permite lo que se llama el "procesamiento perezoso" (lazy evaluation) a través de las tuberías. Esto significa que los cmdlets de la tubería no procesan todos los objetos a la vez, sino que se procesan a medida que son necesarios. Esto mejora el rendimiento en el manejo de grandes volúmenes de datos.

Anteriormente dijimos que PowerShell maneja objetos de forma predeterminada, pero también podemos utilizar las tuberías con cmdlets que generan texto, como es el caso de Echo o Write-Output. Esto nos puede servir en caso de querer realizar operaciones de texto.

1..10 | Where-Object { $_ % 2 -eq 0 }

1..10 genera una secuencia de números del 1 al 10, lo que en PowerShell se utiliza para crear un rango. A continuación, mediante Where-Object { $_ % 2 -eq 0 } filtramos esta secuencia para obtener solo los números pares (aquellos divisibles por 2 sin dejar residuo). Es importante recordar que la variable $_ hace referencia al objeto actual en el flujo de la tubería. La expresión $_ % 2 -eq 0 verifica si el número actual ($_) es divisible por 2. Si la condición se cumple, el número se pasa a la siguiente etapa de la tubería.

El cmdlet Where-Object se utiliza para filtrar objetos basados en condiciones específicas. Se emplea dentro de un pipeline para seleccionar solo los elementos que cumplen un criterio determinado.

La sintaxis básica es la siguiente:

Where-Object { condición }

Ejemplo:

1..10 | Where-Object { $_ -gt 5 }
Get-ChildItem files | Where-Object { $_.Extension -eq ".txt" }

Espero que los conceptos hayan quedado claros. Si aún persisten dudas después de llegar a este punto, te sugiero considerar la posibilidad de releer el artículo para reforzar tu comprensión.

Happy Hacking!


Referencias

about_Pipelines