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

如何将Powershell输出的PSCustomObject对象转换为Markdown表格

解决方案

修复后的转换函数

下面的函数兼容你的使用场景,解决了原有函数流式处理导致的表头错位、格式不标准、空值兼容差的问题:

function ConvertTo-MarkDownTable {
    [CmdletBinding()]
    param (
        [Parameter(Mandatory = $true, ValueFromPipeline = $true)]
        [PSObject[]]$InputObject
    )
    begin {
        $allObjects = [System.Collections.Generic.List[PSObject]]::new()
    }
    process {
        $allObjects.AddRange($InputObject)
    }
    end {
        if ($allObjects.Count -eq 0) { return }
        # 取首个对象的属性作为统一表头,保证列顺序固定
        $headerNames = $allObjects[0].PSObject.Properties.Name
        # 输出标准Markdown表头
        "| $($headerNames -join ' | ') |"
        # 输出表头分隔行
        "| $($headerNames.ForEach({ '-' * $_.Length }) -join ' | ') |"
        # 逐行输出内容,空值替换为空字符串避免列错位
        foreach ($obj in $allObjects) {
            $rowValues = $headerNames | ForEach-Object { $obj.$_ ?? [string]::Empty }
            "| $($rowValues -join ' | ') |"
        }
    }
}

调用方法

直接在你原有代码的输出端用管道调用该函数即可,示例如下:

$xmlFile = 'C:\Users\kraer\Desktop\bom.xml'
[xml]$xml = Get-Content $xmlFile -Encoding UTF8

# 提取组件信息并直接转换为Markdown表格
$xml.bom.components.component | ForEach-Object {
    [PSCustomObject]@{
        Name    = $_.name
        Version = $_.version
        License = $_.licenses.license.id
    }
} | ConvertTo-MarkDownTable

# 如果需要导出到本地文件,可追加管道命令:| Out-File "组件清单.md" -Encoding UTF8

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.05 23:54:03