如何将 powershell 输出转换为 md(Markdown)文件?

问题描述 投票:0回答:2

我有以下代码:

$xml        = 'C:\Users\jonb\Desktop\bom.xml'
$ns = @{a = 'http://cyclonedx.org/schema/bom/1.2'} 
$xPath = '//a:component'
$components = Select-Xml -Xml $xml -XPath $xPath -Namespace $ns

foreach ($component in $components) {    
  $name = Select-Xml -Xml $component.Node -XPath './/a:name/text()'-Namespace $ns 
  $version = Select-Xml -Xml $component.Node -XPath './/a:version/text()'-Namespace $ns
  $lic_cond = Select-Xml -Xml $component.Node -XPath './/a:license/a:id/text()'-Namespace $ns

  $license = $(If ($lic_cond) {$lic_cond} Else {"NA"}) 

  $finalObject = [pscustomobject]@{
        'Name'          = $name
        'Version'       = $version
        'License'      = $license
    }
   Write-Output $finalObject
}

现在我想将 $finalObject 转换为 MarkDown 表。这里有什么可能性吗?

我看到有一个ConvertFrom-Markdown命令。然而,我没有用这个命令得到任何结果。

感谢您的帮助

powershell type-conversion markdown
2个回答
4
投票

只是一个快速而肮脏的:

function ConvertTo-MarkDownTable {
    [CmdletBinding()] param(
        [Parameter(Position = 0, ValueFromPipeLine = $True)] $InputObject
    )
    Begin { $Index = 0 }
    Process {
        if ( !$Index++ ) {
            '|' + ($_.PSObject.Properties.Name -Join '|') + '|'
            '|' + ($_.PSObject.Properties.ForEach({ '-' }) -Join '|') + '|'
        }
        '|' + ($_.PSObject.Properties.Value -Join '|') + '|'
    }
}

用途:

$finalObject = 
    [pscustomobject]@{ 'Name' = 'name1'; 'Version' = 'version1'; 'License' = 'license1' },
    [pscustomobject]@{ 'Name' = 'name2'; 'Version' = 'version2'; 'License' = 'license2' }

$finalObject |ConvertTo-MarkDownTable

产量:

|Name|Version|License|
|-|-|-|
|name1|version1|license1|
|name2|version2|license2|

在 StackOverflow 中转换:

姓名 版本 许可证
姓名1 版本1 许可证1
名称2 版本2 许可证2

0
投票

不确定您是否仍然需要它,但我最近为此创建了一个函数

© www.soinside.com 2019 - 2024. All rights reserved.