我有以下代码:
$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命令。然而,我没有用这个命令得到任何结果。
感谢您的帮助
只是一个快速而肮脏的:
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 |
不确定您是否仍然需要它,但我最近为此创建了一个函数。