Búsqueda de sitios web

Matriz de host de escritura de PowerShell como tabla | Matriz de formato PowerShell como tabla


Recientemente, recibí el requisito de formatear una matriz como tabla en PowerShell. Utilicé Write-Host y Format-Table. En este tutorial de PowerShell, explicaré cómo mostrar los elementos de una matriz como una tabla usando el cmdlet Write-Host en PowerShell. Y también cómo usar Format-Table para formatear una matriz como tabla en PowerShell.

En PowerShell, puede mostrar una matriz como una tabla usando el cmdlet Write-Host combinado con un bucle u otros comandos de formato. Sin embargo, Write-Host por sí solo no formatea la salida como una tabla. En su lugar, normalmente usaría Format-Table para formatear la matriz y luego generaría cada línea con Write-Host. Por ejemplo: $matriz | Formato-Tabla | Fuera de cadena -Stream | Para cada objeto {Write-Host $_}. Esta secuencia de comandos formatea la matriz como una tabla, la convierte en una cadena y luego genera cada línea individualmente con Write-Host.

Matriz de host de escritura de PowerShell como tabla

Supongamos que tengo una matriz de PowerShell que tiene los siguientes elementos.

$myArray = "Item1", "Item2", "Item3"

Ahora veremos cómo utilizar el cmdlet Write-Host.

El cmdlet Write-Host en PowerShell se usa para mostrar la salida a la consola. Sin embargo, no es la mejor herramienta para crear tablas porque no tiene funciones integradas para formatear matrices como tablas. Cuando pasa una matriz a Write-Host, simplemente mostrará los elementos de la matriz separados por espacios:

Write-Host $myArray

Producción :

Item1 Item2 Item3

Formatear matriz como tabla en PowerShell

Si bien Write-Host es limitado, PowerShell tiene otros cmdlets que son más adecuados para mostrar matrices como tablas, como Format-Table o crear tablas personalizadas usando propiedades calculadas.

Usando formato-tabla

En PowerShell, puede formatear una matriz como una tabla usando el cmdlet Format-Table , que le permite mostrar los elementos de una matriz en un formato tabular estructurado.

Aquí hay un ejemplo.

$myArray = "Item1", "Item2", "Item3"
$myArray | Format-Table

Sin embargo, Format-Table se usa principalmente con matrices de objetos donde cada objeto representa una fila y las propiedades del objeto representan columnas.

A continuación se muestra un ejemplo básico de cómo utilizar Format-Table con una matriz de objetos:

# Define an array of custom objects
$people = @(
    @{Name='Alice'; Age=25; Job='Engineer'},
    @{Name='Bob'; Age=30; Job='Designer'},
    @{Name='Charlie'; Age=28; Job='Architect'}
)

# Convert the array to objects and format as a table
$people | ForEach-Object { New-Object PSObject -Property $_ } | Format-Table -AutoSize

En este ejemplo, creamos una matriz de tablas hash, cada una de las cuales representa a una persona con las propiedades Nombre, Edad y Trabajo. Luego canalizamos (|) la matriz a ForEach-Object, donde convertimos cada tabla hash en un PSObject. Finalmente, canalizamos los objetos a Format-Table con el parámetro -AutoSize , que ajusta el ancho de las columnas para que se ajusten al contenido.

El resultado aparecerá como una tabla:

Name     Age Job      
----     --- ---      
Alice    25  Engineer 
Bob      30  Designer 
Charlie  28  Architect

Ejecuté el script de PowerShell anterior usando código VS y puedes ver el resultado en la siguiente captura de pantalla:

Para un formato más avanzado, puede personalizar qué propiedades mostrar y en qué orden especificándolas en el cmdlet Format-Table . Por ejemplo, si solo desea mostrar las propiedades Nombre y Trabajo :

$people | ForEach-Object { New-Object PSObject -Property $_ } | Format-Table Name, Job -AutoSize

Esto generará:

Name     Job      
----     ---      
Alice    Engineer 
Bob      Designer 
Charlie  Architect

Cree una tabla personalizada para formatear la matriz como tabla en PowerShell

Si desea mostrar una matriz simple como una tabla con encabezados en PowerShell, es posible que necesite crear objetos personalizados y luego canalizarlos a Format-Table. He aquí un ejemplo:

$myArray = @(
    [PSCustomObject]@{Element="Item1"},
    [PSCustomObject]@{Element="Item2"},
    [PSCustomObject]@{Element="Item3"}
)

$myArray | Format-Table -Property Element

Producción :

Element
-------
Item1
Item2
Item3

Puede ver el resultado en la siguiente captura de pantalla:

Tabla de varias columnas de una matriz multidimensional en PowerShell

Para un escenario más avanzado, digamos que tiene una matriz multidimensional y desea mostrarla en una tabla con varias columnas. Puedes crear una tabla personalizada como esta:

$multiArray = @(
    @("Item1", "Description1", "Value1"),
    @("Item2", "Description2", "Value2"),
    @("Item3", "Description3", "Value3")
)

$customTable = $multiArray | ForEach-Object {
    [PSCustomObject]@{
        Item = $_[0]
        Description = $_[1]
        Value = $_[2]
    }
}

$customTable | Format-Table

Producción :

Item   Description   Value
----   -----------   -----
Item1  Description1  Value1
Item2  Description2  Value2
Item3  Description3  Value3

Conclusión

Si bien Write-Host se puede utilizar para mostrar elementos de matriz en PowerShell, no es la mejor herramienta para presentar datos en formato de tabla. PowerShell proporciona otros cmdlets como Format-Table y la capacidad de crear objetos personalizados que ofrecen mucha más flexibilidad y potencia para mostrar matrices como tablas.

En este tutorial de PowerShell, he explicado cómo formatear una matriz como tabla en PowerShell y PowerShell Write-Host Array como una tabla con ejemplos.

Artículos relacionados