private/ConvertToMarkDownTable.ps1

function ConvertTo-MarkdownTable{
    [CmdletBinding()]
    param(
        [Parameter(Mandatory,ValueFromPipeline)][PSCustomObject]$InputObject
    )

    begin {
        $markdown = @()
        $first = $true
    }

    process {
        if($first){
            $markdown += $InputObject | Get-MarkdownHeadersTotal
            $first = $false
        }

        $markdown += $InputObject | Get-UsageBreakdownToMarkdownLine
    }

    end {
        return $markdown
    }
}
function Get-MarkdownHeadersTotal{
    [CmdletBinding()]
    param(
        [Parameter(Mandatory,ValueFromPipeline)][PSCustomObject]$InputObject

    )

    process {

        $l1 = ""
        $l2 = ""

        $InputObject.Keys | ForEach-Object{
            $l1 += "| $_ "
            $l2 += "| --- "
        }
        $l1 += "|"
        $l2 += "|"

        $l1 | Write-Output
        $l2 | Write-Output
    }
}

function Get-UsageBreakdownToMarkdownLine{
    [CmdletBinding()]
    [OutputType([string])]
    param(
        [Parameter(Mandatory,ValueFromPipeline)][PSCustomObject]$Entry
    )

    begin{
        $lines = @()
    }

    process{

        $line = ""

        $entry.Keys | ForEach-Object{
            $line += "| $($entry.$_.ToString()) "
        }
        $line += "|"

        $lines += $line
    }

    end{
        return $lines
    }
}