Skip to content

About

PSWriteHTML is PowerShell Module to generate beautiful HTML reports, pages, emails without any knowledge of HTML, CSS or JavaScript. To get started basics PowerShell knowledge is required.

Topics

Resources

Stars

1.0k stars

Watchers

40 watching

Forks

Repository files navigation

PSWriteHTML - PowerShell Module

Discord

PSWriteHTML is PowerShell Module to generate beautiful HTML reports, pages, emails without any knowledge of HTML, CSS or JavaScript. To get started basics PowerShell knowledge is required. PSWriteHTML is a fork of ReportHTML module. I've forked ReportHTML due to it being outdated and not maintained. I also wanted to address some problems it had and add more features. As it stands PSWriteHTML is a complete rewrite. Make sure to read blog posts provided to understand the concepts and how you can use PSWriteHTML for your own needs.

How to install

While you can take sources and use it from here, PSWriteHTML actually is composed of multiple other of my modules. To get it up and running you will need *PSSharedGoods, and PSSharedGoods will need Connectimo and PSWriteColor. While Connectimo or PSWriteColor aren't needed for PSWriteHTML, PSSharedGoods uses them for some of the commands and it will fail without them. You can get all that from sources but if you just want to use my modules you should use the Install-Module command. It's available in PowerShell 5.1. As an added bonus when I publish modules to PowerShellGallery I remove any junk, minimize modules to a single file which makes them faster to load and use. I really encourage you to use the module from PowerShellGallery and treat GitHub as a highly development version. Since version 0.0.61 when PSWriteHTML is published every dependency is baked into PSWriteHTML. That means you don't need to download any other modules unless you want to contribute to this project.

Installing

Install-Module -Name PSWriteHTML -AllowClobber -Force

Force and AllowClobber aren't necessary but they do skip errors in case some appear.

Updating

Update-Module -Name PSWriteHTML

That's it. Whenever there's a new version you simply run the command and you can enjoy it. Remember, that you may need to close, reopen the PowerShell session if you have already used the module before updating it.

The important thing is if something works for you on production, keep using it till you test the new version on a test computer. I do changes that may not be big, but big enough that auto-update will break your code. For example, small rename to a parameter and your code stops working! Be responsible!

Dependencies: PSSharedGoods, PSWriteColor and Connectimo are only used during development. When published to PSGallery / Releases it's a merged release without any dependencies.

Articles worth reading to understand use cases

Table exports and portable Markdown

Use -ExportScope Filtered to export every matching row even when some rows are selected. All exports the complete table, Selected exports selected matching rows, and the default Automatic retains DataTables' selection and filtering behavior.

New-HTML -FilePath './report.html' {
    New-HTMLTable -DataTable $Rows -Filtering -FilteringLocation Top -ExportScope Filtered {
        New-TableButtonExcel -TextColumns 'AccountNumber', 'EmployeeId'
        New-TableButtonCSV
    }
}

Excel exports keep numeric values with more than 15 significant digits as text. -TextColumns also preserves shorter identifiers as text while other numeric columns remain available for calculations. CSV exports quote fields and prefix formula-like text with an apostrophe; ordinary negative numbers retain their values. Use New-TableButtonCSV -RawData when a programmatic consumer needs the original formula-like text.

Each New-TableRowGrouping adds a grouping level in declaration order. Inline table conditions can use helper properties excluded from the displayed table with -ExcludeProperty. New-TableHeader -TitleAlignment center -NamesAlignment right sets merged-title and column-name alignment independently. -SearchPaneColumns limits enabled search panes to named columns.

New-HTMLMarkdown -FilePath './notes/readme.md' embeds relative local images from the Markdown source directory so the HTML can be moved to another folder. -ImageBase supplies a directory for content provided directly, and -EmbedImages $false retains relative references. Embedding stays within the specified source directory and skips symbolic links.

For smaller reports, select only the buttons needed with -Buttons csvHtml5, or use -HideButtons. Offline reports embed the assets required by those capabilities.

Changelog

PSWriteHTML undergoes changes that hopefully will make it more versalite, consistent and better. Please make sure to read changes before updating, as we're undergoing some breaking changes from time to time. Full changelog can be found here.

Advantages over ReportHTML

  • complete rewrite
  • faster report building (from 20+ seconds to 0-2 seconds)
  • updated libraries
  • bunch of different, new features
  • easier building HTML

Credits

Matthew Quickenden (@lucidqdreams) - author of ReportHTML - without him this wouldn't be possible.

Projects using PSWriteHTML (to give you ideas of what you can do)

  • Statusimo is a PowerShell module that is able to generate a Status Page entirely from PowerShell.
  • Dashimo is a PowerShell module that makes generating Dashboards, nice looking HTML, a breeze.
  • Emailimo is a PowerShell module that makes writing nice looking HTML emails, easy!
  • Out-HTMLView is a PowerShell cross-platform command alternative to Out-GridView

Out-HTMLView

For colors, you can visit this online page.

3rd Party Libraries

PSWriteHTML uses some 3rd party libraries to deliver its functionality. It requires those and without them - this project would have a basic functionality. There are two ways to use it

  • With links to CSS/JS which makes code cleaner and easy to see what is happening
  • With code inline in HTML which makes HTML much bigger (default, but makes PSWriteHTML usage offline possible)

Below you can find 3rd party libraries being used.

About

PSWriteHTML is PowerShell Module to generate beautiful HTML reports, pages, emails without any knowledge of HTML, CSS or JavaScript. To get started basics PowerShell knowledge is required.

Topics

Resources

Stars

1.0k stars

Watchers

40 watching

Forks

Releases

Sponsor this project

Used by

Contributors

Languages