首页 > 解决方案 > 在powershell中从原始数据构造一个表

问题描述

目前,我对 Powershell 感到沮丧,因为我花了 2 个工作日来为以下问题找出一个(很可能是超级简单的)解决方案,这让我感到很愚蠢:我想将两个数组 ( $HeaderCells, $DataCells) 转换为一个表和似乎没有任何效果。我尝试了 PSObjects、数组、哈希表、数据表……这是我的代码:

$Table = @()
$HeaderCells = @("Company","Country")
$DataCells = @("Test Inc.","Misc Corp.","USA","UK")

foreach ($HeaderCell in $HeaderCells)
{
    foreach ($DataCell in $DataCells)
    {
        $Table += New-Object -TypeName PSObject -Property @{$HeaderCell=$DataCell}
    }
}
$Table

我的输出是:

Company   
-------   
Test Inc. 
USA       
Misc Corp.
UK       

我想得到两列(公司和国家),但无论我尝试什么(即使是最嵌套的 for 循环,我总是最终会覆盖变量或只是得到错误。

我的实际用例实际上有点复杂(从 html 页面中提取表格),但我希望解决这部分问题能让我继续。

我想要的输出是将 HeaderCells 作为标题,将 DataCells 作为行,所以是这样的:

Company     Country
-------           --------
Test Inc.       USA 
Misc Corp.  UK

标签: powershell

解决方案


你也可以试试:

$DataCells = "Test Inc.","Misc Corp.","USA","UK"
$half = [math]::Floor($DataCells.Count / 2)

(0..($half - 1)) | ForEach-Object {
    [PsCustomObject]@{
        Company = $DataCells[$_]
        Country = $DataCells[$_ + $half]
    }
}

输出:

Company    Country
-------    -------
Test Inc.  USA    
Misc Corp. UK

推荐阅读