Skip to content
ConsoleMonster

Coming from another tool

Find familiar APIs, compare runnable examples, and check the behavior that changes when moving to ConsoleMonster.

Choose the tool you use today. Each guide maps familiar commands to ConsoleMonster, shows equivalent operations on sample admin data, and calls out features that need a different approach. You can move one output or interaction at a time; none of these guides requires changing your data collection code.

Coming fromStart hereMain change
Spectre.Console in C#Rendering, prompts and live outputCompose widgets and update live handles.
PwshSpectreConsolePowerShell command mappingsUse Show for display, New for definitions and Read for answers; also run on Windows PowerShell 5.1.
Out-GridView, GraphicalTools or ConsoleGuiToolsGrids and object explorationKeep selection in the terminal and pass ordinary objects onward.
Show-CommandForms and command previewsDefine the questions explicitly; decide separately whether to execute.
System.CommandLine.RenderingC# rendering migrationReplace the retired rendering package while retaining your command-line parser.

The Microsoft guides distinguish Windows-only commands from deprecated packages and an archived repository. Each includes primary sources and a verification date. Spectre.Console and PwshSpectreConsole are separate, active projects; these guides make no claim that either has stopped development.

Try the output first

This small inventory report uses the same object rows as the PowerShell comparisons. The output is rendered from the complete program below, in the site's normal capture pipeline.

Install-Module ConsoleMonster -Scope CurrentUser
PowerShellreport.ps1
$servers = @(
    [pscustomobject] @{ Name = 'FS01'; Site = 'Warsaw'; Pending = 4; Status = 'Pass' }
    [pscustomobject] @{ Name = 'SQL01'; Site = 'Dublin'; Pending = 12; Status = 'Warn' }
    [pscustomobject] @{ Name = 'WEB01'; Site = 'Berlin'; Pending = 0; Status = 'Pass' }
)
$servers | Show-ConsoleTable -Property Name, Site, Pending, Status -Title 'Patch inventory'
Full program
Import-Module ConsoleMonster

$servers = @(
    [pscustomobject] @{ Name = 'FS01'; Site = 'Warsaw'; Pending = 4; Status = 'Pass' }
    [pscustomobject] @{ Name = 'SQL01'; Site = 'Dublin'; Pending = 12; Status = 'Warn' }
    [pscustomobject] @{ Name = 'WEB01'; Site = 'Berlin'; Pending = 0; Status = 'Pass' }
)
$servers | Show-ConsoleTable -Property Name, Site, Pending, Status -Title 'Patch inventory'

Run: ./report.ps1

Terminal
dotnet new console -n InventoryReport
cd InventoryReport
dotnet add package ConsoleMonster
C#Program.cs
var servers = new[] {
    new { Name = "FS01", Site = "Warsaw", Pending = 4, Status = "Pass" },
    new { Name = "SQL01", Site = "Dublin", Pending = 12, Status = "Warn" },
    new { Name = "WEB01", Site = "Berlin", Pending = 0, Status = "Pass" }
};
Terminal.Write(Table.For(servers)
    .Column(s => s.Name)
    .Column(s => s.Site)
    .Column(s => s.Pending)
    .Column(s => s.Status, column => column.WithPresenter(CellPresenters.StatusWord))
    .WithTitle("Patch inventory"));
Full program
using ConsoleMonster;
using ConsoleMonster.Presenters;
using ConsoleMonster.Widgets;

var servers = new[] {
    new { Name = "FS01", Site = "Warsaw", Pending = 4, Status = "Pass" },
    new { Name = "SQL01", Site = "Dublin", Pending = 12, Status = "Warn" },
    new { Name = "WEB01", Site = "Berlin", Pending = 0, Status = "Pass" }
};
Terminal.Write(Table.For(servers)
    .Column(s => s.Name)
    .Column(s => s.Site)
    .Column(s => s.Pending)
    .Column(s => s.Status, column => column.WithPresenter(CellPresenters.StatusWord))
    .WithTitle("Patch inventory"));

Run: dotnet run

Patch inventory 100 columns24-bitFull

Next

Install ConsoleMonster, explore the widget gallery, or compare native Format-Table and Write-Color.

Edit this page on GitHub