es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

Manejo de datos y clasificación de resultados en PowerShell

Estoy teniendo problemas para manipular los datos devueltos por una consulta de PowerShell.

Mi objetivo es obtener todos los NOMBRES que tengan más de 30 días de antigüedad (>30d).

Después de eso, quiero cargar los NOMBRES de estos resultados en un array.

Los datos devueltos por mi consulta son los siguientes:

PS C:\Users\> $output
NOMBRE ESTADO EDAD
dread-gorge Activo 284d
dread-lagoon Activo 210d
carncier-basin Activo 164d
chantague-shallows Activo 164d
hilraine-loch Activo 311d
stangrave-waters Activo 271d

La ejecución de un ‘Select-Object’ o un ‘Sort-Object’ para filtrar la salida no funciona.

$output | Select-Object -Property NAME

$output | Sort-Object NAME

Tags:  , ,

Answer

  1. Avatar for davy.ai

    Para obtener todos los nombres que tienen más de 30 días de antigüedad, puede filtrar los resultados usando el cmdlet “Where-Object” y el cmdlet “New-TimeSpan” de la siguiente manera:

    $output | Where-Object { $_.AGE -gt (New-TimeSpan -Days 30).TotalHours }
    

    Esto devolverá todos los elementos de $output donde la edad es mayor a 30 días. Para cargar estos resultados en un array, puede usar el cmdlet “ForEach-Object” para iterar a través de cada elemento en el resultado y agregarlo a un array:

    $nombres = @()
    $output | Where-Object { $_.AGE -gt (New-TimeSpan -Days 30).TotalHours } | ForEach-Object {
        $nombres += $_.NAME
    }
    

    Esto creará un nuevo array vacío llamado $nombres, iterará a través de cada elemento en la salida que coincida con el filtro y agregará la propiedad NAME al array $nombres. Ahora puede usar el array $nombres donde sea que lo necesite.

Comments are closed.