################################################################################⌀ 匀攀琀ⴀ䌀氀椀瀀戀漀愀爀搀匀挀爀椀瀀琀⸀瀀猀
#⌀ 吀栀攀 猀挀爀椀瀀琀 攀渀琀椀爀攀 挀漀渀琀攀渀琀猀 漀昀 琀栀攀 挀甀爀爀攀渀琀氀礀 猀攀氀攀挀琀攀搀 攀搀椀琀漀爀 眀椀渀搀漀眀 琀漀 猀礀猀琀攀洀
# clipboard. The copied data can be pasted into any application that supports⌀ 瀀愀猀琀椀渀最 椀渀 唀渀椀挀漀搀攀吀攀砀琀Ⰰ 刀吀䘀 漀爀 䠀吀䴀䰀 昀漀爀洀愀琀⸀ 吀攀砀琀 瀀愀猀琀攀搀 椀渀 刀吀䘀 漀爀 䠀吀䴀䰀
# format will be colorized.⌀
# See also:⌀ 栀琀琀瀀㨀⼀⼀戀氀漀最猀⸀洀猀搀渀⸀挀漀洀⼀瀀漀眀攀爀猀栀攀氀氀⼀愀爀挀栀椀瘀攀⼀㈀ 㤀⼀ ⼀㌀⼀栀漀眀ⴀ琀漀ⴀ挀漀瀀礀ⴀ挀漀氀漀爀椀稀攀搀ⴀ猀挀爀椀瀀琀ⴀ昀爀漀洀ⴀ瀀漀眀攀爀猀栀攀氀氀ⴀ椀猀攀⸀愀猀瀀砀
# http://www.leeholmes.com/blog/SyntaxHighlightingInPowerShell.aspx⌀ 栀琀琀瀀㨀⼀⼀眀眀眀⸀氀攀攀栀漀氀洀攀猀⸀挀漀洀⼀戀氀漀最⼀刀攀愀氀琀椀洀攀匀礀渀琀愀砀䠀椀最栀氀椀最栀琀椀渀最䤀渀夀漀甀爀倀漀眀攀爀匀栀攀氀氀䌀漀渀猀漀氀攀⸀愀猀瀀砀
#⌀⌀⌀⌀⌀⌀⌀⌀⌀⌀⌀⌀⌀⌀⌀⌀⌀⌀⌀⌀⌀⌀⌀⌀⌀⌀⌀⌀⌀⌀⌀⌀⌀⌀⌀⌀⌀⌀⌀⌀⌀⌀⌀⌀⌀⌀⌀⌀⌀⌀⌀⌀⌀⌀⌀⌀⌀⌀⌀⌀⌀⌀⌀⌀⌀⌀⌀⌀⌀⌀⌀⌀⌀⌀⌀⌀⌀⌀⌀⌀
嬀䌀洀搀氀攀琀䈀椀渀搀椀渀最⠀⤀崀
param($path)
function Get-ScriptName笀
$myInvocation.ScriptName紀
椀昀⠀␀瀀愀琀栀 ⴀ愀渀搀 ⠀嬀吀栀爀攀愀搀椀渀最⸀吀栀爀攀愀搀崀㨀㨀䌀甀爀爀攀渀琀吀栀爀攀愀搀⸀䄀瀀愀爀琀洀攀渀琀匀琀愀琀攀 ⴀ渀攀 ∀匀吀䄀∀⤀⤀
{ 倀漀眀攀爀匀栀攀氀氀 ⴀ一漀倀爀漀昀椀氀攀 ⴀ匀吀䄀 ⴀ䘀椀氀攀 ⠀䜀攀琀ⴀ匀挀爀椀瀀琀一愀洀攀⤀ ␀瀀愀琀栀
return紀
␀琀漀欀攀渀䌀漀氀漀甀爀猀 㴀 䀀笀
'Attribute' = '#FFADD8E6' ✀䌀漀洀洀愀渀搀✀ 㴀 ✀⌀䘀䘀 䘀䘀✀
'CommandArgument' = '#FF8A2BE2' ✀䌀漀洀洀愀渀搀倀愀爀愀洀攀琀攀爀✀ 㴀 ✀⌀䘀䘀 㠀 ✀
'Comment' = '#FF006400' ✀䜀爀漀甀瀀䔀渀搀✀ 㴀 ✀⌀䘀䘀 ✀
'GroupStart' = '#FF000000' ✀䬀攀礀眀漀爀搀✀ 㴀 ✀⌀䘀䘀 㠀䈀✀
'LineContinuation' = '#FF000000' ✀䰀漀漀瀀䰀愀戀攀氀✀ 㴀 ✀⌀䘀䘀 㠀䈀✀
'Member' = '#FF000000' ✀一攀眀䰀椀渀攀✀ 㴀 ✀⌀䘀䘀 ✀
'Number' = '#FF800080' ✀伀瀀攀爀愀琀漀爀✀ 㴀 ✀⌀䘀䘀䄀㤀䄀㤀䄀㤀✀
'Position' = '#FF000000' ✀匀琀愀琀攀洀攀渀琀匀攀瀀愀爀愀琀漀爀✀ 㴀 ✀⌀䘀䘀 ✀
'String' = '#FF8B0000' ✀吀礀瀀攀✀ 㴀 ✀⌀䘀䘀 㠀 㠀 ✀
'Unknown' = '#FF000000' ✀嘀愀爀椀愀戀氀攀✀ 㴀 ✀⌀䘀䘀䘀䘀㐀㔀 ✀
}
if($psise)笀
$tokenColours = $psise.Options.TokenColors紀
䄀搀搀ⴀ吀礀瀀攀 ⴀ䄀猀猀攀洀戀氀礀 匀礀猀琀攀洀⸀圀攀戀
Add-Type -Assembly PresentationCore
# Create RTF block from text using named console colors.昀甀渀挀琀椀漀渀 䄀瀀瀀攀渀搀ⴀ刀琀昀䈀氀漀挀欀 ⠀␀戀氀漀挀欀Ⰰ ␀琀漀欀攀渀䌀漀氀漀爀⤀
{ ␀挀漀氀漀爀䤀渀搀攀砀 㴀 ␀爀琀昀䌀漀氀漀爀䴀愀瀀⸀␀琀漀欀攀渀䌀漀氀漀爀
$block = $block.Replace('\','\\').Replace("`r`n","\cf1\par`r`n") ␀戀氀漀挀欀 㴀 ␀戀氀漀挀欀⸀刀攀瀀氀愀挀攀⠀∀怀琀∀Ⰰ✀尀琀愀戀✀⤀⸀刀攀瀀氀愀挀攀⠀✀笀✀Ⰰ✀尀笀✀⤀⸀刀攀瀀氀愀挀攀⠀✀紀✀Ⰰ✀尀紀✀⤀
$null = $rtfBuilder.Append("\cf$colorIndex $block")紀
⌀ 䜀攀渀攀爀愀琀攀 愀渀 䠀吀䴀䰀 猀瀀愀渀 愀渀搀 愀瀀瀀攀渀搀 椀琀 琀漀 䠀吀䴀䰀 猀琀爀椀渀最 戀甀椀氀搀攀爀
$currentLine = 1昀甀渀挀琀椀漀渀 䄀瀀瀀攀渀搀ⴀ䠀琀洀氀匀瀀愀渀 ⠀␀戀氀漀挀欀Ⰰ ␀琀漀欀攀渀䌀漀氀漀爀⤀
{ 椀昀 ⠀⠀␀琀漀欀攀渀䌀漀氀漀爀 ⴀ攀焀 ✀一攀眀䰀椀渀攀✀⤀ ⴀ漀爀 ⠀␀琀漀欀攀渀䌀漀氀漀爀 ⴀ攀焀 ✀䰀椀渀攀䌀漀渀琀椀渀甀愀琀椀漀渀✀⤀⤀
{ 椀昀⠀␀琀漀欀攀渀䌀漀氀漀爀 ⴀ攀焀 ✀䰀椀渀攀䌀漀渀琀椀渀甀愀琀椀漀渀✀⤀
{ ␀渀甀氀氀 㴀 ␀挀漀搀攀䈀甀椀氀搀攀爀⸀䄀瀀瀀攀渀搀⠀✀怀✀⤀
}
$null = $codeBuilder.Append("
`r`n") ␀渀甀氀氀 㴀 ␀氀椀渀攀䈀甀椀氀搀攀爀⸀䄀瀀瀀攀渀搀⠀∀笀 㨀 紀㰀䈀刀 ⼀㸀∀ ⴀ昀 ␀挀甀爀爀攀渀琀䰀椀渀攀⤀
$SCRIPT:currentLine++ 紀
else 笀
$block = [System.Web.HttpUtility]::HtmlEncode($block) 椀昀 ⠀ⴀ渀漀琀 ␀戀氀漀挀欀⸀吀爀椀洀⠀⤀⤀
{ ␀戀氀漀挀欀 㴀 ␀戀氀漀挀欀⸀刀攀瀀氀愀挀攀⠀✀ ✀Ⰰ ✀☀渀戀猀瀀㬀✀⤀
}
$htmlColor = $tokenColours[$tokenColor].ToString().Replace('#FF', '#')
if($tokenColor -eq 'String') 笀
$lines = $block -split "`r`n" ␀戀氀漀挀欀 㴀 ∀∀
␀洀甀氀琀椀瀀氀攀䰀椀渀攀猀 㴀 ␀昀愀氀猀攀
foreach($line in $lines) 笀
if($multipleLines) 笀
$block += "
`r`n"
$null = $lineBuilder.Append("{0:000}
" -f $currentLine) ␀匀䌀刀䤀倀吀㨀挀甀爀爀攀渀琀䰀椀渀攀⬀⬀
}
$newText = $line.TrimStart() ␀渀攀眀吀攀砀琀 㴀 ∀☀渀戀猀瀀㬀∀ ⨀ ⠀␀氀椀渀攀⸀䰀攀渀最琀栀 ⴀ ␀渀攀眀吀攀砀琀⸀䰀攀渀最琀栀⤀ ⬀
$newText ␀戀氀漀挀欀 ⬀㴀 ␀渀攀眀吀攀砀琀
$multipleLines = $true 紀
}
$null = $codeBuilder.Append( ∀㰀猀瀀愀渀 猀琀礀氀攀㴀✀挀漀氀漀爀㨀␀栀琀洀氀䌀漀氀漀爀✀㸀␀戀氀漀挀欀㰀⼀猀瀀愀渀㸀∀⤀
}紀
昀甀渀挀琀椀漀渀 䜀攀琀䠀琀洀氀䌀氀椀瀀戀漀愀爀搀䘀漀爀洀愀琀⠀␀栀琀洀氀⤀
{ ␀栀攀愀搀攀爀 㴀 䀀∀
Version:1.0匀琀愀爀琀䠀吀䴀䰀㨀
EndHTML:0000000000匀琀愀爀琀䘀爀愀最洀攀渀琀㨀
EndFragment:0000000000匀琀愀爀琀匀攀氀攀挀琀椀漀渀㨀
EndSelection:0000000000匀漀甀爀挀攀唀刀䰀㨀昀椀氀攀㨀⼀⼀⼀愀戀漀甀琀㨀戀氀愀渀欀
㰀䠀吀䴀䰀㸀