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

如何将CSV/对象数组转为以第一列为属性名的PSObject?

解决方法:将CSV转换结果的第一列作为PSObject属性名

核心思路

先通过哈希表收集键值对(第一列值为属性名,第二列值为对应属性值),再将哈希表转换为PSCustomObject,这种方式比直接给对象动态添加属性更稳定可靠。

具体实现代码

情况1:已知第一列表头为attribute、第二列为value

假设你通过ConvertFrom-CSV得到的结果存放在$sshCsvOutput变量中:

# 初始化空哈希表存储键值对
$propertyMap = @{}

# 遍历CSV转换后的数组,填充哈希表
foreach ($entry in $sshCsvOutput) {
    $propertyMap[$entry.attribute] = $entry.value
}

# 将哈希表转换为目标PSObject
$finalObject = [PSCustomObject]$propertyMap

情况2:表头完全不固定(第一、第二列名称未知)

如果CSV的表头是动态变化的,直接通过属性索引定位列值:

$propertyMap = @{}

foreach ($entry in $sshCsvOutput) {
    # 取第一列的值作为属性名
    $propName = $entry.PSObject.Properties[0].Value
    # 取第二列的值作为属性值
    $propValue = $entry.PSObject.Properties[1].Value
    $propertyMap[$propName] = $propValue
}

$finalObject = [PSCustomObject]$propertyMap

验证结果

执行代码后,输出$finalObject即可看到预期结构:

PS C:\> $finalObject

hostname version os
-------- ------- --
server01 1.2.3   Linux

内容的提问来源于stack exchange,提问作者Abc

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.14 17:52:02