Show-ConsoleMarkdown reads CommonMark with pipe tables and renders through ConsoleMonster's own widgets. Headings use accent rules, lists keep hanging indents, quotes get a vertical bar, and fenced code uses the registered syntax highlighter with its language label.
Level-one headings use a double rule and level-two headings use a single rule. Lower headings have no rule and keep their level markers, so the hierarchy remains visible without colour. Level three is bold; levels four through six are bold and muted.
Try it
Install-Module ConsoleMonster -Scope CurrentUser$content = @'
# Deployment notes
Read **the plan**, keep *rollback notes*, and verify each host.
This paragraph reflows to the terminal width.
## Before the rollout
1. Check the selected environment.
2. Inspect the results:
- web-01 is ready.
- web-02 needs another check.
> Keep the rollback plan close.
> Confirm the target before changing it.
| Host | Checks | Notes |
| :--- | ---: | :--- |
| web-01 | 12 | Health checks passed. |
| web-02 | 3 | Verify the maintenance window. |
```powershell
Get-Service | Select-Object Name, Status
```
Reference: [deployment guide](https://example.org/deploy).
'@
Show-ConsoleMarkdown -Content $content -NoPagerFull program
Import-Module ConsoleMonster
$content = @'
# Deployment notes
Read **the plan**, keep *rollback notes*, and verify each host.
This paragraph reflows to the terminal width.
## Before the rollout
1. Check the selected environment.
2. Inspect the results:
- web-01 is ready.
- web-02 needs another check.
> Keep the rollback plan close.
> Confirm the target before changing it.
| Host | Checks | Notes |
| :--- | ---: | :--- |
| web-01 | 12 | Health checks passed. |
| web-02 | 3 | Verify the maintenance window. |
```powershell
Get-Service | Select-Object Name, Status
```
Reference: [deployment guide](https://example.org/deploy).
'@
Show-ConsoleMarkdown -Content $content -NoPagerRun: ./markdown.ps1
dotnet new console -n MarkdownReader
cd MarkdownReader
dotnet add package ConsoleMonster.Markdownstring content = """
# Deployment notes
Read **the plan**, keep *rollback notes*, and verify each host.
This paragraph reflows to the terminal width.
## Before the rollout
1. Check the selected environment.
2. Inspect the results:
- web-01 is ready.
- web-02 needs another check.
> Keep the rollback plan close.
> Confirm the target before changing it.
| Host | Checks | Notes |
| :--- | ---: | :--- |
| web-01 | 12 | Health checks passed. |
| web-02 | 3 | Verify the maintenance window. |
```powershell
Get-Service | Select-Object Name, Status
```
Reference: [deployment guide](https://example.org/deploy).
""";
MarkdownConsole.Show(content);Full program
using ConsoleMonster.Markdown;
string content = """
# Deployment notes
Read **the plan**, keep *rollback notes*, and verify each host.
This paragraph reflows to the terminal width.
## Before the rollout
1. Check the selected environment.
2. Inspect the results:
- web-01 is ready.
- web-02 needs another check.
> Keep the rollback plan close.
> Confirm the target before changing it.
| Host | Checks | Notes |
| :--- | ---: | :--- |
| web-01 | 12 | Health checks passed. |
| web-02 | 3 | Verify the maintenance window. |
```powershell
Get-Service | Select-Object Name, Status
```
Reference: [deployment guide](https://example.org/deploy).
""";
MarkdownConsole.Show(content);Run: dotnet run
Deployment notes ════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════ Read the plan, keep rollback notes, and verify each host. This paragraph reflows to the terminal width. Before the rollout ──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────── 1. Check the selected environment. 2. Inspect the results: - web-01 is ready. - web-02 needs another check. │ Keep the rollback plan close. Confirm the target before changing it. ╭────────┬────────┬────────────────────────────────╮ │ Host │ Checks │ Notes │ ├────────┼────────┼────────────────────────────────┤ │ web-01 │ 12 │ Health checks passed. │ │ web-02 │ 3 │ Verify the maintenance window. │ ╰────────┴────────┴────────────────────────────────╯ ╭─ powershell ─────────────────────────────────────────────────────────────────────────────────────────────────────────╮ │ Get-Service | Select-Object Name, Status │ ╰──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────╯ Reference: deployment guide (https://example.org/deploy).
Deployment notes ════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════ Read the plan, keep rollback notes, and verify each host. This paragraph reflows to the terminal width. Before the rollout ──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────── 1. Check the selected environment. 2. Inspect the results: - web-01 is ready. - web-02 needs another check. │ Keep the rollback plan close. Confirm the target before changing it. ╭────────┬────────┬────────────────────────────────╮ │ Host │ Checks │ Notes │ ├────────┼────────┼────────────────────────────────┤ │ web-01 │ 12 │ Health checks passed. │ │ web-02 │ 3 │ Verify the maintenance window. │ ╰────────┴────────┴────────────────────────────────╯ ╭─ powershell ─────────────────────────────────────────────────────────────────────────────────────────────────────────╮ │ Get-Service | Select-Object Name, Status │ ╰──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────╯ Reference: deployment guide (https://example.org/deploy).
One document with headings, nested lists, a quote, a native table, highlighted PowerShell and a link. The C# example uses the optional Markdown add-on; the PowerShell module includes it.
Files and source text
Use Show-ConsoleMarkdown -Path .\README.md to read a file. Paths are literal, resolve from PowerShell's current FileSystem location, and support FileSystem drives. -Content takes source text; pipeline strings are joined before parsing, so reference links and multi-line blocks retain their meaning.
-Width sets the layout width. -NoPager prints the whole document, and -AsString returns the complete rendering as one plain string for assignment or saving. A downstream pipeline command receives plain lines.
Deployment notes ════════════════════════════════════════════════════════════ Read the plan, keep rollback notes, and verify each host. This paragraph reflows to the terminal width. Before the rollout ──────────────────────────────────────────────────────────── 1. Check the selected environment. 2. Inspect the results: - web-01 is ready. - web-02 needs another check. │ Keep the rollback plan close. Confirm the target before │ changing it. ╭────────┬────────┬────────────────────────────────╮ │ Host │ Checks │ Notes │ ├────────┼────────┼────────────────────────────────┤ │ web-01 │ 12 │ Health checks passed. │ │ web-02 │ 3 │ Verify the maintenance window. │ ╰────────┴────────┴────────────────────────────────╯ ╭─ powershell ─────────────────────────────────────────────╮ │ Get-Service | Select-Object Name, Status │ ╰──────────────────────────────────────────────────────────╯ Reference: deployment guide (https://example.org/deploy).
Deployment notes ════════════════════════════════════════════════════════════ Read the plan, keep rollback notes, and verify each host. This paragraph reflows to the terminal width. Before the rollout ──────────────────────────────────────────────────────────── 1. Check the selected environment. 2. Inspect the results: - web-01 is ready. - web-02 needs another check. │ Keep the rollback plan close. Confirm the target before │ changing it. ╭────────┬────────┬────────────────────────────────╮ │ Host │ Checks │ Notes │ ├────────┼────────┼────────────────────────────────┤ │ web-01 │ 12 │ Health checks passed. │ │ web-02 │ 3 │ Verify the maintenance window. │ ╰────────┴────────┴────────────────────────────────╯ ╭─ powershell ─────────────────────────────────────────────╮ │ Get-Service | Select-Object Name, Status │ ╰──────────────────────────────────────────────────────────╯ Reference: deployment guide (https://example.org/deploy).
Reading a long document
When a document is taller than a rich interactive screen, the shared pager opens automatically. Use the arrows to move, Space or Page Down to advance, Page Up to go back, Home or End to jump, and q or Escape to close. Its header shows the visible line range and total. Resizing reflows the document and keeps the viewport within its new bounds.
Piped, redirected, transcribed, job, remoting, CI and non-interactive output never opens the pager. The static path prints the complete document; use -AsString when capturing from scripts on either PowerShell runtime.
C# composition
Install the optional ConsoleMonster.Markdown package. MarkdownConsole.Show(content) writes with automatic interactive paging. MarkdownConsole.Parse(content) returns a MarkdownView that can be placed in a layout, written through Terminal.Write, exported, or passed to WidgetPager.TryShow with scripted input and screen capture options.
The parser lives in the add-on and uses OfficeIMO.Markdown. The ConsoleMonster core stays dependency-free. Links follow the terminal capability profile: OSC 8 when supported, a muted URL otherwise. Unsupported or unsafe link schemes remain visible as text. Raw HTML is literal, images become labelled links, and neither scripts nor remote content are executed or fetched.
Related
See PowerShell conventions, object exploration and text comparison.