{"id":4691,"date":"2009-01-11T15:15:18","date_gmt":"2009-01-11T15:15:18","guid":{"rendered":"https:\/\/blogs.msdn.microsoft.com\/powershell\/2009\/01\/11\/colorized-capture-of-console-screen-in-html-and-rtf\/"},"modified":"2019-02-18T13:12:54","modified_gmt":"2019-02-18T20:12:54","slug":"colorized-capture-of-console-screen-in-html-and-rtf","status":"publish","type":"post","link":"https:\/\/devblogs.microsoft.com\/powershell\/colorized-capture-of-console-screen-in-html-and-rtf\/","title":{"rendered":"Colorized capture of console screen in HTML and RTF."},"content":{"rendered":"<p>In the previous <a href=\"http:\/\/blogs.msdn.com\/powershell\/archive\/2009\/01\/10\/capture-console-screen.aspx\">post<\/a> we demonstrated how we can use console host API to capture screen buffer contents as text. But what if we want some colors. Would not it be nice to publish colorized copy of console in HTML or insert it as part of Microsoft Word document. For this to work we need to add some modifications to original script. Colors of each character are available as properties of System.Management.Automation.Host.BufferCell object:<\/p>\n<pre style=\"font-size: 10pt;margin: 0in 10pt;line-height: normal;font-family: consolas,courier new\"><span style=\"background: #012456;color: #eeedf0\">PS E:\\MyScripts&gt; $bufferWidth = $host.ui.rawui.BufferSize.Width                                                         <\/span><br \/><span style=\"background: #012456;color: #eeedf0\">PS E:\\MyScripts&gt; $bufferHeight = $host.ui.rawui.CursorPosition.Y                                                        <\/span><br \/><span style=\"background: #012456;color: #eeedf0\">PS E:\\MyScripts&gt; $rec = new-object System.Management.Automation.Host.Rectangle 0,0,($bufferWidth - 1),$bufferHeight     <\/span><br \/><span style=\"background: #012456;color: #eeedf0\">PS E:\\MyScripts&gt; $buffer = $host.ui.rawui.GetBufferContents($rec)                                                       <\/span><br \/><span style=\"background: #012456;color: #eeedf0\">PS E:\\MyScripts&gt; $buffer[1,1]                                                                                           <\/span><br \/><span style=\"background: #012456;color: #eeedf0\">                                                                                                                        <\/span><br \/><span style=\"background: #012456;color: #eeedf0\">                    Character               ForegroundColor               BackgroundColor                BufferCellType <\/span><br \/><span style=\"background: #012456;color: #eeedf0\">                    ---------               ---------------               ---------------                -------------- <\/span><br \/><span style=\"background: #012456;color: #eeedf0\">                            o                    DarkYellow                   DarkMagenta                      Complete <\/span><br \/><span style=\"background: #012456;color: #eeedf0\">                                                                                                                        <\/span><br \/><span style=\"background: #012456;color: #eeedf0\">                                                                                                                        <\/span><br \/><span style=\"background: #012456;color: #eeedf0\">PS E:\\MyScripts&gt; <\/span><span style=\"background: #012456;color: #eeedf0\">                                                                                                       <\/span><br \/><\/pre>\n<p>All we need to do is to iterate through the screen buffer array, keeping track of the cell colors and generate HTML spans or RTF blocks with varying color attributes as soon as they change.<\/p>\n<p>Why implementing both formats? While HTML is sufficient for Web applications, we will get bad results if we will try to use it in word processing publications. MS Word is much better at pasting and rendering RTF, rather than HTML. The e-mail editor in Microsoft Outlook also produce better results with RTF. By implementing console capture in both formats we will cover much bigger range of applications.<\/p>\n<p>Usage of the scripts is fairly easy. The following example demonstrates how to put both scripts to a quick test:<\/p>\n<pre style=\"font-size: 10pt;margin: 0in 10pt;line-height: normal;font-family: consolas,courier new\"><span style=\"background: #012456;color: #eeedf0\">Windows PowerShell V2 (Community Technology Preview - Features Subject to Change)                                       <\/span><br \/><span style=\"background: #012456;color: #eeedf0\">Copyright (C) 2008 Microsoft Corporation. All rights reserved.                                                          <\/span><br \/><span style=\"background: #012456;color: #eeedf0\">                                                                                                                        <\/span><br \/><span style=\"background: #012456;color: #eeedf0\">PS C:\\Users\\Vladimir&gt; cd E:\\MyScripts                                                                                   <\/span><br \/><span style=\"background: #012456;color: #eeedf0\">PS E:\\MyScripts&gt; $htmlFileName = &quot;$env:temp\\ConsoleBuffer.html&quot;                                                         <\/span><br \/><span style=\"background: #012456;color: #eeedf0\">PS E:\\MyScripts&gt; .\\Get-ConsoleAsHtml | out-file $htmlFileName -encoding UTF8                                            <\/span><br \/><span style=\"background: #012456;color: #eeedf0\">PS E:\\MyScripts&gt; $null = [System.Diagnostics.Process]::Start(&quot;$htmlFileName&quot;)                                           <\/span><br \/><span style=\"background: #012456;color: #eeedf0\">PS E:\\MyScripts&gt;                                                                                                        <\/span><br \/><span style=\"background: #012456;color: #eeedf0\">PS E:\\MyScripts&gt;                                                                                                        <\/span><br \/><span style=\"background: #012456;color: #eeedf0\">PS E:\\MyScripts&gt; $rtfFileName = &quot;$env:temp\\test.rtf&quot;                                                                    <\/span><br \/><span style=\"background: #012456;color: #eeedf0\">PS E:\\MyScripts&gt; .\\Get-ConsoleAsRTF | out-file $rtfFileName -encoding ascii                                             <\/span><br \/><span style=\"background: #012456;color: #eeedf0\">PS E:\\MyScripts&gt; $null = [System.Diagnostics.Process]::Start(&quot;$rtfFileName&quot;)                                            <\/span><br \/><span style=\"background: #012456;color: #eeedf0\">PS E:\\MyScripts&gt;                                                                                                        <\/span><br \/><\/pre>\n<p>Needless to say, the scripts can be further modified to include configurable parameters such as font name and size. The purpose here is to demonstrate the basic techniques for automated generation of simple HTML and RTF documents.<\/p>\n<p>Hope you will find it useful,\n  <br \/>Vladimir Averkin\n  <br \/>Windows PowerShell Team&#160; <\/p>\n<p \/>\n<p \/>\n<p style=\"font-size: 10pt;margin: 0in 10pt;font-family: lucida console\"><span style=\"color:#006400\">############################################################################################################<\/span>\n  <br \/><span style=\"color: #006400\"># Get-ConsoleAsHtml.ps1<\/span>\n  <br \/><span style=\"color: #006400\">#<\/span>\n  <br \/><span style=\"color: #006400\"># The script captures console screen buffer up to the current cursor position and returns it in HTML format.<\/span>\n  <br \/><span style=\"color: #006400\">#<\/span>\n  <br \/><span style=\"color: #006400\"># Returns: UTF8-encoded string.<\/span>\n  <br \/><span style=\"color: #006400\">#<\/span>\n  <br \/><span style=\"color: #006400\"># Example:<\/span>\n  <br \/><span style=\"color: #006400\">#<\/span>\n  <br \/><span style=\"color: #006400\"># $htmlFileName = &quot;$env:temp\\ConsoleBuffer.html&quot;<\/span>\n  <br \/><span style=\"color: #006400\"># .\\Get-ConsoleAsHtml | out-file $htmlFileName -encoding UTF8<\/span>\n  <br \/><span style=\"color: #006400\"># $null = [System.Diagnostics.Process]::Start(&quot;$htmlFileName&quot;)<\/span>\n  <br \/><span style=\"color: #006400\">#<\/span><\/p>\n<p><span style=\"color: #006400\"># Check the host name and exit if the host is not the Windows PowerShell console host.<\/span>\n  <br \/><span style=\"color: #00008b\">if<\/span><span style=\"color: #000000\">&#160;<\/span><span style=\"color: #000000\">(<\/span><span style=\"color: #ff4500\">$host<\/span><span style=\"color: #a9a9a9\">.<\/span><span style=\"color: #000000\">Name<\/span><span style=\"color: #000000\">&#160;<\/span><span style=\"color: #a9a9a9\">-ne<\/span><span style=\"color: #000000\">&#160;<\/span><span style=\"color: #8b0000\">&#8216;ConsoleHost&#8217;<\/span><span style=\"color: #000000\">)<\/span>\n  <br \/><span style=\"color: #000000\">{<\/span>\n  <br \/><span style=\"color: #000000\">&#160; <\/span><span style=\"color: #0000ff\">write-host<\/span><span style=\"color: #000000\">&#160;<\/span><span style=\"color: #000080\">-ForegroundColor<\/span><span style=\"color: #000000\">&#160;<\/span><span style=\"color: #8a2be2\">Red<\/span><span style=\"color: #000000\">&#160;<\/span><span style=\"color: #8b0000\">&quot;This script runs only in the console host. You cannot run this script in $($host.Name).&quot;<\/span>\n  <br \/><span style=\"color: #000000\">&#160; <\/span><span style=\"color: #00008b\">exit<\/span><span style=\"color: #000000\">&#160;<\/span><span style=\"color: #800080\">-1<\/span>\n  <br \/><span style=\"color: #000000\">}<\/span><\/p>\n<p><span style=\"color: #006400\"># The Windows PowerShell console host redefines DarkYellow and DarkMagenta colors and uses them as defaults.<\/span>\n  <br \/><span style=\"color: #006400\"># The redefined colors do not correspond to the color names used in HTML, so they need to be mapped to digital color codes.<\/span>\n  <br \/><span style=\"color: #006400\">#<\/span>\n  <br \/><span style=\"color: #00008b\">function<\/span><span style=\"color: #000000\">&#160;<\/span><span style=\"color: #8a2be2\">Normalize-HtmlColor<\/span><span style=\"color: #000000\">&#160;<\/span><span style=\"color: #000000\">(<\/span><span style=\"color: #ff4500\">$color<\/span><span style=\"color: #000000\">)<\/span>\n  <br \/><span style=\"color: #000000\">{<\/span>\n  <br \/><span style=\"color: #000000\">&#160; <\/span><span style=\"color: #00008b\">if<\/span><span style=\"color: #000000\">&#160;<\/span><span style=\"color: #000000\">(<\/span><span style=\"color: #ff4500\">$color<\/span><span style=\"color: #000000\">&#160;<\/span><span style=\"color: #a9a9a9\">-eq<\/span><span style=\"color: #000000\">&#160;<\/span><span style=\"color: #8b0000\">&quot;DarkYellow&quot;<\/span><span style=\"color: #000000\">)<\/span><span style=\"color: #000000\">&#160;<\/span><span style=\"color: #000000\">{<\/span><span style=\"color: #000000\">&#160;<\/span><span style=\"color: #ff4500\">$color<\/span><span style=\"color: #000000\">&#160;<\/span><span style=\"color: #a9a9a9\">=<\/span><span style=\"color: #000000\">&#160;<\/span><span style=\"color: #8b0000\">&quot;#eeedf0&quot;<\/span><span style=\"color: #000000\">&#160;<\/span><span style=\"color: #000000\">}<\/span>\n  <br \/><span style=\"color: #000000\">&#160; <\/span><span style=\"color: #00008b\">if<\/span><span style=\"color: #000000\">&#160;<\/span><span style=\"color: #000000\">(<\/span><span style=\"color: #ff4500\">$color<\/span><span style=\"color: #000000\">&#160;<\/span><span style=\"color: #a9a9a9\">-eq<\/span><span style=\"color: #000000\">&#160;<\/span><span style=\"color: #8b0000\">&quot;DarkMagenta&quot;<\/span><span style=\"color: #000000\">)<\/span><span style=\"color: #000000\">&#160;<\/span><span style=\"color: #000000\">{<\/span><span style=\"color: #000000\">&#160;<\/span><span style=\"color: #ff4500\">$color<\/span><span style=\"color: #000000\">&#160;<\/span><span style=\"color: #a9a9a9\">=<\/span><span style=\"color: #000000\">&#160;<\/span><span style=\"color: #8b0000\">&quot;#012456&quot;<\/span><span style=\"color: #000000\">&#160;<\/span><span style=\"color: #000000\">}<\/span>\n  <br \/><span style=\"color: #000000\">&#160; <\/span><span style=\"color: #00008b\">return<\/span><span style=\"color: #000000\">&#160;<\/span><span style=\"color: #ff4500\">$color<\/span>\n  <br \/><span style=\"color: #000000\">}<\/span><\/p>\n<p><span style=\"color: #006400\"># Create an HTML span from text using the named console colors.<\/span>\n  <br \/><span style=\"color: #006400\">#<\/span>\n  <br \/><span style=\"color: #00008b\">function<\/span><span style=\"color: #000000\">&#160;<\/span><span style=\"color: #8a2be2\">Make-HtmlSpan<\/span><span style=\"color: #000000\">&#160;<\/span><span style=\"color: #000000\">(<\/span><span style=\"color: #ff4500\">$text<\/span><span style=\"color: #a9a9a9\">,<\/span><span style=\"color: #000000\">&#160;<\/span><span style=\"color: #ff4500\">$forecolor<\/span><span style=\"color: #000000\">&#160;<\/span><span style=\"color: #a9a9a9\">=<\/span><span style=\"color: #000000\">&#160;<\/span><span style=\"color: #8b0000\">&quot;DarkYellow&quot;<\/span><span style=\"color: #a9a9a9\">,<\/span><span style=\"color: #000000\">&#160;<\/span><span style=\"color: #ff4500\">$backcolor<\/span><span style=\"color: #000000\">&#160;<\/span><span style=\"color: #a9a9a9\">=<\/span><span style=\"color: #000000\">&#160;<\/span><span style=\"color: #8b0000\">&quot;DarkMagenta&quot;<\/span><span style=\"color: #000000\">)<\/span>\n  <br \/><span style=\"color: #000000\">{<\/span>\n  <br \/><span style=\"color: #000000\">&#160; <\/span><span style=\"color: #ff4500\">$forecolor<\/span><span style=\"color: #000000\">&#160;<\/span><span style=\"color: #a9a9a9\">=<\/span><span style=\"color: #000000\">&#160;<\/span><span style=\"color: #0000ff\">Normalize-HtmlColor<\/span><span style=\"color: #000000\">&#160;<\/span><span style=\"color: #ff4500\">$forecolor<\/span>\n  <br \/><span style=\"color: #000000\">&#160; <\/span><span style=\"color: #ff4500\">$backcolor<\/span><span style=\"color: #000000\">&#160;<\/span><span style=\"color: #a9a9a9\">=<\/span><span style=\"color: #000000\">&#160;<\/span><span style=\"color: #0000ff\">Normalize-HtmlColor<\/span><span style=\"color: #000000\">&#160;<\/span><span style=\"color: #ff4500\">$backcolor<\/span><\/p>\n<p><span style=\"color: #000000\">&#160; <\/span><span style=\"color: #006400\"># You can also add font-weight:bold tag here if you want a bold font in output.<\/span>\n  <br \/><span style=\"color: #000000\">&#160; <\/span><span style=\"color: #00008b\">return<\/span><span style=\"color: #000000\">&#160;<\/span><span style=\"color: #8b0000\">&quot;&lt;span style=&#8217;font-family:Courier New;color:$forecolor;background:$backcolor&#8217;&gt;$text&lt;\/span&gt;&quot;<\/span>\n  <br \/><span style=\"color: #000000\">}<\/span><\/p>\n<p><span style=\"color: #006400\"># Generate an HTML span and append it to HTML string builder<\/span>\n  <br \/><span style=\"color: #006400\">#<\/span>\n  <br \/><span style=\"color: #00008b\">function<\/span><span style=\"color: #000000\">&#160;<\/span><span style=\"color: #8a2be2\">Append-HtmlSpan<\/span>\n  <br \/><span style=\"color: #000000\">{<\/span>\n  <br \/><span style=\"color: #000000\">&#160; <\/span><span style=\"color: #ff4500\">$spanText<\/span><span style=\"color: #000000\">&#160;<\/span><span style=\"color: #a9a9a9\">=<\/span><span style=\"color: #000000\">&#160;<\/span><span style=\"color: #ff4500\">$spanBuilder<\/span><span style=\"color: #a9a9a9\">.<\/span><span style=\"color: #000000\">ToString<\/span><span style=\"color: #000000\">(<\/span><span style=\"color: #000000\">)<\/span>\n  <br \/><span style=\"color: #000000\">&#160; <\/span><span style=\"color: #ff4500\">$spanHtml<\/span><span style=\"color: #000000\">&#160;<\/span><span style=\"color: #a9a9a9\">=<\/span><span style=\"color: #000000\">&#160;<\/span><span style=\"color: #0000ff\">Make-HtmlSpan<\/span><span style=\"color: #000000\">&#160;<\/span><span style=\"color: #ff4500\">$spanText<\/span><span style=\"color: #000000\">&#160;<\/span><span style=\"color: #ff4500\">$currentForegroundColor<\/span><span style=\"color: #000000\">&#160;<\/span><span style=\"color: #ff4500\">$currentBackgroundColor<\/span>\n  <br \/><span style=\"color: #000000\">&#160; <\/span><span style=\"color: #ff4500\">$null<\/span><span style=\"color: #000000\">&#160;<\/span><span style=\"color: #a9a9a9\">=<\/span><span style=\"color: #000000\">&#160;<\/span><span style=\"color: #ff4500\">$htmlBuilder<\/span><span style=\"color: #a9a9a9\">.<\/span><span style=\"color: #000000\">Append<\/span><span style=\"color: #000000\">(<\/span><span style=\"color: #ff4500\">$spanHtml<\/span><span style=\"color: #000000\">)<\/span>\n  <br \/><span style=\"color: #000000\">}<\/span><\/p>\n<p><span style=\"color: #006400\"># Append line break to HTML builder<\/span>\n  <br \/><span style=\"color: #006400\">#<\/span>\n  <br \/><span style=\"color: #00008b\">function<\/span><span style=\"color: #000000\">&#160;<\/span><span style=\"color: #8a2be2\">Append-HtmlBreak<\/span>\n  <br \/><span style=\"color: #000000\">{<\/span>\n  <br \/><span style=\"color: #000000\">&#160; <\/span><span style=\"color: #ff4500\">$null<\/span><span style=\"color: #000000\">&#160;<\/span><span style=\"color: #a9a9a9\">=<\/span><span style=\"color: #000000\">&#160;<\/span><span style=\"color: #ff4500\">$htmlBuilder<\/span><span style=\"color: #a9a9a9\">.<\/span><span style=\"color: #000000\">Append<\/span><span style=\"color: #000000\">(<\/span><span style=\"color: #8b0000\">&quot;&lt;br&gt;&quot;<\/span><span style=\"color: #000000\">)<\/span>\n  <br \/><span style=\"color: #000000\">}<\/span><\/p>\n<p><span style=\"color: #006400\"># Initialize the HTML string builder.<\/span>\n  <br \/><span style=\"color: #ff4500\">$htmlBuilder<\/span><span style=\"color: #000000\">&#160;<\/span><span style=\"color: #a9a9a9\">=<\/span><span style=\"color: #000000\">&#160;<\/span><span style=\"color: #0000ff\">new-object<\/span><span style=\"color: #000000\">&#160;<\/span><span style=\"color: #8a2be2\">system.text.stringbuilder<\/span>\n  <br \/><span style=\"color: #ff4500\">$null<\/span><span style=\"color: #000000\">&#160;<\/span><span style=\"color: #a9a9a9\">=<\/span><span style=\"color: #000000\">&#160;<\/span><span style=\"color: #ff4500\">$htmlBuilder<\/span><span style=\"color: #a9a9a9\">.<\/span><span style=\"color: #000000\">Append<\/span><span style=\"color: #000000\">(<\/span><span style=\"color: #8b0000\">&quot;&lt;pre style=&#8217;MARGIN: 0in 10pt 0in;line-height:normal&#8217;;font-size:10pt&gt;&quot;<\/span><span style=\"color: #000000\">)<\/span><\/p>\n<p><span style=\"color: #006400\"># Grab the console screen buffer contents using the Host console API.<\/span>\n  <br \/><span style=\"color: #ff4500\">$bufferWidth<\/span><span style=\"color: #000000\">&#160;<\/span><span style=\"color: #a9a9a9\">=<\/span><span style=\"color: #000000\">&#160;<\/span><span style=\"color: #ff4500\">$host<\/span><span style=\"color: #a9a9a9\">.<\/span><span style=\"color: #000000\">ui<\/span><span style=\"color: #a9a9a9\">.<\/span><span style=\"color: #000000\">rawui<\/span><span style=\"color: #a9a9a9\">.<\/span><span style=\"color: #000000\">BufferSize<\/span><span style=\"color: #a9a9a9\">.<\/span><span style=\"color: #000000\">Width<\/span>\n  <br \/><span style=\"color: #ff4500\">$bufferHeight<\/span><span style=\"color: #000000\">&#160;<\/span><span style=\"color: #a9a9a9\">=<\/span><span style=\"color: #000000\">&#160;<\/span><span style=\"color: #ff4500\">$host<\/span><span style=\"color: #a9a9a9\">.<\/span><span style=\"color: #000000\">ui<\/span><span style=\"color: #a9a9a9\">.<\/span><span style=\"color: #000000\">rawui<\/span><span style=\"color: #a9a9a9\">.<\/span><span style=\"color: #000000\">CursorPosition<\/span><span style=\"color: #a9a9a9\">.<\/span><span style=\"color: #000000\">Y<\/span>\n  <br \/><span style=\"color: #ff4500\">$rec<\/span><span style=\"color: #000000\">&#160;<\/span><span style=\"color: #a9a9a9\">=<\/span><span style=\"color: #000000\">&#160;<\/span><span style=\"color: #0000ff\">new-object<\/span><span style=\"color: #000000\">&#160;<\/span><span style=\"color: #8a2be2\">System.Management.Automation.Host.Rectangle<\/span><span style=\"color: #000000\">&#160;<\/span><span style=\"color: #800080\">0<\/span><span style=\"color: #a9a9a9\">,<\/span><span style=\"color: #800080\">0<\/span><span style=\"color: #a9a9a9\">,<\/span><span style=\"color: #000000\">(<\/span><span style=\"color: #ff4500\">$bufferWidth<\/span><span style=\"color: #000000\">&#160;<\/span><span style=\"color: #a9a9a9\">&#8211;<\/span><span style=\"color: #000000\">&#160;<\/span><span style=\"color: #800080\">1<\/span><span style=\"color: #000000\">)<\/span><span style=\"color: #a9a9a9\">,<\/span><span style=\"color: #ff4500\">$bufferHeight<\/span>\n  <br \/><span style=\"color: #ff4500\">$buffer<\/span><span style=\"color: #000000\">&#160;<\/span><span style=\"color: #a9a9a9\">=<\/span><span style=\"color: #000000\">&#160;<\/span><span style=\"color: #ff4500\">$host<\/span><span style=\"color: #a9a9a9\">.<\/span><span style=\"color: #000000\">ui<\/span><span style=\"color: #a9a9a9\">.<\/span><span style=\"color: #000000\">rawui<\/span><span style=\"color: #a9a9a9\">.<\/span><span style=\"color: #000000\">GetBufferContents<\/span><span style=\"color: #000000\">(<\/span><span style=\"color: #ff4500\">$rec<\/span><span style=\"color: #000000\">)<\/span><\/p>\n<p><span style=\"color: #006400\"># Iterate through the lines in the console buffer.<\/span>\n  <br \/><span style=\"color: #00008b\">for<\/span><span style=\"color: #000000\">(<\/span><span style=\"color: #ff4500\">$i<\/span><span style=\"color: #000000\">&#160;<\/span><span style=\"color: #a9a9a9\">=<\/span><span style=\"color: #000000\">&#160;<\/span><span style=\"color: #800080\">0<\/span><span style=\"color: #000000\">;<\/span><span style=\"color: #000000\">&#160;<\/span><span style=\"color: #ff4500\">$i<\/span><span style=\"color: #000000\">&#160;<\/span><span style=\"color: #a9a9a9\">-lt<\/span><span style=\"color: #000000\">&#160;<\/span><span style=\"color: #ff4500\">$bufferHeight<\/span><span style=\"color: #000000\">;<\/span><span style=\"color: #000000\">&#160;<\/span><span style=\"color: #ff4500\">$i<\/span><span style=\"color: #a9a9a9\">++<\/span><span style=\"color: #000000\">)<\/span>\n  <br \/><span style=\"color: #000000\">{<\/span>\n  <br \/><span style=\"color: #000000\">&#160; <\/span><span style=\"color: #ff4500\">$spanBuilder<\/span><span style=\"color: #000000\">&#160;<\/span><span style=\"color: #a9a9a9\">=<\/span><span style=\"color: #000000\">&#160;<\/span><span style=\"color: #0000ff\">new-object<\/span><span style=\"color: #000000\">&#160;<\/span><span style=\"color: #8a2be2\">system.text.stringbuilder<\/span><\/p>\n<p><span style=\"color: #000000\">&#160; <\/span><span style=\"color: #006400\"># Track the colors to identify spans of text with the same formatting.<\/span>\n  <br \/><span style=\"color: #000000\">&#160; <\/span><span style=\"color: #ff4500\">$currentForegroundColor<\/span><span style=\"color: #000000\">&#160;<\/span><span style=\"color: #a9a9a9\">=<\/span><span style=\"color: #000000\">&#160;<\/span><span style=\"color: #ff4500\">$buffer<\/span><span style=\"color: #a9a9a9\">[<\/span><span style=\"color: #ff4500\">$i<\/span><span style=\"color: #a9a9a9\">,<\/span><span style=\"color: #000000\">&#160;<\/span><span style=\"color: #800080\">0<\/span><span style=\"color: #a9a9a9\">]<\/span><span style=\"color: #a9a9a9\">.<\/span><span style=\"color: #000000\">Foregroundcolor<\/span>\n  <br \/><span style=\"color: #000000\">&#160; <\/span><span style=\"color: #ff4500\">$currentBackgroundColor<\/span><span style=\"color: #000000\">&#160;<\/span><span style=\"color: #a9a9a9\">=<\/span><span style=\"color: #000000\">&#160;<\/span><span style=\"color: #ff4500\">$buffer<\/span><span style=\"color: #a9a9a9\">[<\/span><span style=\"color: #ff4500\">$i<\/span><span style=\"color: #a9a9a9\">,<\/span><span style=\"color: #000000\">&#160;<\/span><span style=\"color: #800080\">0<\/span><span style=\"color: #a9a9a9\">]<\/span><span style=\"color: #a9a9a9\">.<\/span><span style=\"color: #000000\">Backgroundcolor<\/span><\/p>\n<p><span style=\"color: #000000\">&#160; <\/span><span style=\"color: #00008b\">for<\/span><span style=\"color: #000000\">(<\/span><span style=\"color: #ff4500\">$j<\/span><span style=\"color: #000000\">&#160;<\/span><span style=\"color: #a9a9a9\">=<\/span><span style=\"color: #000000\">&#160;<\/span><span style=\"color: #800080\">0<\/span><span style=\"color: #000000\">;<\/span><span style=\"color: #000000\">&#160;<\/span><span style=\"color: #ff4500\">$j<\/span><span style=\"color: #000000\">&#160;<\/span><span style=\"color: #a9a9a9\">-lt<\/span><span style=\"color: #000000\">&#160;<\/span><span style=\"color: #ff4500\">$bufferWidth<\/span><span style=\"color: #000000\">;<\/span><span style=\"color: #000000\">&#160;<\/span><span style=\"color: #ff4500\">$j<\/span><span style=\"color: #a9a9a9\">++<\/span><span style=\"color: #000000\">)<\/span>\n  <br \/><span style=\"color: #000000\">&#160; <\/span><span style=\"color: #000000\">{<\/span>\n  <br \/><span style=\"color: #000000\">&#160;&#160;&#160; <\/span><span style=\"color: #ff4500\">$cell<\/span><span style=\"color: #000000\">&#160;<\/span><span style=\"color: #a9a9a9\">=<\/span><span style=\"color: #000000\">&#160;<\/span><span style=\"color: #ff4500\">$buffer<\/span><span style=\"color: #a9a9a9\">[<\/span><span style=\"color: #ff4500\">$i<\/span><span style=\"color: #a9a9a9\">,<\/span><span style=\"color: #ff4500\">$j<\/span><span style=\"color: #a9a9a9\">]<\/span><\/p>\n<p><span style=\"color: #000000\">&#160;&#160;&#160; <\/span><span style=\"color: #006400\"># If the colors change, generate an HTML span and append it to the HTML string builder.<\/span>\n  <br \/><span style=\"color: #000000\">&#160;&#160;&#160; <\/span><span style=\"color: #00008b\">if<\/span><span style=\"color: #000000\">&#160;<\/span><span style=\"color: #000000\">(<\/span><span style=\"color: #000000\">(<\/span><span style=\"color: #ff4500\">$cell<\/span><span style=\"color: #a9a9a9\">.<\/span><span style=\"color: #000000\">ForegroundColor<\/span><span style=\"color: #000000\">&#160;<\/span><span style=\"color: #a9a9a9\">-ne<\/span><span style=\"color: #000000\">&#160;<\/span><span style=\"color: #ff4500\">$currentForegroundColor<\/span><span style=\"color: #000000\">)<\/span><span style=\"color: #000000\">&#160;<\/span><span style=\"color: #a9a9a9\">-or<\/span><span style=\"color: #000000\">&#160;<\/span><span style=\"color: #000000\">(<\/span><span style=\"color: #ff4500\">$cell<\/span><span style=\"color: #a9a9a9\">.<\/span><span style=\"color: #000000\">BackgroundColor<\/span><span style=\"color: #000000\">&#160;<\/span><span style=\"color: #a9a9a9\">-ne<\/span><span style=\"color: #000000\">&#160;<\/span><span style=\"color: #ff4500\">$currentBackgroundColor<\/span><span style=\"color: #000000\">)<\/span><span style=\"color: #000000\">)<\/span>\n  <br \/><span style=\"color: #000000\">&#160;&#160;&#160; <\/span><span style=\"color: #000000\">{<\/span>\n  <br \/><span style=\"color: #000000\">&#160;&#160;&#160;&#160;&#160; <\/span><span style=\"color: #0000ff\">Append-HtmlSpan<\/span><\/p>\n<p><span style=\"color: #000000\">&#160;&#160;&#160;&#160;&#160; <\/span><span style=\"color: #006400\"># Reset the span builder and colors.<\/span>\n  <br \/><span style=\"color: #000000\">&#160;&#160;&#160;&#160;&#160; <\/span><span style=\"color: #ff4500\">$spanBuilder<\/span><span style=\"color: #000000\">&#160;<\/span><span style=\"color: #a9a9a9\">=<\/span><span style=\"color: #000000\">&#160;<\/span><span style=\"color: #0000ff\">new-object<\/span><span style=\"color: #000000\">&#160;<\/span><span style=\"color: #8a2be2\">system.text.stringbuilder<\/span>\n  <br \/><span style=\"color: #000000\">&#160;&#160;&#160;&#160;&#160; <\/span><span style=\"color: #ff4500\">$currentForegroundColor<\/span><span style=\"color: #000000\">&#160;<\/span><span style=\"color: #a9a9a9\">=<\/span><span style=\"color: #000000\">&#160;<\/span><span style=\"color: #ff4500\">$cell<\/span><span style=\"color: #a9a9a9\">.<\/span><span style=\"color: #000000\">Foregroundcolor<\/span>\n  <br \/><span style=\"color: #000000\">&#160;&#160;&#160;&#160;&#160; <\/span><span style=\"color: #ff4500\">$currentBackgroundColor<\/span><span style=\"color: #000000\">&#160;<\/span><span style=\"color: #a9a9a9\">=<\/span><span style=\"color: #000000\">&#160;<\/span><span style=\"color: #ff4500\">$cell<\/span><span style=\"color: #a9a9a9\">.<\/span><span style=\"color: #000000\">Backgroundcolor<\/span>\n  <br \/><span style=\"color: #000000\">&#160;&#160;&#160; <\/span><span style=\"color: #000000\">}<\/span><\/p>\n<p><span style=\"color: #000000\">&#160;&#160;&#160; <\/span><span style=\"color: #006400\"># Substitute characters which have special meaning in HTML.<\/span>\n  <br \/><span style=\"color: #000000\">&#160;&#160;&#160; <\/span><span style=\"color: #00008b\">switch<\/span><span style=\"color: #000000\">&#160;<\/span><span style=\"color: #000000\">(<\/span><span style=\"color: #ff4500\">$cell<\/span><span style=\"color: #a9a9a9\">.<\/span><span style=\"color: #000000\">Character<\/span><span style=\"color: #000000\">)<\/span>\n  <br \/><span style=\"color: #000000\">&#160;&#160;&#160; <\/span><span style=\"color: #000000\">{<\/span>\n  <br \/><span style=\"color: #000000\">&#160;&#160;&#160;&#160;&#160; <\/span><span style=\"color: #8b0000\">&#8216;&gt;&#8217;<\/span><span style=\"color: #000000\">&#160;<\/span><span style=\"color: #000000\">{<\/span><span style=\"color: #000000\">&#160;<\/span><span style=\"color: #ff4500\">$htmlChar<\/span><span style=\"color: #000000\">&#160;<\/span><span style=\"color: #a9a9a9\">=<\/span><span style=\"color: #000000\">&#160;<\/span><span style=\"color: #8b0000\">&#8216;&amp;gt;&#8217;<\/span><span style=\"color: #000000\">&#160;<\/span><span style=\"color: #000000\">}<\/span>\n  <br \/><span style=\"color: #000000\">&#160;&#160;&#160;&#160;&#160; <\/span><span style=\"color: #8b0000\">&#8216;&lt;&#8216;<\/span><span style=\"color: #000000\">&#160;<\/span><span style=\"color: #000000\">{<\/span><span style=\"color: #000000\">&#160;<\/span><span style=\"color: #ff4500\">$htmlChar<\/span><span style=\"color: #000000\">&#160;<\/span><span style=\"color: #a9a9a9\">=<\/span><span style=\"color: #000000\">&#160;<\/span><span style=\"color: #8b0000\">&#8216;&amp;lt;&#8217;<\/span><span style=\"color: #000000\">&#160;<\/span><span style=\"color: #000000\">}<\/span>\n  <br \/><span style=\"color: #000000\">&#160;&#160;&#160;&#160;&#160; <\/span><span style=\"color: #8b0000\">&#8216;&amp;&#8217;<\/span><span style=\"color: #000000\">&#160;<\/span><span style=\"color: #000000\">{<\/span><span style=\"color: #000000\">&#160;<\/span><span style=\"color: #ff4500\">$htmlChar<\/span><span style=\"color: #000000\">&#160;<\/span><span style=\"color: #a9a9a9\">=<\/span><span style=\"color: #000000\">&#160;<\/span><span style=\"color: #8b0000\">&#8216;&amp;amp;&#8217;<\/span><span style=\"color: #000000\">&#160;<\/span><span style=\"color: #000000\">}<\/span>\n  <br \/><span style=\"color: #000000\">&#160;&#160;&#160;&#160;&#160; <\/span><span style=\"color: #8a2be2\">default<\/span>\n  <br \/><span style=\"color: #000000\">&#160;&#160;&#160;&#160;&#160; <\/span><span style=\"color: #000000\">{<\/span>\n  <br \/><span style=\"color: #000000\">&#160;&#160;&#160;&#160;&#160;&#160;&#160; <\/span><span style=\"color: #ff4500\">$htmlChar<\/span><span style=\"color: #000000\">&#160;<\/span><span style=\"color: #a9a9a9\">=<\/span><span style=\"color: #000000\">&#160;<\/span><span style=\"color: #ff4500\">$cell<\/span><span style=\"color: #a9a9a9\">.<\/span><span style=\"color: #000000\">Character<\/span>\n  <br \/><span style=\"color: #000000\">&#160;&#160;&#160;&#160;&#160; <\/span><span style=\"color: #000000\">}<\/span>\n  <br \/><span style=\"color: #000000\">&#160;&#160;&#160; <\/span><span style=\"color: #000000\">}<\/span><\/p>\n<p><span style=\"color: #000000\">&#160;&#160;&#160; <\/span><span style=\"color: #ff4500\">$null<\/span><span style=\"color: #000000\">&#160;<\/span><span style=\"color: #a9a9a9\">=<\/span><span style=\"color: #000000\">&#160;<\/span><span style=\"color: #ff4500\">$spanBuilder<\/span><span style=\"color: #a9a9a9\">.<\/span><span style=\"color: #000000\">Append<\/span><span style=\"color: #000000\">(<\/span><span style=\"color: #ff4500\">$htmlChar<\/span><span style=\"color: #000000\">)<\/span>\n  <br \/><span style=\"color: #000000\">&#160; <\/span><span style=\"color: #000000\">}<\/span><\/p>\n<p><span style=\"color: #000000\">&#160; <\/span><span style=\"color: #0000ff\">Append-HtmlSpan<\/span>\n  <br \/><span style=\"color: #000000\">&#160; <\/span><span style=\"color: #0000ff\">Append-HtmlBreak<\/span>\n  <br \/><span style=\"color: #000000\">}<\/span><\/p>\n<p><span style=\"color: #006400\"># Append HTML ending tag.<\/span>\n  <br \/><span style=\"color: #ff4500\">$null<\/span><span style=\"color: #000000\">&#160;<\/span><span style=\"color: #a9a9a9\">=<\/span><span style=\"color: #000000\">&#160;<\/span><span style=\"color: #ff4500\">$htmlBuilder<\/span><span style=\"color: #a9a9a9\">.<\/span><span style=\"color: #000000\">Append<\/span><span style=\"color: #000000\">(<\/span><span style=\"color: #8b0000\">&quot;&lt;\/pre&gt;&quot;<\/span><span style=\"color: #000000\">)<\/span><\/p>\n<p><span style=\"color: #00008b\">return<\/span><span style=\"color: #000000\">&#160;<\/span><span style=\"color: #ff4500\">$htmlBuilder<\/span><span style=\"color: #a9a9a9\">.<\/span><span style=\"color: #000000\">ToString<\/span><span style=\"color: #000000\">(<\/span><span style=\"color: #000000\">)<\/span><\/p>\n<p style=\"font-size: 10pt;margin: 0in 10pt;font-family: lucida console\"><span style=\"color: #000000\"><\/span><\/p>\n<p style=\"font-size: 10pt;margin: 0in 10pt;font-family: lucida console\"><span style=\"color: #000000\"><\/span><\/p>\n<p><span style=\"color: #000000\"><\/p>\n<p \/>\n<p \/>\n<p style=\"font-size: 10pt;margin: 0in 10pt;font-family: lucida console\"><span style=\"color: #006400\">###########################################################################################################<\/span>\n    <br \/><span style=\"color: #006400\"># Get-ConsoleAsRtf.ps1<\/span>\n    <br \/><span style=\"color: #006400\">#<\/span>\n    <br \/><span style=\"color: #006400\"># The script captures console screen buffer up to the current cursor position and returns it in RTF format.<\/span>\n    <br \/><span style=\"color: #006400\">#<\/span>\n    <br \/><span style=\"color: #006400\"># Returns: ASCII-encoded string.<\/span>\n    <br \/><span style=\"color: #006400\">#<\/span>\n    <br \/><span style=\"color: #006400\"># Example:<\/span>\n    <br \/><span style=\"color: #006400\">#<\/span>\n    <br \/><span style=\"color: #006400\"># $rtfFileName = &quot;$env:temp\\ConsoleBuffer.rtf&quot;<\/span>\n    <br \/><span style=\"color: #006400\"># .\\Get-ConsoleAsRtf | out-file $rtfFileName -encoding ascii<\/span>\n    <br \/><span style=\"color: #006400\"># $null = [System.Diagnostics.Process]::Start(&quot;$rtfFileName&quot;)<\/span>\n    <br \/><span style=\"color: #006400\">#<\/span><\/p>\n<p><span style=\"color: #006400\"># Check the host name and exit if the host is not the Windows PowerShell console host.<\/span>\n    <br \/><span style=\"color: #00008b\">if<\/span><span style=\"color: #000000\">&#160;<\/span><span style=\"color: #000000\">(<\/span><span style=\"color: #ff4500\">$host<\/span><span style=\"color: #a9a9a9\">.<\/span><span style=\"color: #000000\">Name<\/span><span style=\"color: #000000\">&#160;<\/span><span style=\"color: #a9a9a9\">-ne<\/span><span style=\"color: #000000\">&#160;<\/span><span style=\"color: #8b0000\">&#8216;ConsoleHost&#8217;<\/span><span style=\"color: #000000\">)<\/span>\n    <br \/><span style=\"color: #000000\">{<\/span>\n    <br \/><span style=\"color: #000000\">&#160; <\/span><span style=\"color: #0000ff\">write-host<\/span><span style=\"color: #000000\">&#160;<\/span><span style=\"color: #000080\">-ForegroundColor<\/span><span style=\"color: #000000\">&#160;<\/span><span style=\"color: #8a2be2\">Red<\/span><span style=\"color: #000000\">&#160;<\/span><span style=\"color: #8b0000\">&quot;This script runs only in the console host. You cannot run this script in $($host.Name).&quot;<\/span>\n    <br \/><span style=\"color: #000000\">&#160; <\/span><span style=\"color: #00008b\">exit<\/span><span style=\"color: #000000\">&#160;<\/span><span style=\"color: #800080\">-1<\/span>\n    <br \/><span style=\"color: #000000\">}<\/span><\/p>\n<p><span style=\"color: #006400\"># Maps console color name to RTF color index.<\/span>\n    <br \/><span style=\"color: #006400\"># The index of \\cf is referencing the color definition in RTF color table.<\/span>\n    <br \/><span style=\"color: #006400\">#<\/span>\n    <br \/><span style=\"color: #00008b\">function<\/span><span style=\"color: #000000\">&#160;<\/span><span style=\"color: #8a2be2\">Get-RtfColorIndex<\/span><span style=\"color: #000000\">&#160;<\/span><span style=\"color: #000000\">(<\/span><span style=\"color: #008080\">[string]<\/span><span style=\"color: #ff4500\">$color<\/span><span style=\"color: #000000\">)<\/span>\n    <br \/><span style=\"color: #000000\">{<\/span>\n    <br \/><span style=\"color: #000000\">&#160; <\/span><span style=\"color: #00008b\">switch<\/span><span style=\"color: #000000\">&#160;<\/span><span style=\"color: #000000\">(<\/span><span style=\"color: #ff4500\">$color<\/span><span style=\"color: #000000\">)<\/span>\n    <br \/><span style=\"color: #000000\">&#160; <\/span><span style=\"color: #000000\">{<\/span>\n    <br \/><span style=\"color: #000000\">&#160;&#160;&#160; <\/span><span style=\"color: #8b0000\">&#8216;Black&#8217;<\/span><span style=\"color: #000000\">&#160;<\/span><span style=\"color: #000000\">{<\/span><span style=\"color: #000000\">&#160;<\/span><span style=\"color: #ff4500\">$index<\/span><span style=\"color: #000000\">&#160;<\/span><span style=\"color: #a9a9a9\">=<\/span><span style=\"color: #000000\">&#160;<\/span><span style=\"color: #800080\">17<\/span><span style=\"color: #000000\">&#160;<\/span><span style=\"color: #000000\">}<\/span>\n    <br \/><span style=\"color: #000000\">&#160;&#160;&#160; <\/span><span style=\"color: #8b0000\">&#8216;DarkBlue&#8217;<\/span><span style=\"color: #000000\">&#160;<\/span><span style=\"color: #000000\">{<\/span><span style=\"color: #000000\">&#160;<\/span><span style=\"color: #ff4500\">$index<\/span><span style=\"color: #000000\">&#160;<\/span><span style=\"color: #a9a9a9\">=<\/span><span style=\"color: #000000\">&#160;<\/span><span style=\"color: #800080\">2<\/span><span style=\"color: #000000\">&#160;<\/span><span style=\"color: #000000\">}<\/span>\n    <br \/><span style=\"color: #000000\">&#160;&#160;&#160; <\/span><span style=\"color: #8b0000\">&#8216;DarkGreen&#8217;<\/span><span style=\"color: #000000\">&#160;<\/span><span style=\"color: #000000\">{<\/span><span style=\"color: #000000\">&#160;<\/span><span style=\"color: #ff4500\">$index<\/span><span style=\"color: #000000\">&#160;<\/span><span style=\"color: #a9a9a9\">=<\/span><span style=\"color: #000000\">&#160;<\/span><span style=\"color: #800080\">3<\/span><span style=\"color: #000000\">&#160;<\/span><span style=\"color: #000000\">}<\/span>\n    <br \/><span style=\"color: #000000\">&#160;&#160;&#160; <\/span><span style=\"color: #8b0000\">&#8216;DarkCyan&#8217;<\/span><span style=\"color: #000000\">&#160;<\/span><span style=\"color: #000000\">{<\/span><span style=\"color: #000000\">&#160;<\/span><span style=\"color: #ff4500\">$index<\/span><span style=\"color: #000000\">&#160;<\/span><span style=\"color: #a9a9a9\">=<\/span><span style=\"color: #000000\">&#160;<\/span><span style=\"color: #800080\">4<\/span><span style=\"color: #000000\">&#160;<\/span><span style=\"color: #000000\">}<\/span>\n    <br \/><span style=\"color: #000000\">&#160;&#160;&#160; <\/span><span style=\"color: #8b0000\">&#8216;DarkRed&#8217;<\/span><span style=\"color: #000000\">&#160;<\/span><span style=\"color: #000000\">{<\/span><span style=\"color: #000000\">&#160;<\/span><span style=\"color: #ff4500\">$index<\/span><span style=\"color: #000000\">&#160;<\/span><span style=\"color: #a9a9a9\">=<\/span><span style=\"color: #000000\">&#160;<\/span><span style=\"color: #800080\">5<\/span><span style=\"color: #000000\">&#160;<\/span><span style=\"color: #000000\">}<\/span>\n    <br \/><span style=\"color: #000000\">&#160;&#160;&#160; <\/span><span style=\"color: #8b0000\">&#8216;DarkMagenta&#8217;<\/span><span style=\"color: #000000\">&#160;<\/span><span style=\"color: #000000\">{<\/span><span style=\"color: #000000\">&#160;<\/span><span style=\"color: #ff4500\">$index<\/span><span style=\"color: #000000\">&#160;<\/span><span style=\"color: #a9a9a9\">=<\/span><span style=\"color: #000000\">&#160;<\/span><span style=\"color: #800080\">6<\/span><span style=\"color: #000000\">&#160;<\/span><span style=\"color: #000000\">}<\/span>\n    <br \/><span style=\"color: #000000\">&#160;&#160;&#160; <\/span><span style=\"color: #8b0000\">&#8216;DarkYellow&#8217;<\/span><span style=\"color: #000000\">&#160;<\/span><span style=\"color: #000000\">{<\/span><span style=\"color: #000000\">&#160;<\/span><span style=\"color: #ff4500\">$index<\/span><span style=\"color: #000000\">&#160;<\/span><span style=\"color: #a9a9a9\">=<\/span><span style=\"color: #000000\">&#160;<\/span><span style=\"color: #800080\">7<\/span><span style=\"color: #000000\">&#160;<\/span><span style=\"color: #000000\">}<\/span>\n    <br \/><span style=\"color: #000000\">&#160;&#160;&#160; <\/span><span style=\"color: #8b0000\">&#8216;Gray&#8217;<\/span><span style=\"color: #000000\">&#160;<\/span><span style=\"color: #000000\">{<\/span><span style=\"color: #000000\">&#160;<\/span><span style=\"color: #ff4500\">$index<\/span><span style=\"color: #000000\">&#160;<\/span><span style=\"color: #a9a9a9\">=<\/span><span style=\"color: #000000\">&#160;<\/span><span style=\"color: #800080\">8<\/span><span style=\"color: #000000\">&#160;<\/span><span style=\"color: #000000\">}<\/span>\n    <br \/><span style=\"color: #000000\">&#160;&#160;&#160; <\/span><span style=\"color: #8b0000\">&#8216;DarkGray&#8217;<\/span><span style=\"color: #000000\">&#160;<\/span><span style=\"color: #000000\">{<\/span><span style=\"color: #000000\">&#160;<\/span><span style=\"color: #ff4500\">$index<\/span><span style=\"color: #000000\">&#160;<\/span><span style=\"color: #a9a9a9\">=<\/span><span style=\"color: #000000\">&#160;<\/span><span style=\"color: #800080\">9<\/span><span style=\"color: #000000\">&#160;<\/span><span style=\"color: #000000\">}<\/span>\n    <br \/><span style=\"color: #000000\">&#160;&#160;&#160; <\/span><span style=\"color: #8b0000\">&#8216;Blue&#8217;<\/span><span style=\"color: #000000\">&#160;<\/span><span style=\"color: #000000\">{<\/span><span style=\"color: #000000\">&#160;<\/span><span style=\"color: #ff4500\">$index<\/span><span style=\"color: #000000\">&#160;<\/span><span style=\"color: #a9a9a9\">=<\/span><span style=\"color: #000000\">&#160;<\/span><span style=\"color: #800080\">10<\/span><span style=\"color: #000000\">&#160;<\/span><span style=\"color: #000000\">}<\/span>\n    <br \/><span style=\"color: #000000\">&#160;&#160;&#160; <\/span><span style=\"color: #8b0000\">&#8216;Green&#8217;<\/span><span style=\"color: #000000\">&#160;<\/span><span style=\"color: #000000\">{<\/span><span style=\"color: #000000\">&#160;<\/span><span style=\"color: #ff4500\">$index<\/span><span style=\"color: #000000\">&#160;<\/span><span style=\"color: #a9a9a9\">=<\/span><span style=\"color: #000000\">&#160;<\/span><span style=\"color: #800080\">11<\/span><span style=\"color: #000000\">&#160;<\/span><span style=\"color: #000000\">}<\/span>\n    <br \/><span style=\"color: #000000\">&#160;&#160;&#160; <\/span><span style=\"color: #8b0000\">&#8216;Cyan&#8217;<\/span><span style=\"color: #000000\">&#160;<\/span><span style=\"color: #000000\">{<\/span><span style=\"color: #000000\">&#160;<\/span><span style=\"color: #ff4500\">$index<\/span><span style=\"color: #000000\">&#160;<\/span><span style=\"color: #a9a9a9\">=<\/span><span style=\"color: #000000\">&#160;<\/span><span style=\"color: #800080\">12<\/span><span style=\"color: #000000\">&#160;<\/span><span style=\"color: #000000\">}<\/span>\n    <br \/><span style=\"color: #000000\">&#160;&#160;&#160; <\/span><span style=\"color: #8b0000\">&#8216;Red&#8217;<\/span><span style=\"color: #000000\">&#160;<\/span><span style=\"color: #000000\">{<\/span><span style=\"color: #000000\">&#160;<\/span><span style=\"color: #ff4500\">$index<\/span><span style=\"color: #000000\">&#160;<\/span><span style=\"color: #a9a9a9\">=<\/span><span style=\"color: #000000\">&#160;<\/span><span style=\"color: #800080\">13<\/span><span style=\"color: #000000\">&#160;<\/span><span style=\"color: #000000\">}<\/span>\n    <br \/><span style=\"color: #000000\">&#160;&#160;&#160; <\/span><span style=\"color: #8b0000\">&#8216;Magenta&#8217;<\/span><span style=\"color: #000000\">&#160;<\/span><span style=\"color: #000000\">{<\/span><span style=\"color: #000000\">&#160;<\/span><span style=\"color: #ff4500\">$index<\/span><span style=\"color: #000000\">&#160;<\/span><span style=\"color: #a9a9a9\">=<\/span><span style=\"color: #000000\">&#160;<\/span><span style=\"color: #800080\">14<\/span><span style=\"color: #000000\">&#160;<\/span><span style=\"color: #000000\">}<\/span>\n    <br \/><span style=\"color: #000000\">&#160;&#160;&#160; <\/span><span style=\"color: #8b0000\">&#8216;Yellow&#8217;<\/span><span style=\"color: #000000\">&#160;<\/span><span style=\"color: #000000\">{<\/span><span style=\"color: #000000\">&#160;<\/span><span style=\"color: #ff4500\">$index<\/span><span style=\"color: #000000\">&#160;<\/span><span style=\"color: #a9a9a9\">=<\/span><span style=\"color: #000000\">&#160;<\/span><span style=\"color: #800080\">15<\/span><span style=\"color: #000000\">&#160;<\/span><span style=\"color: #000000\">}<\/span>\n    <br \/><span style=\"color: #000000\">&#160;&#160;&#160; <\/span><span style=\"color: #8b0000\">&#8216;White&#8217;<\/span><span style=\"color: #000000\">&#160;<\/span><span style=\"color: #000000\">{<\/span><span style=\"color: #000000\">&#160;<\/span><span style=\"color: #ff4500\">$index<\/span><span style=\"color: #000000\">&#160;<\/span><span style=\"color: #a9a9a9\">=<\/span><span style=\"color: #000000\">&#160;<\/span><span style=\"color: #800080\">16<\/span><span style=\"color: #000000\">&#160;<\/span><span style=\"color: #000000\">}<\/span>\n    <br \/><span style=\"color: #000000\">&#160;&#160;&#160; <\/span><span style=\"color: #8a2be2\">default<\/span>\n    <br \/><span style=\"color: #000000\">&#160;&#160;&#160; <\/span><span style=\"color: #000000\">{<\/span>\n    <br \/><span style=\"color: #000000\">&#160;&#160;&#160;&#160;&#160; <\/span><span style=\"color: #ff4500\">$index<\/span><span style=\"color: #000000\">&#160;<\/span><span style=\"color: #a9a9a9\">=<\/span><span style=\"color: #000000\">&#160;<\/span><span style=\"color: #800080\">0<\/span>\n    <br \/><span style=\"color: #000000\">&#160;&#160;&#160; <\/span><span style=\"color: #000000\">}<\/span>\n    <br \/><span style=\"color: #000000\">&#160; <\/span><span style=\"color: #000000\">}<\/span>\n    <br \/><span style=\"color: #000000\">&#160; <\/span><span style=\"color: #00008b\">return<\/span><span style=\"color: #000000\">&#160;<\/span><span style=\"color: #ff4500\">$index<\/span>\n    <br \/><span style=\"color: #000000\">}<\/span><\/p>\n<p><span style=\"color: #006400\"># Create RTF block from text using named console colors.<\/span>\n    <br \/><span style=\"color: #006400\">#<\/span>\n    <br \/><span style=\"color: #00008b\">function<\/span><span style=\"color: #000000\">&#160;<\/span><span style=\"color: #8a2be2\">Append-RtfBlock<\/span><span style=\"color: #000000\">&#160;<\/span><span style=\"color: #000000\">(<\/span><span style=\"color: #ff4500\">$text<\/span><span style=\"color: #000000\">)<\/span>\n    <br \/><span style=\"color: #000000\">{<\/span>\n    <br \/><span style=\"color: #000000\">&#160; <\/span><span style=\"color: #ff4500\">$foreColorIndex<\/span><span style=\"color: #000000\">&#160;<\/span><span style=\"color: #a9a9a9\">=<\/span><span style=\"color: #000000\">&#160;<\/span><span style=\"color: #0000ff\">Get-RtfColorIndex<\/span><span style=\"color: #000000\">&#160;<\/span><span style=\"color: #ff4500\">$currentForegroundColor<\/span>\n    <br \/><span style=\"color: #000000\">&#160; <\/span><span style=\"color: #ff4500\">$null<\/span><span style=\"color: #000000\">&#160;<\/span><span style=\"color: #a9a9a9\">=<\/span><span style=\"color: #000000\">&#160;<\/span><span style=\"color: #ff4500\">$rtfBuilder<\/span><span style=\"color: #a9a9a9\">.<\/span><span style=\"color: #000000\">Append<\/span><span style=\"color: #000000\">(<\/span><span style=\"color: #8b0000\">&quot;{\\cf$foreColorIndex&quot;<\/span><span style=\"color: #000000\">)<\/span><\/p>\n<p><span style=\"color: #000000\">&#160; <\/span><span style=\"color: #006400\"># You can also add \\ab* tag here if you want a bold font in the output.<\/span><\/p>\n<p><span style=\"color: #000000\">&#160; <\/span><span style=\"color: #ff4500\">$backColorIndex<\/span><span style=\"color: #000000\">&#160;<\/span><span style=\"color: #a9a9a9\">=<\/span><span style=\"color: #000000\">&#160;<\/span><span style=\"color: #0000ff\">Get-RtfColorIndex<\/span><span style=\"color: #000000\">&#160;<\/span><span style=\"color: #ff4500\">$currentBackgroundColor<\/span>\n    <br \/><span style=\"color: #000000\">&#160; <\/span><span style=\"color: #ff4500\">$null<\/span><span style=\"color: #000000\">&#160;<\/span><span style=\"color: #a9a9a9\">=<\/span><span style=\"color: #000000\">&#160;<\/span><span style=\"color: #ff4500\">$rtfBuilder<\/span><span style=\"color: #a9a9a9\">.<\/span><span style=\"color: #000000\">Append<\/span><span style=\"color: #000000\">(<\/span><span style=\"color: #8b0000\">&quot;\\chshdng0\\chcbpat$backColorIndex&quot;<\/span><span style=\"color: #000000\">)<\/span><\/p>\n<p><span style=\"color: #000000\">&#160; <\/span><span style=\"color: #ff4500\">$text<\/span><span style=\"color: #000000\">&#160;<\/span><span style=\"color: #a9a9a9\">=<\/span><span style=\"color: #000000\">&#160;<\/span><span style=\"color: #ff4500\">$blockBuilder<\/span><span style=\"color: #a9a9a9\">.<\/span><span style=\"color: #000000\">ToString<\/span><span style=\"color: #000000\">(<\/span><span style=\"color: #000000\">)<\/span>\n    <br \/><span style=\"color: #000000\">&#160; <\/span><span style=\"color: #ff4500\">$null<\/span><span style=\"color: #000000\">&#160;<\/span><span style=\"color: #a9a9a9\">=<\/span><span style=\"color: #000000\">&#160;<\/span><span style=\"color: #ff4500\">$rtfBuilder<\/span><span style=\"color: #a9a9a9\">.<\/span><span style=\"color: #000000\">Append<\/span><span style=\"color: #000000\">(<\/span><span style=\"color: #8b0000\">&quot; $text}&quot;<\/span><span style=\"color: #000000\">)<\/span>\n    <br \/><span style=\"color: #000000\">}<\/span><\/p>\n<p><span style=\"color: #006400\"># Append line break to RTF builder<\/span>\n    <br \/><span style=\"color: #006400\">#<\/span>\n    <br \/><span style=\"color: #00008b\">function<\/span><span style=\"color: #000000\">&#160;<\/span><span style=\"color: #8a2be2\">Append-Break<\/span>\n    <br \/><span style=\"color: #000000\">{<\/span>\n    <br \/><span style=\"color: #000000\">&#160; <\/span><span style=\"color: #ff4500\">$backColorIndex<\/span><span style=\"color: #000000\">&#160;<\/span><span style=\"color: #a9a9a9\">=<\/span><span style=\"color: #000000\">&#160;<\/span><span style=\"color: #0000ff\">Get-RtfColorIndex<\/span><span style=\"color: #000000\">&#160;<\/span><span style=\"color: #ff4500\">$currentBackgroundColor<\/span>\n    <br \/><span style=\"color: #000000\">&#160; <\/span><span style=\"color: #ff4500\">$null<\/span><span style=\"color: #000000\">&#160;<\/span><span style=\"color: #a9a9a9\">=<\/span><span style=\"color: #000000\">&#160;<\/span><span style=\"color: #ff4500\">$rtfBuilder<\/span><span style=\"color: #a9a9a9\">.<\/span><span style=\"color: #000000\">Append<\/span><span style=\"color: #000000\">(<\/span><span style=\"color: #8b0000\">&quot;\\shading0\\cbpat$backColorIndex\\par`r`n&quot;<\/span><span style=\"color: #000000\">)<\/span>\n    <br \/><span style=\"color: #000000\">}<\/span><\/p>\n<p><span style=\"color: #006400\"># Initialize the RTF string builder.<\/span>\n    <br \/><span style=\"color: #ff4500\">$rtfBuilder<\/span><span style=\"color: #000000\">&#160;<\/span><span style=\"color: #a9a9a9\">=<\/span><span style=\"color: #000000\">&#160;<\/span><span style=\"color: #0000ff\">new-object<\/span><span style=\"color: #000000\">&#160;<\/span><span style=\"color: #8a2be2\">system.text.stringbuilder<\/span><\/p>\n<p><span style=\"color: #006400\"># Set the desired font<\/span>\n    <br \/><span style=\"color: #ff4500\">$fontName<\/span><span style=\"color: #000000\">&#160;<\/span><span style=\"color: #a9a9a9\">=<\/span><span style=\"color: #000000\">&#160;<\/span><span style=\"color: #8b0000\">&#8216;Lucida Console&#8217;<\/span>\n    <br \/><span style=\"color: #006400\"># Append RTF header<\/span>\n    <br \/><span style=\"color: #ff4500\">$null<\/span><span style=\"color: #000000\">&#160;<\/span><span style=\"color: #a9a9a9\">=<\/span><span style=\"color: #000000\">&#160;<\/span><span style=\"color: #ff4500\">$rtfBuilder<\/span><span style=\"color: #a9a9a9\">.<\/span><span style=\"color: #000000\">Append<\/span><span style=\"color: #000000\">(<\/span><span style=\"color: #8b0000\">&quot;{\\rtf1\\fbidis\\ansi\\ansicpg1252\\deff0\\deflang1033{\\fonttbl{\\f0\\fnil\\fcharset0 $fontName;}}&quot;<\/span><span style=\"color: #000000\">)<\/span>\n    <br \/><span style=\"color: #ff4500\">$null<\/span><span style=\"color: #000000\">&#160;<\/span><span style=\"color: #a9a9a9\">=<\/span><span style=\"color: #000000\">&#160;<\/span><span style=\"color: #ff4500\">$rtfBuilder<\/span><span style=\"color: #a9a9a9\">.<\/span><span style=\"color: #000000\">Append<\/span><span style=\"color: #000000\">(<\/span><span style=\"color: #8b0000\">&quot;`r`n&quot;<\/span><span style=\"color: #000000\">)<\/span>\n    <br \/><span style=\"color: #006400\"># Append RTF color table which will contain all Powershell console colors.<\/span>\n    <br \/><span style=\"color: #ff4500\">$null<\/span><span style=\"color: #000000\">&#160;<\/span><span style=\"color: #a9a9a9\">=<\/span><span style=\"color: #000000\">&#160;<\/span><span style=\"color: #ff4500\">$rtfBuilder<\/span><span style=\"color: #a9a9a9\">.<\/span><span style=\"color: #000000\">Append<\/span><span style=\"color: #000000\">(<\/span><span style=\"color: #8b0000\">&#8216;{\\colortbl;red0\\green0\\blue128;\\red0\\green128\\blue0;\\red0\\green128\\blue128;\\red128\\green0\\blue0;\\red1\\green36\\blue86;\\red238\\green237\\blue240;\\red192\\green192\\blue192;\\red128\\green128\\blue128;\\red0\\green0\\blue255;\\red0\\green255\\blue0;\\red0\\green255\\blue255;\\red255\\green0\\blue0;\\red255\\green0\\blue255;\\red255\\green255\\blue0;\\red255\\green255\\blue255;\\red0\\green0\\blue0;}&#8217;<\/span><span style=\"color: #000000\">)<\/span>\n    <br \/><span style=\"color: #ff4500\">$null<\/span><span style=\"color: #000000\">&#160;<\/span><span style=\"color: #a9a9a9\">=<\/span><span style=\"color: #000000\">&#160;<\/span><span style=\"color: #ff4500\">$rtfBuilder<\/span><span style=\"color: #a9a9a9\">.<\/span><span style=\"color: #000000\">Append<\/span><span style=\"color: #000000\">(<\/span><span style=\"color: #8b0000\">&quot;`r`n&quot;<\/span><span style=\"color: #000000\">)<\/span>\n    <br \/><span style=\"color: #006400\"># Append RTF document settings.<\/span>\n    <br \/><span style=\"color: #ff4500\">$null<\/span><span style=\"color: #000000\">&#160;<\/span><span style=\"color: #a9a9a9\">=<\/span><span style=\"color: #000000\">&#160;<\/span><span style=\"color: #ff4500\">$rtfBuilder<\/span><span style=\"color: #a9a9a9\">.<\/span><span style=\"color: #000000\">Append<\/span><span style=\"color: #000000\">(<\/span><span style=\"color: #8b0000\">&#8216;\\viewkind4\\uc1\\pard\\ltrpar\\f0\\fs23 &#8216;<\/span><span style=\"color: #000000\">)<\/span>\n    <br \/><span style=\"color: #000000\">&#160;<\/span>\n    <br \/><span style=\"color: #006400\"># Grab the console screen buffer contents using the Host console API.<\/span>\n    <br \/><span style=\"color: #ff4500\">$bufferWidth<\/span><span style=\"color: #000000\">&#160;<\/span><span style=\"color: #a9a9a9\">=<\/span><span style=\"color: #000000\">&#160;<\/span><span style=\"color: #ff4500\">$host<\/span><span style=\"color: #a9a9a9\">.<\/span><span style=\"color: #000000\">ui<\/span><span style=\"color: #a9a9a9\">.<\/span><span style=\"color: #000000\">rawui<\/span><span style=\"color: #a9a9a9\">.<\/span><span style=\"color: #000000\">BufferSize<\/span><span style=\"color: #a9a9a9\">.<\/span><span style=\"color: #000000\">Width<\/span>\n    <br \/><span style=\"color: #ff4500\">$bufferHeight<\/span><span style=\"color: #000000\">&#160;<\/span><span style=\"color: #a9a9a9\">=<\/span><span style=\"color: #000000\">&#160;<\/span><span style=\"color: #ff4500\">$host<\/span><span style=\"color: #a9a9a9\">.<\/span><span style=\"color: #000000\">ui<\/span><span style=\"color: #a9a9a9\">.<\/span><span style=\"color: #000000\">rawui<\/span><span style=\"color: #a9a9a9\">.<\/span><span style=\"color: #000000\">CursorPosition<\/span><span style=\"color: #a9a9a9\">.<\/span><span style=\"color: #000000\">Y<\/span>\n    <br \/><span style=\"color: #ff4500\">$rec<\/span><span style=\"color: #000000\">&#160;<\/span><span style=\"color: #a9a9a9\">=<\/span><span style=\"color: #000000\">&#160;<\/span><span style=\"color: #0000ff\">new-object<\/span><span style=\"color: #000000\">&#160;<\/span><span style=\"color: #8a2be2\">System.Management.Automation.Host.Rectangle<\/span><span style=\"color: #000000\">&#160;<\/span><span style=\"color: #800080\">0<\/span><span style=\"color: #a9a9a9\">,<\/span><span style=\"color: #800080\">0<\/span><span style=\"color: #a9a9a9\">,<\/span><span style=\"color: #000000\">(<\/span><span style=\"color: #ff4500\">$bufferWidth<\/span><span style=\"color: #000000\">&#160;<\/span><span style=\"color: #a9a9a9\">&#8211;<\/span><span style=\"color: #000000\">&#160;<\/span><span style=\"color: #800080\">1<\/span><span style=\"color: #000000\">)<\/span><span style=\"color: #a9a9a9\">,<\/span><span style=\"color: #ff4500\">$bufferHeight<\/span>\n    <br \/><span style=\"color: #ff4500\">$buffer<\/span><span style=\"color: #000000\">&#160;<\/span><span style=\"color: #a9a9a9\">=<\/span><span style=\"color: #000000\">&#160;<\/span><span style=\"color: #ff4500\">$host<\/span><span style=\"color: #a9a9a9\">.<\/span><span style=\"color: #000000\">ui<\/span><span style=\"color: #a9a9a9\">.<\/span><span style=\"color: #000000\">rawui<\/span><span style=\"color: #a9a9a9\">.<\/span><span style=\"color: #000000\">GetBufferContents<\/span><span style=\"color: #000000\">(<\/span><span style=\"color: #ff4500\">$rec<\/span><span style=\"color: #000000\">)<\/span><\/p>\n<p><span style=\"color: #006400\"># Iterate through the lines in the console buffer.<\/span>\n    <br \/><span style=\"color: #00008b\">for<\/span><span style=\"color: #000000\">(<\/span><span style=\"color: #ff4500\">$i<\/span><span style=\"color: #000000\">&#160;<\/span><span style=\"color: #a9a9a9\">=<\/span><span style=\"color: #000000\">&#160;<\/span><span style=\"color: #800080\">0<\/span><span style=\"color: #000000\">;<\/span><span style=\"color: #000000\">&#160;<\/span><span style=\"color: #ff4500\">$i<\/span><span style=\"color: #000000\">&#160;<\/span><span style=\"color: #a9a9a9\">-lt<\/span><span style=\"color: #000000\">&#160;<\/span><span style=\"color: #ff4500\">$bufferHeight<\/span><span style=\"color: #000000\">;<\/span><span style=\"color: #000000\">&#160;<\/span><span style=\"color: #ff4500\">$i<\/span><span style=\"color: #a9a9a9\">++<\/span><span style=\"color: #000000\">)<\/span>\n    <br \/><span style=\"color: #000000\">{<\/span>\n    <br \/><span style=\"color: #000000\">&#160; <\/span><span style=\"color: #ff4500\">$blockBuilder<\/span><span style=\"color: #000000\">&#160;<\/span><span style=\"color: #a9a9a9\">=<\/span><span style=\"color: #000000\">&#160;<\/span><span style=\"color: #0000ff\">new-object<\/span><span style=\"color: #000000\">&#160;<\/span><span style=\"color: #8a2be2\">system.text.stringbuilder<\/span><\/p>\n<p><span style=\"color: #000000\">&#160; <\/span><span style=\"color: #006400\"># Track the colors to identify spans of text with the same formatting.<\/span>\n    <br \/><span style=\"color: #000000\">&#160; <\/span><span style=\"color: #ff4500\">$currentForegroundColor<\/span><span style=\"color: #000000\">&#160;<\/span><span style=\"color: #a9a9a9\">=<\/span><span style=\"color: #000000\">&#160;<\/span><span style=\"color: #ff4500\">$buffer<\/span><span style=\"color: #a9a9a9\">[<\/span><span style=\"color: #ff4500\">$i<\/span><span style=\"color: #a9a9a9\">,<\/span><span style=\"color: #000000\">&#160;<\/span><span style=\"color: #800080\">0<\/span><span style=\"color: #a9a9a9\">]<\/span><span style=\"color: #a9a9a9\">.<\/span><span style=\"color: #000000\">Foregroundcolor<\/span>\n    <br \/><span style=\"color: #000000\">&#160; <\/span><span style=\"color: #ff4500\">$currentBackgroundColor<\/span><span style=\"color: #000000\">&#160;<\/span><span style=\"color: #a9a9a9\">=<\/span><span style=\"color: #000000\">&#160;<\/span><span style=\"color: #ff4500\">$buffer<\/span><span style=\"color: #a9a9a9\">[<\/span><span style=\"color: #ff4500\">$i<\/span><span style=\"color: #a9a9a9\">,<\/span><span style=\"color: #000000\">&#160;<\/span><span style=\"color: #800080\">0<\/span><span style=\"color: #a9a9a9\">]<\/span><span style=\"color: #a9a9a9\">.<\/span><span style=\"color: #000000\">Backgroundcolor<\/span><\/p>\n<p><span style=\"color: #000000\">&#160; <\/span><span style=\"color: #00008b\">for<\/span><span style=\"color: #000000\">(<\/span><span style=\"color: #ff4500\">$j<\/span><span style=\"color: #000000\">&#160;<\/span><span style=\"color: #a9a9a9\">=<\/span><span style=\"color: #000000\">&#160;<\/span><span style=\"color: #800080\">0<\/span><span style=\"color: #000000\">;<\/span><span style=\"color: #000000\">&#160;<\/span><span style=\"color: #ff4500\">$j<\/span><span style=\"color: #000000\">&#160;<\/span><span style=\"color: #a9a9a9\">-lt<\/span><span style=\"color: #000000\">&#160;<\/span><span style=\"color: #ff4500\">$bufferWidth<\/span><span style=\"color: #000000\">;<\/span><span style=\"color: #000000\">&#160;<\/span><span style=\"color: #ff4500\">$j<\/span><span style=\"color: #a9a9a9\">++<\/span><span style=\"color: #000000\">)<\/span>\n    <br \/><span style=\"color: #000000\">&#160; <\/span><span style=\"color: #000000\">{<\/span>\n    <br \/><span style=\"color: #000000\">&#160;&#160;&#160; <\/span><span style=\"color: #ff4500\">$cell<\/span><span style=\"color: #000000\">&#160;<\/span><span style=\"color: #a9a9a9\">=<\/span><span style=\"color: #000000\">&#160;<\/span><span style=\"color: #ff4500\">$buffer<\/span><span style=\"color: #a9a9a9\">[<\/span><span style=\"color: #ff4500\">$i<\/span><span style=\"color: #a9a9a9\">,<\/span><span style=\"color: #ff4500\">$j<\/span><span style=\"color: #a9a9a9\">]<\/span><\/p>\n<p><span style=\"color: #000000\">&#160;&#160;&#160; <\/span><span style=\"color: #006400\"># If the colors change, generate an RTF span and append it to the RTF string builder.<\/span>\n    <br \/><span style=\"color: #000000\">&#160;&#160;&#160; <\/span><span style=\"color: #00008b\">if<\/span><span style=\"color: #000000\">&#160;<\/span><span style=\"color: #000000\">(<\/span><span style=\"color: #000000\">(<\/span><span style=\"color: #ff4500\">$cell<\/span><span style=\"color: #a9a9a9\">.<\/span><span style=\"color: #000000\">ForegroundColor<\/span><span style=\"color: #000000\">&#160;<\/span><span style=\"color: #a9a9a9\">-ne<\/span><span style=\"color: #000000\">&#160;<\/span><span style=\"color: #ff4500\">$currentForegroundColor<\/span><span style=\"color: #000000\">)<\/span><span style=\"color: #000000\">&#160;<\/span><span style=\"color: #a9a9a9\">-or<\/span><span style=\"color: #000000\">&#160;<\/span><span style=\"color: #000000\">(<\/span><span style=\"color: #ff4500\">$cell<\/span><span style=\"color: #a9a9a9\">.<\/span><span style=\"color: #000000\">BackgroundColor<\/span><span style=\"color: #000000\">&#160;<\/span><span style=\"color: #a9a9a9\">-ne<\/span><span style=\"color: #000000\">&#160;<\/span><span style=\"color: #ff4500\">$currentBackgroundColor<\/span><span style=\"color: #000000\">)<\/span><span style=\"color: #000000\">)<\/span>\n    <br \/><span style=\"color: #000000\">&#160;&#160;&#160; <\/span><span style=\"color: #000000\">{<\/span>\n    <br \/><span style=\"color: #000000\">&#160;&#160;&#160;&#160;&#160; <\/span><span style=\"color: #0000ff\">Append-RtfBlock<\/span><\/p>\n<p><span style=\"color: #000000\">&#160;&#160;&#160;&#160;&#160; <\/span><span style=\"color: #006400\"># Reset the block builder and colors.<\/span>\n    <br \/><span style=\"color: #000000\">&#160;&#160;&#160;&#160;&#160; <\/span><span style=\"color: #ff4500\">$blockBuilder<\/span><span style=\"color: #000000\">&#160;<\/span><span style=\"color: #a9a9a9\">=<\/span><span style=\"color: #000000\">&#160;<\/span><span style=\"color: #0000ff\">new-object<\/span><span style=\"color: #000000\">&#160;<\/span><span style=\"color: #8a2be2\">system.text.stringbuilder<\/span>\n    <br \/><span style=\"color: #000000\">&#160;&#160;&#160;&#160;&#160; <\/span><span style=\"color: #ff4500\">$currentForegroundColor<\/span><span style=\"color: #000000\">&#160;<\/span><span style=\"color: #a9a9a9\">=<\/span><span style=\"color: #000000\">&#160;<\/span><span style=\"color: #ff4500\">$cell<\/span><span style=\"color: #a9a9a9\">.<\/span><span style=\"color: #000000\">Foregroundcolor<\/span>\n    <br \/><span style=\"color: #000000\">&#160;&#160;&#160;&#160;&#160; <\/span><span style=\"color: #ff4500\">$currentBackgroundColor<\/span><span style=\"color: #000000\">&#160;<\/span><span style=\"color: #a9a9a9\">=<\/span><span style=\"color: #000000\">&#160;<\/span><span style=\"color: #ff4500\">$cell<\/span><span style=\"color: #a9a9a9\">.<\/span><span style=\"color: #000000\">Backgroundcolor<\/span>\n    <br \/><span style=\"color: #000000\">&#160;&#160;&#160; <\/span><span style=\"color: #000000\">}<\/span><\/p>\n<p><span style=\"color: #000000\">&#160;&#160;&#160; <\/span><span style=\"color: #006400\"># Substitute characters which have special meaning in RTF.<\/span>\n    <br \/><span style=\"color: #000000\">&#160;&#160;&#160; <\/span><span style=\"color: #00008b\">switch<\/span><span style=\"color: #000000\">&#160;<\/span><span style=\"color: #000000\">(<\/span><span style=\"color: #ff4500\">$cell<\/span><span style=\"color: #a9a9a9\">.<\/span><span style=\"color: #000000\">Character<\/span><span style=\"color: #000000\">)<\/span>\n    <br \/><span style=\"color: #000000\">&#160;&#160;&#160; <\/span><span style=\"color: #000000\">{<\/span>\n    <br \/><span style=\"color: #000000\">&#160;&#160;&#160;&#160;&#160; <\/span><span style=\"color: #8b0000\">&quot;`t&quot;<\/span><span style=\"color: #000000\">&#160;<\/span><span style=\"color: #000000\">{<\/span><span style=\"color: #000000\">&#160;<\/span><span style=\"color: #ff4500\">$rtfChar<\/span><span style=\"color: #000000\">&#160;<\/span><span style=\"color: #a9a9a9\">=<\/span><span style=\"color: #000000\">&#160;<\/span><span style=\"color: #8b0000\">&#8216;\\tab&#8217;<\/span><span style=\"color: #000000\">&#160;<\/span><span style=\"color: #000000\">}<\/span>\n    <br \/><span style=\"color: #000000\">&#160;&#160;&#160;&#160;&#160; <\/span><span style=\"color: #8b0000\">&#8216;\\&#8217;<\/span><span style=\"color: #000000\">&#160;<\/span><span style=\"color: #000000\">{<\/span><span style=\"color: #000000\">&#160;<\/span><span style=\"color: #ff4500\">$rtfChar<\/span><span style=\"color: #000000\">&#160;<\/span><span style=\"color: #a9a9a9\">=<\/span><span style=\"color: #000000\">&#160;<\/span><span style=\"color: #8b0000\">&#8216;\\\\&#8217;<\/span><span style=\"color: #000000\">&#160;<\/span><span style=\"color: #000000\">}<\/span>\n    <br \/><span style=\"color: #000000\">&#160;&#160;&#160;&#160;&#160; <\/span><span style=\"color: #8b0000\">&#8216;{&#8216;<\/span><span style=\"color: #000000\">&#160;<\/span><span style=\"color: #000000\">{<\/span><span style=\"color: #000000\">&#160;<\/span><span style=\"color: #ff4500\">$rtfChar<\/span><span style=\"color: #000000\">&#160;<\/span><span style=\"color: #a9a9a9\">=<\/span><span style=\"color: #000000\">&#160;<\/span><span style=\"color: #8b0000\">&#8216;\\{&#8216;<\/span><span style=\"color: #000000\">&#160;<\/span><span style=\"color: #000000\">}<\/span>\n    <br \/><span style=\"color: #000000\">&#160;&#160;&#160;&#160;&#160; <\/span><span style=\"color: #8b0000\">&#8216;}&#8217;<\/span><span style=\"color: #000000\">&#160;<\/span><span style=\"color: #000000\">{<\/span><span style=\"color: #000000\">&#160;<\/span><span style=\"color: #ff4500\">$rtfChar<\/span><span style=\"color: #000000\">&#160;<\/span><span style=\"color: #a9a9a9\">=<\/span><span style=\"color: #000000\">&#160;<\/span><span style=\"color: #8b0000\">&#8216;\\}&#8217;<\/span><span style=\"color: #000000\">&#160;<\/span><span style=\"color: #000000\">}<\/span>\n    <br \/><span style=\"color: #000000\">&#160;&#160;&#160;&#160;&#160; <\/span><span style=\"color: #8a2be2\">default<\/span>\n    <br \/><span style=\"color: #000000\">&#160;&#160;&#160;&#160;&#160; <\/span><span style=\"color: #000000\">{<\/span>\n    <br \/><span style=\"color: #000000\">&#160;&#160;&#160;&#160;&#160;&#160;&#160; <\/span><span style=\"color: #ff4500\">$rtfChar<\/span><span style=\"color: #000000\">&#160;<\/span><span style=\"color: #a9a9a9\">=<\/span><span style=\"color: #000000\">&#160;<\/span><span style=\"color: #ff4500\">$cell<\/span><span style=\"color: #a9a9a9\">.<\/span><span style=\"color: #000000\">Character<\/span>\n    <br \/><span style=\"color: #000000\">&#160;&#160;&#160;&#160;&#160; <\/span><span style=\"color: #000000\">}<\/span>\n    <br \/><span style=\"color: #000000\">&#160;&#160;&#160; <\/span><span style=\"color: #000000\">}<\/span><\/p>\n<p><span style=\"color: #000000\">&#160;&#160;&#160; <\/span><span style=\"color: #ff4500\">$null<\/span><span style=\"color: #000000\">&#160;<\/span><span style=\"color: #a9a9a9\">=<\/span><span style=\"color: #000000\">&#160;<\/span><span style=\"color: #ff4500\">$blockBuilder<\/span><span style=\"color: #a9a9a9\">.<\/span><span style=\"color: #000000\">Append<\/span><span style=\"color: #000000\">(<\/span><span style=\"color: #ff4500\">$rtfChar<\/span><span style=\"color: #000000\">)<\/span>\n    <br \/><span style=\"color: #000000\">&#160; <\/span><span style=\"color: #000000\">}<\/span><\/p>\n<p><span style=\"color: #000000\">&#160; <\/span><span style=\"color: #0000ff\">Append-RtfBlock<\/span>\n    <br \/><span style=\"color: #000000\">&#160; <\/span><span style=\"color: #0000ff\">Append-Break<\/span>\n    <br \/><span style=\"color: #000000\">}<\/span><\/p>\n<p><span style=\"color: #006400\"># Append RTF ending brace.<\/span>\n    <br \/><span style=\"color: #ff4500\">$null<\/span><span style=\"color: #000000\">&#160;<\/span><span style=\"color: #a9a9a9\">=<\/span><span style=\"color: #000000\">&#160;<\/span><span style=\"color: #ff4500\">$rtfBuilder<\/span><span style=\"color: #a9a9a9\">.<\/span><span style=\"color: #000000\">Append<\/span><span style=\"color: #000000\">(<\/span><span style=\"color: #8b0000\">&#8216;}&#8217;<\/span><span style=\"color: #000000\">)<\/span><\/p>\n<p><span style=\"color: #00008b\">return<\/span><span style=\"color: #000000\">&#160;<\/span><span style=\"color: #ff4500\">$rtfBuilder<\/span><span style=\"color: #a9a9a9\">.<\/span><span style=\"color: #000000\">ToString<\/span><span style=\"color: #000000\">(<\/span><span style=\"color: #000000\">)<\/span>\n    <\/p>\n<p><\/span><\/p>\n<p style=\"font-size: 10pt;margin: 0in 10pt;font-family: lucida console\"><span style=\"color: #000000\">&#160;<\/span><\/p>\n","protected":false},"excerpt":{"rendered":"<p>In the previous post we demonstrated how we can use console host API to capture screen buffer contents as text. But what if we want some colors. Would not it be nice to publish colorized copy of console in HTML or insert it as part of Microsoft Word document. For this to work we need [&hellip;]<\/p>\n","protected":false},"author":600,"featured_media":13641,"comment_status":"open","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"_acf_changed":false,"footnotes":""},"categories":[1],"tags":[131,197,294],"class_list":["post-4691","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-powershell","tag-console","tag-html","tag-rtf"],"acf":[],"blog_post_summary":"<p>In the previous post we demonstrated how we can use console host API to capture screen buffer contents as text. But what if we want some colors. Would not it be nice to publish colorized copy of console in HTML or insert it as part of Microsoft Word document. For this to work we need [&hellip;]<\/p>\n","_links":{"self":[{"href":"https:\/\/devblogs.microsoft.com\/powershell\/wp-json\/wp\/v2\/posts\/4691","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/devblogs.microsoft.com\/powershell\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/devblogs.microsoft.com\/powershell\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/devblogs.microsoft.com\/powershell\/wp-json\/wp\/v2\/users\/600"}],"replies":[{"embeddable":true,"href":"https:\/\/devblogs.microsoft.com\/powershell\/wp-json\/wp\/v2\/comments?post=4691"}],"version-history":[{"count":0,"href":"https:\/\/devblogs.microsoft.com\/powershell\/wp-json\/wp\/v2\/posts\/4691\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/devblogs.microsoft.com\/powershell\/wp-json\/wp\/v2\/media\/13641"}],"wp:attachment":[{"href":"https:\/\/devblogs.microsoft.com\/powershell\/wp-json\/wp\/v2\/media?parent=4691"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/devblogs.microsoft.com\/powershell\/wp-json\/wp\/v2\/categories?post=4691"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/devblogs.microsoft.com\/powershell\/wp-json\/wp\/v2\/tags?post=4691"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}