You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

PowerShell如何从含行列数组的对象创建PSCustomObject

问题描述

现有PowerShell对象$foo,包含Column和Row两个属性,结构如下:

$foo.Column
{Cost, UsageDate, Currency}

$foo.Row
{120, 20230301, USD, 150, 20230302, USD, 200, 20230303, USD ... }

需要生成PSCustomObject类型的$bar,使其通过Format-Table输出时呈现如下表格:

$bar | Format-Table

Cost     UsageDate     Currency
----     ---------     --------
120      20230301      USD
150      20230302      USD
200      20230303      USD
解决方法

核心逻辑是根据Column的元素数量,将Row数组拆分为等长子数组,再将每个子数组的元素与Column的键一一对应,生成自定义对象。

具体实现代码:

# 获取列数,确定每组数据的元素数量
$colCount = $foo.Column.Count

# 拆分Row数组为多个子数组,每个子数组对应一条数据
$rowChunks = for ($i = 0; $i -lt $foo.Row.Count; $i += $colCount) {
    $foo.Row[$i..($i + $colCount - 1)]
}

# 遍历子数组,创建PSCustomObject并收集到$bar中
$bar = $rowChunks | ForEach-Object {
    $propertyMap = [ordered]@{}
    for ($j = 0; $j -lt $colCount; $j++) {
        $propertyMap[$foo.Column[$j]] = $_[$j]
    }
    [PSCustomObject]$propertyMap
}

执行代码后,运行$bar | Format-Table即可得到目标表格效果。

内容的提问来源于stack exchange,提问作者Gill-Bates

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.29 12:37:42