document.write('\
<div class="poshcode code posh">\
<style type="text/css">\
');
document.write("/**\
 * GeSHi (C) 2004 - 2007 Nigel McNie, 2007 - 2008 Benny Baumann\
 * (http://qbnz.com/highlighter/ and http://geshi.org/)\
 */\
.posh .de1, .posh .de2 {font: normal normal 1em/1.2em monospace; margin:0; padding:0; background:none; vertical-align:top;}\
.posh  {font-family:monospace;}\
.posh .imp {font-weight: bold; color: red;}\
.posh li, .posh .li1 {background: #ffffff;}\
.posh .ln {width:1px;text-align:right;margin:0;padding:0 2px;vertical-align:top;}\
.posh .li2 {background: #eeeeee;}\
.posh .kw1 {color: #666699; font-weight: bold;}\
.posh .kw2 {color: #333399; font-weight: bold; font-style: italic;}\
.posh .kw3 {color: #003366; font-weight: bold;}\
.posh .kw4 {color: #660033;}\
.posh .co1 {color: #666666; font-style: italic;}\
.posh .coMULTI {color: #666666; font-style: italic;}\
.posh .es0 {color: #000099; font-weight: bold;}\
.posh .br0 {color: #333;}\
.posh .sy0 {color: #66cc66;}\
.posh .st0 {color: #009900;}\
.posh .nu0 {color: #cc66cc;}\
.posh .me1 {color: #003366;}\
.posh .me2 {color: #003366;}\
.posh .re0 {color: #0066cc; font-style: italic;}\
.posh .re1 {font-style: normal;}\
.posh .re2 {color: #000066;}\
.posh .re3 {color: #660033; font-weight: bold;}\
.posh .re4 {color: #003366; font-weight: bold;}\
.posh span.xtra { display:block; }\
");
document.write(".posh ol {float:left; margin: 0px !important; padding: 0px; min-width:100% !important; list-style-position: inside;}\
.posh li.li2, .posh li.li1 {list-style-type:decimal-leading-zero; white-space:nowrap; padding:0 1em 0 0.5em;}\
.posh li {color: #ccc;}\
.posh li div {color: #000; display: inline;}\
.syntax {background:none repeat scroll 0 0 #eee; border:0.5em solid #ccc;}\
.syntax .posh {overflow: auto;}\
.syntax .poshcredit {\
background-color:#eaeaea; color:#666;\
padding:0.5em 1em; clear:both;\
font-size:85%;\
}");
document.write("\n</style>");
document.write('<div class="syntax"><div class="posh" style="font-family:monospace;"><ol><li class="li1"><div class="de1"><span class="co1">## This is the first version of a Growl module (just dot-source to use in PowerShell 1.0)</span></div></li>\
<li class="li2"><div class="de2"><span class="co1">## v 1.0 supports a very simple notice, and no callbacks</span></div></li>\
<li class="li1"><div class="de1"><span class="co1">## v 2.0 supports registering multiple message types</span></div></li>\
<li class="li2"><div class="de2"><span class="co1">## &nbsp; &nbsp; &nbsp; supports callbacks</span></div></li>\
<li class="li1"><div class="de1"><span class="co1">## v 2.1 redesigned to be a module used from apps, rather than it\'s own &quot;PowerGrowler&quot; app</span></div></li>\
<li class="li2"><div class="de2"><span class="co1">##</span></div></li>\
<li class="li1"><div class="de1"><span class="co1">## TODO:</span></div></li>\
<li class="li2"><div class="de2"><span class="co1">## * Test sending notices to other PCs directly</span></div></li>\
<li class="li1"><div class="de1">&nbsp;</div></li>\
<li class="li2"><div class="de2"><span class="re0">Set-<span class="re1">StrictMode</span></span> <span class="re2">-Version</span> <span class="nu0">2</span></div></li>\
<li class="li1"><div class="de1"><span class="co1">## this is just a default now, you\'ll have opportunities to override it...</span></div></li>\
<li class="li2"><div class="de2"><span class="re3">$script</span>:appName <span class="sy0">=</span> <span class="st0">&quot;PowerGrowler&quot;</span></div></li>\
<li class="li1"><div class="de1">&nbsp;</div></li>\
<li class="li2"><div class="de2"><span class="re4"><span class="br0">&#91;</span>Reflection.<span class="me1">Assembly</span><span class="br0">&#93;</span></span>::<span class="me2">LoadFrom</span><span class="br0">&#40;</span><span class="st0">&quot;$(Split-Path (gp HKCU:\\Software\\Growl).\'(default)\')\\Growl.Connector.dll&quot;</span><span class="br0">&#41;</span> <span class="sy0">|</span> <span class="re0">Out-<span class="re1">Null</span></span></div></li>\
<li class="li1"><div class="de1"><span class="kw1">if</span><span class="br0">&#40;</span><span class="sy0">!</span><span class="br0">&#40;</span><span class="re0">Test-<span class="re1">Path</span></span> Variable:Global:PowerGrowlerNotices<span class="br0">&#41;</span><span class="br0">&#41;</span> <span class="br0">&#123;</span></div></li>\
<li class="li2"><div class="de2">&nbsp; &nbsp;<span class="re3">$global</span>:PowerGrowlerNotices <span class="sy0">=</span> @<span class="br0">&#123;</span><span class="br0">&#125;</span></div></li>\
<li class="li1"><div class="de1"><span class="br0">&#125;</span></div></li>\
<li class="li2"><div class="de2">&nbsp;</div></li>\
<li class="li1"><div class="de1"><span class="co1">## We can safely recreate this, it doesn\'t store much</span></div></li>\
<li class="li2"><div class="de2"><span class="re3">$script</span>:PowerGrowler <span class="sy0">=</span> <span class="re0">New-<span class="re1">Object</span></span> <span class="st0">&quot;Growl.Connector.GrowlConnector&quot;</span></div></li>\
<li class="li1"><div class="de1">&nbsp;</div></li>\
<li class="li2"><div class="de2"><span class="kw1">function</span> <span class="re0">Register-<span class="re1">GrowlType</span></span> <span class="br0">&#123;</span></div></li>\
<li class="li1"><div class="de1"><span class="co1">#.Synopsis</span></div></li>\
<li class="li2"><div class="de2"><span class="co1"># &nbsp;Register a new Type name for growl notices from PowerGrowl</span></div></li>\
<li class="li1"><div class="de1"><span class="co1">#.Description</span></div></li>\
<li class="li2"><div class="de2"><span class="co1"># &nbsp;Creates a new type name that can be used for sending growl notices</span></div></li>\
<li class="li1"><div class="de1"><span class="co1">#.Parameter AppName</span></div></li>\
<li class="li2"><div class="de2"><span class="co1"># &nbsp;The name of the application you want to register as</span></div></li>\
<li class="li1"><div class="de1"><span class="co1">#.Parameter Name</span></div></li>\
<li class="li2"><div class="de2"><span class="co1"># &nbsp;The type name to be used sending growls</span></div></li>\
<li class="li1"><div class="de1"><span class="co1">#.Parameter DisplayName</span></div></li>\
<li class="li2"><div class="de2"><span class="co1"># &nbsp;The test to use for display (defaults to use the same value as the type name)</span></div></li>\
<li class="li1"><div class="de1"><span class="co1">#.Parameter Icon</span></div></li>\
<li class="li2"><div class="de2"><span class="co1"># &nbsp;Overrides the default icon of the message (accepts .ico, .png, .bmp, .jpg, .gif etc)</span></div></li>\
<li class="li1"><div class="de1"><span class="co1">#.Parameter MachineName</span></div></li>\
<li class="li2"><div class="de2"><span class="co1"># &nbsp;The name of a remote machine to register remotely instead of locally.</span></div></li>\
<li class="li1"><div class="de1"><span class="co1">#.Parameter Priority</span></div></li>\
<li class="li2"><div class="de2"><span class="co1"># &nbsp;Overrides the default priority of the message (use sparingly)</span></div></li>\
<li class="li1"><div class="de1"><span class="co1">#.Example</span></div></li>\
<li class="li2"><div class="de2"><span class="co1"># &nbsp;Register-GrowlType &quot;PoshTwitter&quot; &quot;Command Completed&quot;</span></div></li>\
<li class="li1"><div class="de1"><span class="co1"># &nbsp;</span></div></li>\
<li class="li2"><div class="de2"><span class="co1"># &nbsp;Registers the type &quot;Command Completed,&quot; using the default icon, for sending notifications to the local PC</span></div></li>\
<li class="li1"><div class="de1"><span class="co1">#</span></div></li>\
<li class="li2"><div class="de2"><span class="kw1">PARAM</span><span class="br0">&#40;</span></div></li>\
<li class="li1"><div class="de1">&nbsp; &nbsp;<span class="br0">&#91;</span>Parameter<span class="br0">&#40;</span>Mandatory<span class="sy0">=</span><span class="re3">$true</span>,Position<span class="sy0">=</span><span class="nu0">0</span><span class="br0">&#41;</span><span class="br0">&#93;</span></div></li>\
<li class="li2"><div class="de2">&nbsp; &nbsp;<span class="re4"><span class="br0">&#91;</span><span class="kw3">String</span><span class="br0">&#93;</span></span><span class="re3">$AppName</span></div></li>\
<li class="li1"><div class="de1">,</div></li>\
<li class="li2"><div class="de2">&nbsp; &nbsp;<span class="br0">&#91;</span>Parameter<span class="br0">&#40;</span>Mandatory<span class="sy0">=</span><span class="re3">$true</span>,Position<span class="sy0">=</span><span class="nu0">1</span><span class="br0">&#41;</span><span class="br0">&#93;</span></div></li>\
<li class="li1"><div class="de1">&nbsp; &nbsp;<span class="br0">&#91;</span>ValidateScript<span class="br0">&#40;</span> <span class="br0">&#123;</span><span class="sy0">!</span><span class="re3">$global</span>:PowerGrowlerNotices.<span class="kw2">Contains</span><span class="br0">&#40;</span><span class="re3">$AppName</span><span class="br0">&#41;</span> <span class="re2">-OR</span> <span class="sy0">!</span><span class="re3">$global</span>:PowerGrowlerNotices.<span class="re3">$AppName</span>.<span class="me1">Notices</span>.<span class="me1">ContainsKey</span><span class="br0">&#40;</span><span class="re3">$_</span><span class="br0">&#41;</span><span class="br0">&#125;</span> <span class="br0">&#41;</span><span class="br0">&#93;</span></div></li>\
<li class="li2"><div class="de2">&nbsp; &nbsp;<span class="re4"><span class="br0">&#91;</span><span class="kw3">String</span><span class="br0">&#93;</span></span><span class="re3">$Name</span></div></li>\
<li class="li1"><div class="de1">,</div></li>\
<li class="li2"><div class="de2">&nbsp; &nbsp;<span class="br0">&#91;</span>Parameter<span class="br0">&#40;</span>Mandatory<span class="sy0">=</span><span class="re3">$false</span>,Position<span class="sy0">=</span><span class="nu0">5</span><span class="br0">&#41;</span><span class="br0">&#93;</span></div></li>\
<li class="li1"><div class="de1">&nbsp; &nbsp;<span class="re4"><span class="br0">&#91;</span><span class="kw3">String</span><span class="br0">&#93;</span></span><span class="re3">$Icon</span> <span class="sy0">=</span> <span class="st0">&quot;$PSScriptRoot\\default.ico&quot;</span></div></li>\
<li class="li2"><div class="de2">,</div></li>\
<li class="li1"><div class="de1">&nbsp; &nbsp;<span class="br0">&#91;</span>Parameter<span class="br0">&#40;</span>Mandatory<span class="sy0">=</span><span class="re3">$false</span>,Position<span class="sy0">=</span><span class="nu0">6</span><span class="br0">&#41;</span><span class="br0">&#93;</span></div></li>\
<li class="li2"><div class="de2">&nbsp; &nbsp;<span class="re4"><span class="br0">&#91;</span><span class="kw3">String</span><span class="br0">&#93;</span></span><span class="re3">$DisplayName</span> <span class="sy0">=</span> <span class="re3">$Name</span></div></li>\
<li class="li1"><div class="de1">,</div></li>\
<li class="li2"><div class="de2">&nbsp; &nbsp;<span class="br0">&#91;</span>Parameter<span class="br0">&#40;</span>Mandatory<span class="sy0">=</span><span class="re3">$false</span>,Position<span class="sy0">=</span><span class="nu0">7</span><span class="br0">&#41;</span><span class="br0">&#93;</span></div></li>\
<li class="li1"><div class="de1">&nbsp; &nbsp;<span class="re4"><span class="br0">&#91;</span><span class="kw3">String</span><span class="br0">&#93;</span></span><span class="re3">$MachineName</span></div></li>\
<li class="li2"><div class="de2">,</div></li>\
<li class="li1"><div class="de1">&nbsp; &nbsp;<span class="br0">&#91;</span>Parameter<span class="br0">&#40;</span>Mandatory<span class="sy0">=</span><span class="re3">$false</span><span class="br0">&#41;</span><span class="br0">&#93;</span></div></li>\
<li class="li2"><div class="de2">&nbsp; &nbsp;<span class="re4"><span class="br0">&#91;</span><span class="kw3">String</span><span class="br0">&#93;</span></span><span class="re3">$AppIcon</span></div></li>\
<li class="li1"><div class="de1"><span class="br0">&#41;</span></div></li>\
<li class="li2"><div class="de2">&nbsp; </div></li>\
<li class="li1"><div class="de1">&nbsp; &nbsp;<span class="re4"><span class="br0">&#91;</span>Growl.<span class="me1">Connector</span>.<span class="me1">NotificationType</span><span class="br0">&#93;</span></span><span class="re3">$Notice</span> <span class="sy0">=</span> <span class="re3">$Name</span></div></li>\
<li class="li2"><div class="de2">&nbsp; &nbsp;<span class="re3">$Notice</span>.<span class="me1">DisplayName</span> <span class="sy0">=</span> <span class="re3">$DisplayName</span></div></li>\
<li class="li1"><div class="de1">&nbsp; &nbsp;<span class="re3">$Notice</span>.<span class="me1">Icon</span> <span class="sy0">=</span> <span class="re0">Convert-<span class="re1">Path</span></span> <span class="br0">&#40;</span><span class="re0">Resolve-<span class="re1">Path</span></span> <span class="re3">$Icon</span><span class="br0">&#41;</span></div></li>\
<li class="li2"><div class="de2">&nbsp;</div></li>\
<li class="li1"><div class="de1">&nbsp; &nbsp;<span class="kw1">if</span><span class="br0">&#40;</span><span class="re3">$MachineName</span><span class="br0">&#41;</span> <span class="br0">&#123;</span></div></li>\
<li class="li2"><div class="de2">&nbsp; &nbsp; &nbsp; <span class="re3">$Notice</span>.<span class="me1">MachineName</span> <span class="sy0">=</span> <span class="re3">$MachineName</span></div></li>\
<li class="li1"><div class="de1">&nbsp; &nbsp;<span class="br0">&#125;</span></div></li>\
<li class="li2"><div class="de2">&nbsp; &nbsp;<span class="kw1">if</span><span class="br0">&#40;</span><span class="sy0">!</span><span class="re3">$global</span>:PowerGrowlerNotices.<span class="kw2">Contains</span><span class="br0">&#40;</span><span class="re3">$AppName</span><span class="br0">&#41;</span><span class="br0">&#41;</span> <span class="br0">&#123;</span></div></li>\
<li class="li1"><div class="de1">&nbsp; &nbsp; &nbsp; <span class="re3">$global</span>:PowerGrowlerNotices.<span class="me1">Add</span><span class="br0">&#40;</span> <span class="re3">$AppName</span>, <span class="br0">&#40;</span><span class="re4"><span class="br0">&#91;</span>Growl.<span class="me1">Connector</span>.<span class="me1">Application</span><span class="br0">&#93;</span></span><span class="re3">$AppName</span><span class="br0">&#41;</span> <span class="br0">&#41;</span></div></li>\
<li class="li2"><div class="de2">&nbsp;</div></li>\
<li class="li1"><div class="de1">&nbsp; &nbsp; &nbsp; <span class="re3">$global</span>:PowerGrowlerNotices.<span class="re3">$AppName</span> <span class="sy0">=</span> <span class="re0">Add-<span class="re1">Member</span></span> <span class="re2">-input</span> <span class="re3">$global</span>:PowerGrowlerNotices.<span class="re3">$AppName</span> <span class="re2">-Name</span> Notices <span class="re2">-Type</span> NoteProperty <span class="re2">-Value</span> <span class="br0">&#40;</span><span class="re0">New-<span class="re1">Object</span></span> <span class="kw3">hashtable</span><span class="br0">&#41;</span> <span class="re2">-Passthru</span></div></li>\
<li class="li2"><div class="de2">&nbsp; &nbsp; &nbsp; <span class="re3">$global</span>:PowerGrowlerNotices.<span class="re3">$AppName</span>.<span class="me1">Icon</span> <span class="sy0">=</span> <span class="re0">Convert-<span class="re1">Path</span></span> <span class="br0">&#40;</span><span class="re0">Resolve-<span class="re1">Path</span></span> <span class="re3">$AppIcon</span><span class="br0">&#41;</span></div></li>\
<li class="li1"><div class="de1">&nbsp; &nbsp;<span class="br0">&#125;</span></div></li>\
<li class="li2"><div class="de2">&nbsp; &nbsp;</div></li>\
<li class="li1"><div class="de1">&nbsp; &nbsp;<span class="re3">$global</span>:PowerGrowlerNotices.<span class="re3">$AppName</span>.<span class="me1">Notices</span>.<span class="me1">Add</span><span class="br0">&#40;</span> <span class="re3">$Name</span>, <span class="re3">$Notice</span> <span class="br0">&#41;</span></div></li>\
<li class="li2"><div class="de2">&nbsp;</div></li>\
<li class="li1"><div class="de1">&nbsp; &nbsp;<span class="re3">$script</span>:PowerGrowler.<span class="me1">Register</span><span class="br0">&#40;</span> <span class="re3">$global</span>:PowerGrowlerNotices.<span class="re3">$AppName</span> , <span class="re4"><span class="br0">&#91;</span>Growl.<span class="me1">Connector</span>.<span class="me1">NotificationType</span><span class="br0">&#91;</span><span class="br0">&#93;</span><span class="br0">&#93;</span></span>@<span class="br0">&#40;</span><span class="re3">$global</span>:PowerGrowlerNotices.<span class="re3">$AppName</span>.<span class="me1">Notices</span>.<span class="me1">Values</span><span class="br0">&#41;</span> <span class="br0">&#41;</span></div></li>\
<li class="li2"><div class="de2"><span class="br0">&#125;</span></div></li>\
<li class="li1"><div class="de1">&nbsp;</div></li>\
<li class="li2"><div class="de2">&nbsp;</div></li>\
<li class="li1"><div class="de1"><span class="kw1">function</span> <span class="re0">Set-<span class="re1">GrowlPassword</span></span> <span class="br0">&#123;</span> </div></li>\
<li class="li2"><div class="de2"><span class="co1">#.Synopsis</span></div></li>\
<li class="li1"><div class="de1"><span class="co1"># &nbsp;Set the Growl password</span></div></li>\
<li class="li2"><div class="de2"><span class="co1">#.Description</span></div></li>\
<li class="li1"><div class="de1"><span class="co1"># &nbsp;Set the password and optionally, the encryption algorithm, for communicating with Growl</span></div></li>\
<li class="li2"><div class="de2"><span class="co1">#.Parameter Password</span></div></li>\
<li class="li1"><div class="de1"><span class="co1"># &nbsp;The password for Growl</span></div></li>\
<li class="li2"><div class="de2"><span class="co1">#.Parameter Encryption</span></div></li>\
<li class="li1"><div class="de1"><span class="co1"># &nbsp;The algorithm to be used for encryption (defaults to AES)</span></div></li>\
<li class="li2"><div class="de2"><span class="co1">#.Parameter KeyHash</span></div></li>\
<li class="li1"><div class="de1"><span class="co1"># &nbsp;The algorithm to be used for key hashing (defaults to SHA1)</span></div></li>\
<li class="li2"><div class="de2"><span class="kw1">PARAM</span><span class="br0">&#40;</span> </div></li>\
<li class="li1"><div class="de1">&nbsp; &nbsp;<span class="br0">&#91;</span>Parameter<span class="br0">&#40;</span>Mandatory<span class="sy0">=</span><span class="re3">$true</span>,Position<span class="sy0">=</span><span class="nu0">0</span><span class="br0">&#41;</span><span class="br0">&#93;</span></div></li>\
<li class="li2"><div class="de2">&nbsp; &nbsp;<span class="re4"><span class="br0">&#91;</span><span class="kw3">String</span><span class="br0">&#93;</span></span><span class="re3">$Password</span></div></li>\
<li class="li1"><div class="de1">,</div></li>\
<li class="li2"><div class="de2">&nbsp; &nbsp;<span class="br0">&#91;</span>Parameter<span class="br0">&#40;</span>Mandatory<span class="sy0">=</span><span class="re3">$false</span>,Position<span class="sy0">=</span><span class="nu0">1</span><span class="br0">&#41;</span><span class="br0">&#93;</span></div></li>\
<li class="li1"><div class="de1">&nbsp; &nbsp;<span class="br0">&#91;</span>ValidateSet<span class="br0">&#40;</span> <span class="st0">&quot;AES&quot;</span>, <span class="st0">&quot;DES&quot;</span>, <span class="st0">&quot;RC2&quot;</span>, <span class="st0">&quot;TripleDES&quot;</span>, <span class="st0">&quot;PlainText&quot;</span> <span class="br0">&#41;</span><span class="br0">&#93;</span></div></li>\
<li class="li2"><div class="de2">&nbsp; &nbsp;<span class="re4"><span class="br0">&#91;</span><span class="kw3">String</span><span class="br0">&#93;</span></span><span class="re3">$Encryption</span> <span class="sy0">=</span> <span class="st0">&quot;AES&quot;</span></div></li>\
<li class="li1"><div class="de1">, &nbsp; </div></li>\
<li class="li2"><div class="de2">&nbsp; &nbsp;<span class="br0">&#91;</span>Parameter<span class="br0">&#40;</span>Mandatory<span class="sy0">=</span><span class="re3">$false</span>,Position<span class="sy0">=</span><span class="nu0">2</span><span class="br0">&#41;</span><span class="br0">&#93;</span></div></li>\
<li class="li1"><div class="de1">&nbsp; &nbsp;<span class="br0">&#91;</span>ValidateSet<span class="br0">&#40;</span> <span class="st0">&quot;MD5&quot;</span>, <span class="st0">&quot;SHA1&quot;</span>, <span class="st0">&quot;SHA256&quot;</span>, <span class="st0">&quot;SHA384&quot;</span>, <span class="st0">&quot;SHA512&quot;</span> <span class="br0">&#41;</span><span class="br0">&#93;</span></div></li>\
<li class="li2"><div class="de2">&nbsp; &nbsp;<span class="re4"><span class="br0">&#91;</span><span class="kw3">String</span><span class="br0">&#93;</span></span><span class="re3">$KeyHash</span> <span class="sy0">=</span> <span class="st0">&quot;SHA1&quot;</span></div></li>\
<li class="li1"><div class="de1"><span class="br0">&#41;</span> &nbsp; </div></li>\
<li class="li2"><div class="de2">&nbsp; &nbsp;<span class="re3">$script</span>:PowerGrowler.<span class="me1">EncryptionAlgorithm</span> <span class="sy0">=</span> <span class="br0">&#91;</span>Growl.<span class="me1">Connector</span>.<span class="me1">Cryptography</span><span class="sy0">+</span>SymmetricAlgorithmType<span class="br0">&#93;</span>::<span class="st0">&quot;$Encryption&quot;</span></div></li>\
<li class="li1"><div class="de1">&nbsp; &nbsp;<span class="re3">$script</span>:PowerGrowler.<span class="me1">KeyHashAlgorithm</span> <span class="sy0">=</span> <span class="br0">&#91;</span>Growl.<span class="me1">Connector</span>.<span class="me1">Cryptography</span><span class="sy0">+</span>SymmetricAlgorithmType<span class="br0">&#93;</span>::<span class="st0">&quot;$KeyHash&quot;</span></div></li>\
<li class="li2"><div class="de2">&nbsp; &nbsp;<span class="re3">$script</span>:PowerGrowler.<span class="me1">Password</span> <span class="sy0">=</span> <span class="re3">$Password</span></div></li>\
<li class="li1"><div class="de1"><span class="br0">&#125;</span></div></li>\
<li class="li2"><div class="de2">&nbsp;</div></li>\
<li class="li1"><div class="de1"><span class="co1">## Register the &quot;PowerGrowler&quot; &quot;Default&quot; notice so everything works out of the box</span></div></li>\
<li class="li2"><div class="de2"><span class="re0">Register-<span class="re1">GrowlType</span></span> <span class="re3">$script</span>:AppName <span class="st0">&quot;Default&quot;</span> <span class="re2">-appIcon</span> <span class="st0">&quot;$PsScriptRoot\\default.ico&quot;</span></div></li>\
<li class="li1"><div class="de1">&nbsp;</div></li>\
<li class="li2"><div class="de2"><span class="kw1">function</span> <span class="re0">Register-<span class="re1">GrowlCallback</span></span> <span class="br0">&#123;</span></div></li>\
<li class="li1"><div class="de1"><span class="co1">#.Synopsis</span></div></li>\
<li class="li2"><div class="de2"><span class="co1"># &nbsp;Register a script to be called when each notice is finished. </span></div></li>\
<li class="li1"><div class="de1"><span class="co1">#.Description</span></div></li>\
<li class="li2"><div class="de2"><span class="co1"># &nbsp;Registers a scriptblock as a handler for the NotificationCallback event. You should accept two parameters, a Growl.Connector.Response and a Growl.Connector.CallbackData object.</span></div></li>\
<li class="li1"><div class="de1"><span class="co1"># &nbsp;</span></div></li>\
<li class="li2"><div class="de2"><span class="co1"># &nbsp;The NotificationCallback only happens when a callback is requested, which in this Growl library only happens if you pass both CallbackData and CallbackType to the Send-Growl function.</span></div></li>\
<li class="li1"><div class="de1"><span class="co1">#.Example</span></div></li>\
<li class="li2"><div class="de2"><span class="co1"># &nbsp;Register-GrowlCallback { PARAM( $response, $context )</span></div></li>\
<li class="li1"><div class="de1"><span class="co1"># &nbsp; &nbsp;Write-Host &quot;Response $($response|out-string)&quot; -fore Cyan</span></div></li>\
<li class="li2"><div class="de2"><span class="co1"># &nbsp; &nbsp;Write-Host &quot;Context $($context|fl|out-string)&quot; -fore Green</span></div></li>\
<li class="li1"><div class="de1"><span class="co1"># &nbsp; &nbsp;Write-Host $(&quot;Response Type: {0}`nNotification ID: {1}`nCallback Data: {2}`nCallback Data Type: {3}`n&quot; -f $context.Result, $context.NotificationID, $context.Data, $context.Type) -fore Yellow</span></div></li>\
<li class="li2"><div class="de2"><span class="co1"># &nbsp;}</span></div></li>\
<li class="li1"><div class="de1"><span class="co1">#</span></div></li>\
<li class="li2"><div class="de2"><span class="co1"># &nbsp;Registers an informational debugging-style handler. </span></div></li>\
<li class="li1"><div class="de1"><span class="co1">#</span></div></li>\
<li class="li2"><div class="de2"><span class="kw1">PARAM</span><span class="br0">&#40;</span></div></li>\
<li class="li1"><div class="de1"><span class="br0">&#91;</span>Parameter<span class="br0">&#40;</span>Mandatory<span class="sy0">=</span><span class="re3">$true</span><span class="br0">&#41;</span><span class="br0">&#93;</span></div></li>\
<li class="li2"><div class="de2"><span class="re4"><span class="br0">&#91;</span><span class="kw3">Scriptblock</span><span class="br0">&#93;</span></span><span class="re3">$Handler</span></div></li>\
<li class="li1"><div class="de1"><span class="br0">&#41;</span></div></li>\
<li class="li2"><div class="de2">&nbsp; &nbsp;<span class="re0">Register-<span class="re1">ObjectEvent</span></span> <span class="re3">$script</span>:PowerGrowler NotificationCallback <span class="re2">-Action</span> <span class="re3">$Handler</span></div></li>\
<li class="li1"><div class="de1"><span class="br0">&#125;</span></div></li>\
<li class="li2"><div class="de2">&nbsp;</div></li>\
<li class="li1"><div class="de1"><span class="kw1">function</span> <span class="re0">Send-<span class="re1">Growl</span></span> <span class="br0">&#123;</span></div></li>\
<li class="li2"><div class="de2"><span class="br0">&#91;</span>CmdletBinding<span class="br0">&#40;</span>DefaultParameterSetName<span class="sy0">=</span><span class="st0">&quot;DataCallback&quot;</span><span class="br0">&#41;</span><span class="br0">&#93;</span></div></li>\
<li class="li1"><div class="de1"><span class="co1">#.Synopsis</span></div></li>\
<li class="li2"><div class="de2"><span class="co1"># &nbsp;Send a growl notice</span></div></li>\
<li class="li1"><div class="de1"><span class="co1">#.Description</span></div></li>\
<li class="li2"><div class="de2"><span class="co1"># &nbsp;Send a growl notice with the scpecified values</span></div></li>\
<li class="li1"><div class="de1"><span class="co1">#.Parameter Caption</span></div></li>\
<li class="li2"><div class="de2"><span class="co1"># &nbsp;The short caption to display</span></div></li>\
<li class="li1"><div class="de1"><span class="co1">#.Parameter Message</span></div></li>\
<li class="li2"><div class="de2"><span class="co1"># &nbsp;The message to send (most displays will resize to accomodate)</span></div></li>\
<li class="li1"><div class="de1"><span class="co1">#.Parameter NoticeType</span></div></li>\
<li class="li2"><div class="de2"><span class="co1"># &nbsp;The type of notice to send. This MUST be the name of one of the registered types, and senders should bear in mind that each registered type has user-specified settings, so you should not abuse the types, but create your own for messages that will recur.</span></div></li>\
<li class="li1"><div class="de1"><span class="co1"># &nbsp;For example, the user settings allow certain messages to be disabled, set to a different &quot;Display&quot;, or to have their Duration and Stickyness changed, as well as have them be Forwarded to another device, have Sounds play, and set different priorities.</span></div></li>\
<li class="li2"><div class="de2"><span class="co1">#.Parameter Icon</span></div></li>\
<li class="li1"><div class="de1"><span class="co1"># &nbsp;Overrides the default icon of the message (accepts .ico, .png, .bmp, .jpg, .gif etc)</span></div></li>\
<li class="li2"><div class="de2"><span class="co1">#.Parameter Priority</span></div></li>\
<li class="li1"><div class="de1"><span class="co1"># &nbsp;Overrides the default priority of the message (use sparingly)</span></div></li>\
<li class="li2"><div class="de2"><span class="co1">#.Example</span></div></li>\
<li class="li1"><div class="de1"><span class="co1"># &nbsp;Send-Growl &quot;Greetings&quot; &quot;Hello World!&quot;</span></div></li>\
<li class="li2"><div class="de2"><span class="co1">#</span></div></li>\
<li class="li1"><div class="de1"><span class="co1"># &nbsp;The Hello World of Growl.</span></div></li>\
<li class="li2"><div class="de2"><span class="co1">#.Example</span></div></li>\
<li class="li1"><div class="de1"><span class="co1"># &nbsp;Send-Growl &quot;You\'ve got Mail!&quot; &quot;Message for you sir!&quot; -icon ~\\Icons\\mail.png</span></div></li>\
<li class="li2"><div class="de2"><span class="co1">#</span></div></li>\
<li class="li1"><div class="de1"><span class="co1"># &nbsp;Displays a message with a couple of movie quotes and a mail icon.</span></div></li>\
<li class="li2"><div class="de2"><span class="co1">#</span></div></li>\
<li class="li1"><div class="de1"><span class="kw1">PARAM</span> <span class="br0">&#40;</span></div></li>\
<li class="li2"><div class="de2">&nbsp; &nbsp;<span class="br0">&#91;</span>Parameter<span class="br0">&#40;</span>Mandatory<span class="sy0">=</span><span class="re3">$true</span>, Position<span class="sy0">=</span><span class="nu0">0</span><span class="br0">&#41;</span><span class="br0">&#93;</span></div></li>\
<li class="li1"><div class="de1">&nbsp; &nbsp;<span class="br0">&#91;</span>ValidateScript<span class="br0">&#40;</span> <span class="br0">&#123;</span><span class="re3">$global</span>:PowerGrowlerNotices.<span class="kw2">Contains</span><span class="br0">&#40;</span><span class="re3">$AppName</span><span class="br0">&#41;</span><span class="br0">&#125;</span> <span class="br0">&#41;</span><span class="br0">&#93;</span></div></li>\
<li class="li2"><div class="de2">&nbsp; &nbsp;<span class="re4"><span class="br0">&#91;</span><span class="kw3">string</span><span class="br0">&#93;</span></span><span class="re3">$AppName</span></div></li>\
<li class="li1"><div class="de1">,</div></li>\
<li class="li2"><div class="de2">&nbsp; &nbsp;<span class="br0">&#91;</span>Parameter<span class="br0">&#40;</span>Mandatory<span class="sy0">=</span><span class="re3">$true</span>, Position<span class="sy0">=</span><span class="nu0">1</span><span class="br0">&#41;</span><span class="br0">&#93;</span><span class="br0">&#91;</span>Alias<span class="br0">&#40;</span><span class="st0">&quot;Type&quot;</span><span class="br0">&#41;</span><span class="br0">&#93;</span> &nbsp; </div></li>\
<li class="li1"><div class="de1">&nbsp; &nbsp;<span class="br0">&#91;</span>ValidateScript<span class="br0">&#40;</span> <span class="br0">&#123;</span><span class="re3">$global</span>:PowerGrowlerNotices.<span class="re3">$AppName</span>.<span class="me1">Notices</span>.<span class="me1">ContainsKey</span><span class="br0">&#40;</span><span class="re3">$_</span><span class="br0">&#41;</span><span class="br0">&#125;</span> <span class="br0">&#41;</span><span class="br0">&#93;</span> &nbsp; </div></li>\
<li class="li2"><div class="de2">&nbsp; &nbsp;<span class="re4"><span class="br0">&#91;</span><span class="kw3">string</span><span class="br0">&#93;</span></span><span class="re3">$NoticeType</span></div></li>\
<li class="li1"><div class="de1">,</div></li>\
<li class="li2"><div class="de2">&nbsp; &nbsp;<span class="br0">&#91;</span>Parameter<span class="br0">&#40;</span>Mandatory<span class="sy0">=</span><span class="re3">$true</span>, Position<span class="sy0">=</span><span class="nu0">2</span><span class="br0">&#41;</span><span class="br0">&#93;</span></div></li>\
<li class="li1"><div class="de1">&nbsp; &nbsp;<span class="re4"><span class="br0">&#91;</span><span class="kw3">string</span><span class="br0">&#93;</span></span><span class="re3">$Caption</span></div></li>\
<li class="li2"><div class="de2">,</div></li>\
<li class="li1"><div class="de1">&nbsp; &nbsp;<span class="br0">&#91;</span>Parameter<span class="br0">&#40;</span>Mandatory<span class="sy0">=</span><span class="re3">$true</span>, Position<span class="sy0">=</span><span class="nu0">3</span><span class="br0">&#41;</span><span class="br0">&#93;</span></div></li>\
<li class="li2"><div class="de2">&nbsp; &nbsp;<span class="re4"><span class="br0">&#91;</span><span class="kw3">string</span><span class="br0">&#93;</span></span><span class="re3">$Message</span></div></li>\
<li class="li1"><div class="de1">,</div></li>\
<li class="li2"><div class="de2">&nbsp; &nbsp;<span class="br0">&#91;</span>Parameter<span class="br0">&#40;</span>Mandatory<span class="sy0">=</span><span class="re3">$true</span>, Position<span class="sy0">=</span><span class="nu0">4</span>, ParameterSetName<span class="sy0">=</span><span class="st0">&quot;UrlCallback&quot;</span><span class="br0">&#41;</span><span class="br0">&#93;</span></div></li>\
<li class="li1"><div class="de1">&nbsp; &nbsp;<span class="re4"><span class="br0">&#91;</span>Uri<span class="br0">&#93;</span></span><span class="re3">$Url</span></div></li>\
<li class="li2"><div class="de2">, &nbsp;</div></li>\
<li class="li1"><div class="de1">&nbsp; &nbsp;<span class="br0">&#91;</span>Parameter<span class="br0">&#40;</span>Mandatory<span class="sy0">=</span><span class="re3">$true</span>, Position<span class="sy0">=</span><span class="nu0">4</span>, ParameterSetName<span class="sy0">=</span><span class="st0">&quot;DataCallback&quot;</span><span class="br0">&#41;</span><span class="br0">&#93;</span></div></li>\
<li class="li2"><div class="de2">&nbsp; &nbsp;<span class="re4"><span class="br0">&#91;</span><span class="kw3">string</span><span class="br0">&#93;</span></span><span class="re3">$CallbackData</span></div></li>\
<li class="li1"><div class="de1">, &nbsp;</div></li>\
<li class="li2"><div class="de2">&nbsp; &nbsp;<span class="br0">&#91;</span>Parameter<span class="br0">&#40;</span>Mandatory<span class="sy0">=</span><span class="re3">$true</span>, Position<span class="sy0">=</span><span class="nu0">5</span>, ParameterSetName<span class="sy0">=</span><span class="st0">&quot;DataCallback&quot;</span><span class="br0">&#41;</span><span class="br0">&#93;</span></div></li>\
<li class="li1"><div class="de1">&nbsp; &nbsp;<span class="re4"><span class="br0">&#91;</span><span class="kw3">string</span><span class="br0">&#93;</span></span><span class="re3">$CallbackType</span></div></li>\
<li class="li2"><div class="de2">,</div></li>\
<li class="li1"><div class="de1">&nbsp; &nbsp;<span class="re4"><span class="br0">&#91;</span><span class="kw3">string</span><span class="br0">&#93;</span></span><span class="re3">$Icon</span></div></li>\
<li class="li2"><div class="de2">,</div></li>\
<li class="li1"><div class="de1">&nbsp; &nbsp;<span class="re4"><span class="br0">&#91;</span>Growl.<span class="me1">Connector</span>.<span class="me1">Priority</span><span class="br0">&#93;</span></span><span class="re3">$Priority</span> <span class="sy0">=</span> <span class="st0">&quot;Normal&quot;</span> </div></li>\
<li class="li2"><div class="de2"><span class="br0">&#41;</span></div></li>\
<li class="li1"><div class="de1">&nbsp;</div></li>\
<li class="li2"><div class="de2">&nbsp; &nbsp;<span class="re3">$notice</span> <span class="sy0">=</span> <span class="re0">New-<span class="re1">Object</span></span> Growl.<span class="me1">Connector</span>.<span class="me1">Notification</span> <span class="re3">$appName</span>, <span class="re3">$NoticeType</span>, <span class="br0">&#40;</span><span class="re0">Get-<span class="re1">Date</span></span><span class="br0">&#41;</span>.<span class="me1">Ticks</span>.<span class="me1">ToString</span><span class="br0">&#40;</span><span class="br0">&#41;</span>, <span class="re3">$caption</span>, <span class="re3">$Message</span></div></li>\
<li class="li1"><div class="de1">&nbsp; &nbsp;</div></li>\
<li class="li2"><div class="de2">&nbsp; &nbsp;<span class="kw1">if</span><span class="br0">&#40;</span><span class="re3">$Icon</span><span class="br0">&#41;</span> <span class="br0">&#123;</span> <span class="re3">$notice</span>.<span class="me1">Icon</span> <span class="sy0">=</span> <span class="re0">Convert-<span class="re1">Path</span></span> <span class="br0">&#40;</span><span class="re0">Resolve-<span class="re1">Path</span></span> <span class="re3">$Icon</span><span class="br0">&#41;</span> <span class="br0">&#125;</span></div></li>\
<li class="li1"><div class="de1">&nbsp; &nbsp;<span class="kw1">if</span><span class="br0">&#40;</span><span class="re3">$Priority</span><span class="br0">&#41;</span> <span class="br0">&#123;</span> <span class="re3">$notice</span>.<span class="me1">Priority</span> <span class="sy0">=</span> <span class="re3">$Priority</span> <span class="br0">&#125;</span></div></li>\
<li class="li2"><div class="de2">&nbsp; &nbsp;</div></li>\
<li class="li1"><div class="de1">&nbsp; &nbsp;<span class="kw1">if</span><span class="br0">&#40;</span><span class="re3">$DebugPreference</span> <span class="re2">-gt</span> <span class="st0">&quot;SilentlyContinue&quot;</span><span class="br0">&#41;</span> <span class="br0">&#123;</span> <span class="re0">Write-<span class="re1">Output</span></span> <span class="re3">$notice</span> <span class="br0">&#125;</span></div></li>\
<li class="li2"><div class="de2">&nbsp; &nbsp;<span class="kw1">if</span><span class="br0">&#40;</span> <span class="re0">Test-<span class="re1">Path</span></span> Variable:Local:Url <span class="br0">&#41;</span> <span class="br0">&#123;</span></div></li>\
<li class="li1"><div class="de1">&nbsp; &nbsp; &nbsp; <span class="re3">$context</span> <span class="sy0">=</span> <span class="re0">new-<span class="re1">object</span></span> Growl.<span class="me1">Connector</span>.<span class="me1">CallbackContext</span></div></li>\
<li class="li2"><div class="de2">&nbsp; &nbsp; &nbsp; <span class="co1">## These two things aren\'t used? Probably shouldn\'t so all this work :)</span></div></li>\
<li class="li1"><div class="de1">&nbsp; &nbsp; &nbsp; <span class="re3">$context</span>.<span class="kw1">Data</span> <span class="sy0">=</span> $<span class="br0">&#40;</span><span class="kw1">if</span><span class="br0">&#40;</span><span class="re0">Test-<span class="re1">Path</span></span> Variable:Local:CallbackData<span class="br0">&#41;</span><span class="br0">&#123;</span><span class="re3">$CallbackData</span><span class="br0">&#125;</span><span class="kw1">else</span><span class="br0">&#123;</span><span class="re3">$Url</span>.<span class="me1">ToString</span><span class="br0">&#40;</span><span class="br0">&#41;</span><span class="br0">&#125;</span><span class="br0">&#41;</span></div></li>\
<li class="li2"><div class="de2">&nbsp; &nbsp; &nbsp; <span class="re3">$context</span>.<span class="kw3">Type</span> <span class="sy0">=</span> $<span class="br0">&#40;</span><span class="kw1">if</span><span class="br0">&#40;</span><span class="re0">Test-<span class="re1">Path</span></span> Variable:Local:CallbackType<span class="br0">&#41;</span><span class="br0">&#123;</span><span class="re3">$CallbackType</span><span class="br0">&#125;</span><span class="kw1">else</span><span class="br0">&#123;</span><span class="st0">&quot;$NoticeType+Url&quot;</span><span class="br0">&#125;</span><span class="br0">&#41;</span></div></li>\
<li class="li1"><div class="de1">&nbsp; &nbsp; &nbsp; <span class="re3">$urlCb</span> <span class="sy0">=</span> <span class="re0">new-<span class="re1">object</span></span> Growl.<span class="me1">Connector</span>.<span class="me1">UrlCallbackTarget</span></div></li>\
<li class="li2"><div class="de2">&nbsp; &nbsp; &nbsp; <span class="re0">Write-<span class="re1">Host</span></span> <span class="re3">$Url</span> <span class="re2">-Fore</span> Cyan</div></li>\
<li class="li1"><div class="de1">&nbsp; &nbsp; &nbsp; <span class="re3">$urlCb</span>.<span class="me1">Url</span> <span class="sy0">=</span> <span class="re3">$Url</span></div></li>\
<li class="li2"><div class="de2">&nbsp; &nbsp; &nbsp; <span class="re3">$context</span>.<span class="me1">SetUrlCallbackTarget</span><span class="br0">&#40;</span><span class="re3">$urlcb</span><span class="br0">&#41;</span></div></li>\
<li class="li1"><div class="de1">&nbsp; &nbsp; &nbsp; <span class="re3">$script</span>:PowerGrowler.<span class="me1">Notify</span><span class="br0">&#40;</span><span class="re3">$notice</span>, <span class="re3">$context</span><span class="br0">&#41;</span></div></li>\
<li class="li2"><div class="de2">&nbsp; &nbsp;<span class="br0">&#125;</span> <span class="kw1">elseif</span><span class="br0">&#40;</span> <span class="br0">&#40;</span><span class="re0">Test-<span class="re1">Path</span></span> Variable:Local:CallbackData<span class="br0">&#41;</span> <span class="re2">-and</span> <span class="br0">&#40;</span><span class="re0">Test-<span class="re1">Path</span></span> Variable:Local:CallbackType<span class="br0">&#41;</span> <span class="br0">&#41;</span> <span class="br0">&#123;</span></div></li>\
<li class="li1"><div class="de1">&nbsp; &nbsp; &nbsp; <span class="re3">$context</span> <span class="sy0">=</span> <span class="re0">new-<span class="re1">object</span></span> Growl.<span class="me1">Connector</span>.<span class="me1">CallbackContext</span></div></li>\
<li class="li2"><div class="de2">&nbsp; &nbsp; &nbsp; <span class="re3">$context</span>.<span class="kw1">Data</span> <span class="sy0">=</span> <span class="re3">$CallbackData</span></div></li>\
<li class="li1"><div class="de1">&nbsp; &nbsp; &nbsp; <span class="re3">$context</span>.<span class="kw3">Type</span> <span class="sy0">=</span> <span class="re3">$CallbackType</span></div></li>\
<li class="li2"><div class="de2">&nbsp; &nbsp; &nbsp; <span class="re0">Write-<span class="re1">Host</span></span> <span class="re3">$context</span>.<span class="me1">GetUrlCallbackTarget</span><span class="br0">&#40;</span><span class="br0">&#41;</span> <span class="re2">-Fore</span> Magenta</div></li>\
<li class="li1"><div class="de1">&nbsp; &nbsp; &nbsp; <span class="re3">$script</span>:PowerGrowler.<span class="me1">Notify</span><span class="br0">&#40;</span><span class="re3">$notice</span>, <span class="re3">$context</span><span class="br0">&#41;</span></div></li>\
<li class="li2"><div class="de2">&nbsp; &nbsp;<span class="br0">&#125;</span> <span class="kw1">else</span> <span class="br0">&#123;</span> &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;</div></li>\
<li class="li1"><div class="de1">&nbsp; &nbsp; &nbsp; <span class="re3">$script</span>:PowerGrowler.<span class="me1">Notify</span><span class="br0">&#40;</span><span class="re3">$notice</span><span class="br0">&#41;</span></div></li>\
<li class="li2"><div class="de2">&nbsp; &nbsp;<span class="br0">&#125;</span></div></li>\
<li class="li1"><div class="de1"><span class="br0">&#125;</span></div></li>\
<li class="li2"><div class="de2">&nbsp;</div></li>\
<li class="li1"><div class="de1"><span class="re0">Export-<span class="re1">ModuleMember</span></span> <span class="re2">-Function</span> <span class="re0">Send-<span class="re1">Growl</span></span>, <span class="re0">Set-<span class="re1">GrowlPassword</span></span>, <span class="re0">Register-<span class="re1">GrowlCallback</span></span>, <span class="re0">Register-<span class="re1">GrowlType</span></span></div></li>\
</ol></div>');document.write('<div class="poshcredit"><a style="float:right;" href="http://poshcode.org/get/1276" title="download file">download</a><a href="http://poshcode.org/?show=1276" title="full view">This Script</a> brought to you by <a href="http://PoshCode.org">PoshCode</a>\
</div>\
</div>\
</div>');