Private/Convert-PSUMarkdownToHtml.ps1
function Convert-PSUMarkdownToHtml { <# .SYNOPSIS Converts a Markdown string to HTML using available tools. .DESCRIPTION This function attempts to convert a given Markdown string to HTML format. It first tries to use the built-in `ConvertFrom-Markdown` cmdlet (available in newer PowerShell versions). If that fails or is not available, it falls back to using the `Markdig` .NET library (downloaded from NuGet if not already available). .PARAMETER Markdown The raw Markdown content to convert into HTML. .OUTPUTS [string] .EXAMPLE $markdown = @" ## Hello World This is a *markdown* to **HTML** test. "@ $html = Convert-PSUMarkdownToHtml -Markdown $markdown .EXAMPLE Get-Content README.md -Raw | Convert-PSUMarkdownToHtml .NOTES Author : Lakshmanachari Panuganti Created : 2025-07-30 Dependencies: PowerShell 7+ for `ConvertFrom-Markdown`, or fallback to Markdig.dll NuGet: Downloads `Markdig` package from NuGet.org if fallback path is triggered. #> param ([string]$Markdown) # Try ConvertFrom-Markdown first if (Get-Command ConvertFrom-Markdown -ErrorAction SilentlyContinue) { try { return ($Markdown | ConvertFrom-Markdown).Html } catch { Write-Warning "ConvertFrom-Markdown failed. Falling back to Markdig..." } } # Fallback to Markdig.dll $markdigDll = "$env:TEMP\markdig\lib\netstandard2.0\Markdig.dll" if (-not (Test-Path $markdigDll)) { Write-Verbose "Downloading Markdig..." $nugetUrl = "https://www.nuget.org/api/v2/package/Markdig" $nupkgPath = "$env:TEMP\markdig.nupkg" $extractPath = "$env:TEMP\markdig" Invoke-WebRequest -Uri $nugetUrl -OutFile $nupkgPath -UseBasicParsing [System.IO.Compression.ZipFile]::ExtractToDirectory($nupkgPath, $extractPath) } Add-Type -Path $markdigDll -ErrorAction SilentlyContinue return [Markdig.Markdown]::ToHtml($Markdown) } |