¿Qué significa $_ en PowerShell?

PowerShell es un lenguaje de script y una herramienta de automatización de tareas de Microsoft. Es utilizado por administradores de sistemas y desarrolladores para automatizar tareas diarias de mantenimiento y configuración. Uno de los conceptos útiles en PowerShell es la variable $_. En este artículo, explicaremos lo que significa $_ en PowerShell y cómo se utiliza.
¿Qué es $_ en PowerShell?
En PowerShell, la variable $_ es la variable implícita de los objetos en el pipeline. Cuando se ejecuta un comando en PowerShell y los resultados se envían a través del pipeline, $_ representa el objeto actual en el pipeline. Por ejemplo, si ejecutamos el siguiente comando:
Get-ChildItem | Where-Object { $_.Name -like "*.txt" }
El comando se ejecuta en todos los archivos y carpetas del directorio actual, y el pipeline filtra cualquier objeto con una extensión de archivo .txt. En este contexto, $_ representa el archivo o carpeta actual que está siendo evaluado.
¿Cómo se utiliza $_ en PowerShell?
$_ se utiliza en combinación con otros comandos y operadores para procesar objetos en el pipeline. Algunos de los comandos comunes que utilizan $_ incluyen Where-Object, ForEach-Object y Select-Object. Por ejemplo:
Get-Service | Where-Object { $_.Status -eq "Stopped" }
Este comando obtiene todos los servicios del sistema y filtra solo aquellos que tienen un estado de "Detenido". En este caso, $_ representa el servicio actual que está siendo evaluado.
Otro ejemplo:
Get-Process | Sort-Object CPU -Descending | Select-Object -First 5 | ForEach-Object { Write-Host "ID: $($_.Id) CPU: $($_.CPU)%" }
Este comando obtiene todos los procesos en ejecución, los ordena por uso de CPU descendente y devuelve los primeros 5. Luego, cada proceso se pasa al cmdlet ForEach-Object, que escribe en la pantalla el ID del proceso y el porcentaje de uso de CPU.
Ejemplos de uso común de $_ en PowerShell
- Get-ChildItem | Where-Object { $_.Name -like "*.txt" } -> Obtener todos los archivos txt en el directorio actual.
- Get-Process | Where-Object { $_.WorkingSet -gt 1GB } -> Obtener todos los procesos que utilizan más de 1 GB de memoria.
- Get-ChildItem -recurse | Where-Object { $_.Length -gt 50MB } | Sort-Object Length -Descending -> Obtener todos los archivos mayores de 50 MB en el directorio actual y sus subdirectorios, ordenados por tamaño.
Conclusión
La variable $_ es un concepto importante en PowerShell y es útil para procesar objetos en el pipeline. Es utilizada por muchos cmdlets comunes y es una herramienta poderosa para la automatización de tareas. Con un poco de práctica, $_ puede ser una herramienta eficaz para simplificar y acelerar la administración del sistema.
Preguntas frecuentes
¿Puedo utilizar $_ con otros lenguajes de scripting?
No, $_ es una variable específica de PowerShell y no se aplica a otros lenguajes de script.
¿Cuál es la diferencia entre $_ y $?
$ es un símbolo de dólar utilizado para hacer referencia a una variable en PowerShell. $_ es una variable implícita en el pipeline y representa el objeto actual.
¿Puedo cambiar el nombre de la variable $_?
No, no puedes cambiar el nombre de la variable $_ en PowerShell. Es una variable implícita y su nombre no puede ser modificado.
¿Cómo puedo depurar problemas con $_ en mi script?
Puedes utilizar el cmdlet Write-Debug para ver el valor de $_ en diferentes partes de tu script. También puedes utilizar el cmdlet Get-Variable para inspeccionar el valor de $_ en cualquier punto de tu script.
[nekopost slugs="establecer-el-entorno-variable-powershell,proceso-de-matar-usando-powershell,filtro-powershell,use-powershell-para-obtener-el-nombre-de-la-computadora,multiples-condiciones-powershell-donde-objeto,ejecutar-wget-powershell,no-igual-de-operador-powershell,interpolacion-de-cadena-de-powershell,archivo-descomprimido-usando-powershell"]

Deja una respuesta