如何将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
相关产品推荐
相关产品推荐

