Certificate expiry report
Review certificate renewal deadlines, named owners and practical next actions in one concise report.
- Static
- 100×30
- 27 lines
Show-ConsoleDemo certificate-expirydotnet new consolemonster --demo certificate-expiryReview daily backups, change windows and certificate expiries in a marked monthly calendar.
Demos Reports
Use it when daily operational outcomes need a date-aware overview.
╭─ Operations ──────────────────────────────────╮ ╭─ Upcoming · next 14 days ──────────────────────╮ │ October 2026 │ │ Fri 23 Oct │ │ │ │ ▴ Certificate expires │ │ Week Mo Tu We Th Fr Sa Su │ │ ○ Backup scheduled │ │ W40 01 02 03 04 │ │ │ │ W41 05 06 07 08 09 10 11 │ │ Mon 26 Oct │ │ W42 12 13 14 15 16 17 18 │ │ ○ Restore drill scheduled │ │ W43 19 20 21 22 23 24 25 │ │ │ │ W44 26 27 28 29 30 31 │ │ Wed 28 Oct │ │ ✗ Fail ▴ Warn ○ Pending ✓ Pass ◆ Info │ │ ◆ Change window │ │ Today 20 Oct │ │ │ │ │ │ Fri 30 Oct │ │ │ │ ○ Backup scheduled │ │ │ │ │ ╰───────────────────────────────────────────────╯ ╰────────────────────────────────────────────────╯
The whole program in one file, with its sample data at the top. It drew the recording above; both languages draw the same cells.
# Review fictional backups, change windows and certificate expiries.
Import-Module -Name ConsoleMonster
# Data: fixed civil dates and a fixed report clock.
$today = [datetime]'2026-10-20'
$days = @(
[pscustomobject] @{ Date = [datetime]'2026-10-02'; Status = 'Pass'; Label = 'Backup verified' }
[pscustomobject] @{ Date = [datetime]'2026-10-09'; Status = 'Pass'; Label = 'Backup verified' }
[pscustomobject] @{ Date = [datetime]'2026-10-16'; Status = 'Pass'; Label = 'Backup verified' }
[pscustomobject] @{ Date = [datetime]'2026-10-23'; Status = 'Warn'; Label = 'Certificate expires' }
[pscustomobject] @{ Date = [datetime]'2026-10-23'; Status = 'Pending'; Label = 'Backup scheduled' }
[pscustomobject] @{ Date = [datetime]'2026-10-28'; Status = 'Info'; Label = 'Change window' }
[pscustomobject] @{ Date = [datetime]'2026-10-14'; Status = 'Fail'; Label = 'Backup verification failed' }
[pscustomobject] @{ Date = [datetime]'2026-10-26'; Status = 'Pending'; Label = 'Restore drill scheduled' }
[pscustomobject] @{ Date = [datetime]'2026-10-30'; Status = 'Pending'; Label = 'Backup scheduled' }
)
# Behaviour: duplicate dates retain all labels and use the calendar precedence.
$calendar = $days | New-ConsoleCalendar -Year 2026 -Month 10 -FirstDayOfWeek Monday -Today $today
$upcoming = $days | Where-Object { $_.Date -ge $today -and $_.Date -le $today.AddDays(14) } |
Group-Object { $_.Date.Date } | Sort-Object { $_.Group[0].Date }
# Layout: a month overview beside the next two weeks from the same rows.
$report = New-ConsoleColumns -Content {
New-ConsolePanel -Title 'Operations' -Content { $calendar }
New-ConsolePanel -Title 'Upcoming · next 14 days' -Content {
New-ConsoleRows -Content {
foreach ($group in $upcoming) {
New-ConsoleText -Text $group.Group[0].Date.ToString('ddd dd MMM', [cultureinfo]'en-US')
New-ConsolePadding -Padding 2, 0, 0, 1 -Content {
New-ConsoleStatusList -Content {
foreach ($day in $group.Group) { New-ConsoleStatusItem -Key $day.Label -Label $day.Label -Status $day.Status }
}
}
}
}
}
}
$report | Show-Console
using ConsoleMonster;
using ConsoleMonster.Dates;
using ConsoleMonster.Styling;
using ConsoleMonster.Layout;
using ConsoleMonster.Widgets;
using Calendar = ConsoleMonster.Widgets.Calendar;
// Data: the same civil dates and fixed report clock as the PowerShell twin.
var today = new DateTime(2026, 10, 20);
var days = new[] {
new CalendarMark(new DateTime(2026, 10, 2), StatusKind.Pass, "Backup verified"),
new CalendarMark(new DateTime(2026, 10, 9), StatusKind.Pass, "Backup verified"),
new CalendarMark(new DateTime(2026, 10, 16), StatusKind.Pass, "Backup verified"),
new CalendarMark(new DateTime(2026, 10, 23), StatusKind.Warn, "Certificate expires"),
new CalendarMark(new DateTime(2026, 10, 23), StatusKind.Pending, "Backup scheduled"),
new CalendarMark(new DateTime(2026, 10, 28), StatusKind.Info, "Change window"),
new CalendarMark(new DateTime(2026, 10, 14), StatusKind.Fail, "Backup verification failed"),
new CalendarMark(new DateTime(2026, 10, 26), StatusKind.Pending, "Restore drill scheduled"),
new CalendarMark(new DateTime(2026, 10, 30), StatusKind.Pending, "Backup scheduled"),
};
// Behaviour: group dates while keeping each event's own status.
var calendar = new Calendar(2026, 10, days) { FirstDayOfWeek = DayOfWeek.Monday, Today = today };
var upcoming = days.Where(day => day.Date >= today && day.Date <= today.AddDays(14)).GroupBy(day => day.Date).OrderBy(group => group.Key);
// Layout: a month overview beside the next two weeks from the same rows.
var events = new Rows();
foreach (var group in upcoming) {
events.Add(TextBlock.Plain(group.Key.ToString("ddd dd MMM", System.Globalization.CultureInfo.GetCultureInfo("en-US"))));
var items = new StatusList();
foreach (var day in group) { items.Add(day.Label, day.Status); }
events.Add(new Padding(items, 2, 0, 0, 1));
}
Terminal.Write(new Columns(new Panel(calendar, "Operations"), new Panel(events, "Upcoming · next 14 days")));
Three steps in PowerShell, four in C#. Every command copies with one click.
Once. Windows PowerShell 5.1 or PowerShell 7 on Windows, macOS or Linux.
Install-Module ConsoleMonster -Scope CurrentUserDownload it, or copy it from above into operations-calendar.ps1.
From the folder you saved it in.
./operations-calendar.ps1A plain console app; .NET 8 or later.
dotnet new console -n Operationscalendar; cd OperationscalendarThe only package the program needs.
dotnet add package ConsoleMonsterDownload it, or copy the program from above.
dotnet runOr skip the copying. Every demo ships with the module and the project template.
Show-ConsoleDemo operations-calendarExport-ConsoleDemo operations-calendar -Path ./operations-calendar.ps1dotnet new install ConsoleMonster.Templatesdotnet new consolemonster --demo operations-calendar -n OperationscalendarStart with these, then read the rest of the file.
Bind dated backup or change records using Date, Status and Label.
Use -View Year for annual planning, or override the first day of the week.
Keep warning and failure meanings consistent with your backup and certificate reports.
Review certificate renewal deadlines, named owners and practical next actions in one concise report.
Show-ConsoleDemo certificate-expirydotnet new consolemonster --demo certificate-expiryShow storage pressure with threshold bars, a folder breakdown and a clear summary of remaining capacity.
Show-ConsoleDemo disk-usagedotnet new consolemonster --demo disk-usageCombine a query summary, wrapped DNS records, a delegation tree, mail checks and resolver latency.
Show-ConsoleDemo querydotnet new consolemonster --demo query