当前位置:网站首页 > 更多 > 玩电脑 > 正文

[玩转系统] PowerShell 将主机数组写入表 | PowerShell 将数组格式化为表

作者:精品下载站 日期:2024-12-14 05:05:48 浏览:16 分类:玩电脑

PowerShell 将主机数组写入表 | PowerShell 将数组格式化为表


最近,我需要在 PowerShell 中将数组格式化为表。我使用了 Write-Host 和 Format-Table。在本 PowerShell 教程中,我将解释如何使用 PowerShell 中的 Write-Host cmdlet 将数组的元素显示为表格。并且,还介绍了如何在 PowerShell 中使用 Format-Table 将数组格式化为表。

在 PowerShell 中,您可以使用 Write-Host cmdlet 结合循环或其他格式命令将数组显示为表格。但是,Write-Host 本身并不将输出格式化为表格。相反,您通常会使用 Format-Table 来格式化数组,然后使用 Write-Host 输出每一行。例如: $array |格式表|输出字符串流 | ForEach-Object { 写入主机 $_ }。此命令序列将数组格式化为表格,将其转换为字符串,然后使用 Write-Host 单独输出每一行。

PowerShell 将主机数组写入表

假设我有一个包含以下元素的 PowerShell 数组。

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

现在,我们将了解如何使用 Write-Host cmdlet。

PowerShell 中的 Write-Host cmdlet 用于将输出显示到控制台。但是,它不是创建表的最佳工具,因为它没有将数组格式化为表的内置功能。当您将数组传递给 Write-Host 时,它只会显示以空格分隔的数组元素:

Write-Host $myArray

输出 :

Item1 Item2 Item3

在 PowerShell 中将数组格式化为表

虽然 Write-Host 受到限制,但 PowerShell 还有其他更适合将数组显示为表格的 cmdlet,例如 Format-Table 或使用计算属性创建自定义表格。

使用格式表

在 PowerShell 中,您可以使用 Format-Table cmdlet 将数组格式化为表格,这样您就可以以结构化的表格格式显示数组的元素。

这是一个例子。

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

但是,Format-Table 主要用于对象数组,其中每个对象代表一行,对象属性代表列。

以下是如何将 Format-Table 与对象数组结合使用的基本示例:

# 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

在此示例中,我们创建一个哈希表数组,每个哈希表代表一个具有 NameAgeJob 属性的人。然后,我们将数组通过管道传输 (|) 到 ForEach-Object,在其中将每个哈希表转换为 PSObject。最后,我们使用 -AutoSize 参数将对象传输到 Format-Table,该参数会调整列宽以适应内容。

输出将显示为表格:

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

我使用 VS code 执行了上述 PowerShell 脚本,您可以在下面的屏幕截图中看到输出:

[玩转系统] PowerShell 将主机数组写入表 | PowerShell 将数组格式化为表

对于更高级的格式设置,您可以通过在 Format-Table cmdlet 中指定来自定义要显示的属性以及显示顺序。例如,如果您只想显示 NameJob 属性:

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

这将输出:

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

创建自定义表以在 PowerShell 中将数组格式化为表

如果您想在 PowerShell 中将简单数组显示为带有标题的表格,您可能需要创建自定义对象,然后将它们通过管道传输到 Format-Table。这是一个例子:

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

$myArray | Format-Table -Property Element

输出 :

Element
-------
Item1
Item2
Item3

您可以在下面的屏幕截图中看到输出:

[玩转系统] PowerShell 将主机数组写入表 | PowerShell 将数组格式化为表

PowerShell 中多维数组的多列表

对于更高级的场景,假设您有一个多维数组并希望将其显示在具有多列的表格中。您可以像这样创建一个自定义表:

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

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

$customTable | Format-Table

输出 :

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

结论

虽然 Write-Host 可用于在 PowerShell 中显示数组元素,但它并不是以表格格式呈现数据的最佳工具。 PowerShell 提供其他 cmdlet(例如 Format-Table)以及创建自定义对象的能力,这些对象为将数组显示为表格提供了更大的灵活性和功能。

在本 PowerShell 教程中,我通过示例解释了如何在 PowerShell 中将数组格式化为表格PowerShell 将主机数组写入表格

您需要 登录账户 后才能发表评论

取消回复欢迎 发表评论:

关灯