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"># Version History</span></div></li>\
<li class="li2"><div class="de2"><span class="co1"># 1.1 - Added aliases, error handling, help, and cleanup</span></div></li>\
<li class="li1"><div class="de1">&nbsp;</div></li>\
<li class="li2"><div class="de2"><span class="re3">$MyInvocation</span>.<span class="me1">MyCommand</span>.<span class="kw3">ScriptBlock</span>.<span class="me1">Module</span>.<span class="me1">OnRemove</span> <span class="sy0">=</span> <span class="br0">&#123;</span> </div></li>\
<li class="li1"><div class="de1">&nbsp; &nbsp;<span class="kw1">while</span><span class="br0">&#40;</span><span class="re3">$script</span>:ImpContextStack.<span class="me1">Count</span><span class="br0">&#41;</span> <span class="br0">&#123;</span> <span class="re0">Pop-<span class="re1">ImpersonationContext</span></span> <span class="br0">&#125;</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"><span class="re3">$script</span>:UserToysClass <span class="sy0">=</span> <span class="re0">Add-<span class="re1">Type</span></span> <span class="re2">-Namespace</span> Huddled <span class="re2">-Name</span> UserToys <span class="re2">-MemberDefinition</span> @<span class="st0">&quot;</span></div></li>\
<li class="li1"><div class="de1"><span class="st0"> &nbsp; // http://msdn.microsoft.com/en-us/library/aa378184.aspx</span></div></li>\
<li class="li2"><div class="de2"><span class="st0"> &nbsp; [DllImport(&quot;</span>advapi32.<span class="me1">dll</span><span class="st0">&quot;, SetLastError = true)]</span></div></li>\
<li class="li1"><div class="de1"><span class="st0"> &nbsp; public static extern bool LogonUser(string lpszUsername, string lpszDomain, string lpszPassword, int dwLogonType, int dwLogonProvider, ref IntPtr phToken);</span></div></li>\
<li class="li2"><div class="de2">&nbsp;</div></li>\
<li class="li1"><div class="de1"><span class="st0"> &nbsp; // http://msdn.microsoft.com/en-us/library/aa379317.aspx</span></div></li>\
<li class="li2"><div class="de2"><span class="st0"> &nbsp; [DllImport(&quot;</span>advapi32.<span class="me1">dll</span><span class="st0">&quot;, SetLastError=true)]</span></div></li>\
<li class="li1"><div class="de1"><span class="st0"> &nbsp; public static extern bool RevertToSelf();</span></div></li>\
<li class="li2"><div class="de2"><span class="st0">&quot;</span>@ <span class="re2">-passthru</span></div></li>\
<li class="li1"><div class="de1">&nbsp;</div></li>\
<li class="li2"><div class="de2"><span class="re3">$script</span>:ImpContextStack <span class="sy0">=</span> <span class="re0">new-<span class="re1">object</span></span> System.<span class="me1">Collections</span>.<span class="me1">Generic</span>.<span class="me1">Stack</span><span class="re4"><span class="br0">&#91;</span>System.<span class="me1">Security</span>.<span class="me1">Principal</span>.<span class="me1">WindowsImpersonationContext</span><span class="br0">&#93;</span></span></div></li>\
<li class="li1"><div class="de1"><span class="re3">$script</span>:IdStack <span class="sy0">=</span> <span class="re0">new-<span class="re1">object</span></span> System.<span class="me1">Collections</span>.<span class="me1">Generic</span>.<span class="me1">Stack</span><span class="re4"><span class="br0">&#91;</span>System.<span class="me1">Security</span>.<span class="me1">Principal</span>.<span class="me1">WindowsIdentity</span><span class="br0">&#93;</span></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">Push-<span class="re1">ImpersonationContext</span></span> <span class="br0">&#123;</span></div></li>\
<li class="li2"><div class="de2"><span class="coMULTI">&lt;#</span></div></li>\
<li class="li1"><div class="de1"><span class="coMULTI">.SYNOPSIS</span></div></li>\
<li class="li2"><div class="de2"><span class="coMULTI">&nbsp; &nbsp;Sets the network credentials for the current thread</span></div></li>\
<li class="li1"><div class="de1"><span class="coMULTI">.Description</span></div></li>\
<li class="li2"><div class="de2"><span class="coMULTI">&nbsp; &nbsp;Stores an identity on the stack and impersonate it for network connections</span></div></li>\
<li class="li1"><div class="de1"><span class="coMULTI">.Parameter Credential</span></div></li>\
<li class="li2"><div class="de2"><span class="coMULTI">&nbsp; &nbsp;Credentials for authenticating as a new identity.</span></div></li>\
<li class="li1"><div class="de1"><span class="coMULTI">.Parameter Name</span></div></li>\
<li class="li2"><div class="de2"><span class="coMULTI">&nbsp; &nbsp;A user name for authenticating as a new identity.</span></div></li>\
<li class="li1"><div class="de1"><span class="coMULTI">.Parameter Password</span></div></li>\
<li class="li2"><div class="de2"><span class="coMULTI">&nbsp; &nbsp;The password (as a String or SecureString) for authenticating as a new identity</span></div></li>\
<li class="li1"><div class="de1"><span class="coMULTI">.Parameter Domain</span></div></li>\
<li class="li2"><div class="de2"><span class="coMULTI">&nbsp; &nbsp;The domain which goes with the user name for authentication. This is optional, as you can specify a domain or computer name as part of the name using domain\\user or user@domain syntax.</span></div></li>\
<li class="li1"><div class="de1"><span class="coMULTI">.Parameter Passthru</span></div></li>\
<li class="li2"><div class="de2"><span class="coMULTI">&nbsp; &nbsp;Causes Push-ImpersonationContext to output the WindowsIdentity that it\'s impersonating (not the impersonation context).</span></div></li>\
<li class="li1"><div class="de1"><span class="coMULTI">.Example</span></div></li>\
<li class="li2"><div class="de2"><span class="coMULTI">&nbsp; &nbsp;Push-ImpersonationContext (Get-Credential)</span></div></li>\
<li class="li1"><div class="de1"><span class="coMULTI">.Example</span></div></li>\
<li class="li2"><div class="de2"><span class="coMULTI">&nbsp; &nbsp;Push-ImpersonationContext username@domain (Read-Host &quot;Password&quot; -AsSecureString)</span></div></li>\
<li class="li1"><div class="de1"><span class="coMULTI">.Example</span></div></li>\
<li class="li2"><div class="de2"><span class="coMULTI">&nbsp; &nbsp;$Domain1 = Get-Credential</span></div></li>\
<li class="li1"><div class="de1"><span class="coMULTI">&nbsp; &nbsp;$Id1 = PushIC $Domain1 -Passthru</span></div></li>\
<li class="li2"><div class="de2"><span class="coMULTI">#&gt;</span></div></li>\
<li class="li1"><div class="de1"><span class="br0">&#91;</span>CmdletBinding<span class="br0">&#40;</span>DefaultParameterSetName<span class="sy0">=</span><span class="st0">&quot;Credential&quot;</span><span class="br0">&#41;</span><span class="br0">&#93;</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>Position<span class="sy0">=</span><span class="nu0">0</span>,Mandatory<span class="sy0">=</span><span class="re3">$true</span>,ParameterSetName<span class="sy0">=</span><span class="st0">&quot;Credential&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>System.<span class="me1">Management</span>.<span class="me1">Automation</span>.<span class="me1">PSCredential</span><span class="br0">&#93;</span></span><span class="re3">$Credential</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>Position<span class="sy0">=</span><span class="nu0">0</span>,Mandatory<span class="sy0">=</span><span class="re3">$true</span>,ParameterSetName<span class="sy0">=</span><span class="st0">&quot;Identity&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>Security.<span class="me1">Principal</span>.<span class="me1">WindowsIdentity</span><span class="br0">&#93;</span></span><span class="re3">$Identity</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>Position<span class="sy0">=</span><span class="nu0">0</span>,Mandatory<span class="sy0">=</span><span class="re3">$true</span>,ParameterSetName<span class="sy0">=</span><span class="st0">&quot;Password&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">$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>Position<span class="sy0">=</span><span class="nu0">1</span>,Mandatory<span class="sy0">=</span><span class="re3">$true</span>,ParameterSetName<span class="sy0">=</span><span class="st0">&quot;Password&quot;</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>Alias<span class="br0">&#40;</span><span class="st0">&quot;PW&quot;</span><span class="br0">&#41;</span><span class="br0">&#93;</span></div></li>\
<li class="li2"><div class="de2">&nbsp; &nbsp;<span class="re3">$Password</span> <span class="sy0">=</span> <span class="br0">&#40;</span><span class="re0">Read-<span class="re1">Host</span></span> <span class="st0">&quot;Password&quot;</span> <span class="re2">-AsSecureString</span><span class="br0">&#41;</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>Position<span class="sy0">=</span><span class="nu0">2</span>,Mandatory<span class="sy0">=</span><span class="re3">$false</span>,ParameterSetName<span class="sy0">=</span><span class="st0">&quot;Password&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">$Domain</span></div></li>\
<li class="li2"><div class="de2">,</div></li>\
<li class="li1"><div class="de1">&nbsp; &nbsp;<span class="br0">&#91;</span>Alias<span class="br0">&#40;</span><span class="st0">&quot;PT&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="kw1">switch</span><span class="br0">&#93;</span></span><span class="re3">$Passthru</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="kw1">if</span><span class="br0">&#40;</span><span class="sy0">!</span><span class="re3">$Identity</span><span class="br0">&#41;</span> <span class="br0">&#123;</span></div></li>\
<li class="li1"><div class="de1">&nbsp; &nbsp; &nbsp; <span class="kw1">if</span><span class="br0">&#40;</span><span class="sy0">!</span><span class="re3">$Credential</span><span class="br0">&#41;</span> <span class="br0">&#123;</span></div></li>\
<li class="li2"><div class="de2">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;<span class="kw1">if</span><span class="br0">&#40;</span><span class="re3">$password</span> <span class="re2">-is</span> <span class="re4"><span class="br0">&#91;</span><span class="kw3">string</span><span class="br0">&#93;</span></span><span class="br0">&#41;</span> <span class="br0">&#123;</span></div></li>\
<li class="li1"><div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="re3">$secure</span> <span class="sy0">=</span> <span class="re0">New-<span class="re1">Object</span></span> System.<span class="me1">Security</span>.<span class="me1">SecureString</span></div></li>\
<li class="li2"><div class="de2">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="re3">$password</span>.<span class="me1">GetEnumerator</span><span class="br0">&#40;</span><span class="br0">&#41;</span> <span class="sy0">|</span> <span class="sy0">%</span><span class="br0">&#123;</span> <span class="re3">$secure</span>.<span class="me1">AppendChar</span><span class="br0">&#40;</span> <span class="re3">$_</span> <span class="br0">&#41;</span> <span class="br0">&#125;</span></div></li>\
<li class="li1"><div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="re3">$password</span> <span class="sy0">=</span> <span class="re3">$secure</span></div></li>\
<li class="li2"><div class="de2">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;<span class="br0">&#125;</span></div></li>\
<li class="li1"><div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;<span class="kw1">if</span><span class="br0">&#40;</span><span class="re3">$domain</span><span class="br0">&#41;</span> <span class="br0">&#123;</span></div></li>\
<li class="li2"><div class="de2">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="re3">$user</span> <span class="sy0">=</span> <span class="st0">&quot;${name}@${domain}&quot;</span></div></li>\
<li class="li1"><div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;<span class="br0">&#125;</span></div></li>\
<li class="li2"><div class="de2">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;<span class="re3">$Credential</span> <span class="sy0">=</span> <span class="re0">new-<span class="re1">object</span></span> System.<span class="me1">Management</span>.<span class="me1">Automation</span>.<span class="me1">PSCredential</span> <span class="re3">$user</span>, <span class="re3">$password</span></div></li>\
<li class="li1"><div class="de1">&nbsp; &nbsp; &nbsp; <span class="br0">&#125;</span></div></li>\
<li class="li2"><div class="de2">&nbsp;</div></li>\
<li class="li1"><div class="de1">&nbsp; &nbsp; &nbsp; <span class="re0">Write-<span class="re1">Verbose</span></span> <span class="br0">&#40;</span><span class="re4"><span class="br0">&#91;</span>Security.<span class="me1">Principal</span>.<span class="me1">WindowsIdentity</span><span class="br0">&#93;</span></span>::<span class="me2">GetCurrent</span><span class="br0">&#40;</span><span class="br0">&#41;</span> <span class="sy0">|</span> <span class="re0">Format-<span class="re1">Table</span></span> Name, Token, User, Groups <span class="re2">-Auto</span> <span class="sy0">|</span> <span class="re0">Out-<span class="re1">String</span></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="re4"><span class="br0">&#91;</span>IntPtr<span class="br0">&#93;</span></span><span class="re3">$userToken</span> <span class="sy0">=</span> <span class="re4"><span class="br0">&#91;</span>Security.<span class="me1">Principal</span>.<span class="me1">WindowsIdentity</span><span class="br0">&#93;</span></span>::<span class="me2">GetCurrent</span><span class="br0">&#40;</span><span class="br0">&#41;</span>.<span class="me1">Token</span></div></li>\
<li class="li2"><div class="de2">&nbsp; &nbsp; &nbsp; <span class="kw1">if</span><span class="br0">&#40;</span><span class="sy0">!</span><span class="re3">$UserToysClass</span>::<span class="me2">LogonUser</span><span class="br0">&#40;</span> </div></li>\
<li class="li1"><div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="re3">$Credential</span>.<span class="me1">GetNetworkCredential</span><span class="br0">&#40;</span><span class="br0">&#41;</span>.<span class="me1">UserName</span>, </div></li>\
<li class="li2"><div class="de2">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="re3">$Credential</span>.<span class="me1">GetNetworkCredential</span><span class="br0">&#40;</span><span class="br0">&#41;</span>.<span class="me1">Domain</span>, </div></li>\
<li class="li1"><div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="re3">$Credential</span>.<span class="me1">GetNetworkCredential</span><span class="br0">&#40;</span><span class="br0">&#41;</span>.<span class="me1">Password</span>, <span class="nu0">9</span>, <span class="nu0">0</span>, <span class="re4"><span class="br0">&#91;</span><span class="kw3">ref</span><span class="br0">&#93;</span></span><span class="re3">$userToken</span><span class="br0">&#41;</span></div></li>\
<li class="li2"><div class="de2">&nbsp; &nbsp; &nbsp; <span class="br0">&#41;</span> <span class="br0">&#123;</span></div></li>\
<li class="li1"><div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;<span class="kw1">throw</span> <span class="br0">&#40;</span><span class="re0">new-<span class="re1">object</span></span> System.<span class="me1">ComponentModel</span>.<span class="me1">Win32Exception</span><span class="br0">&#40;</span> <span class="re4"><span class="br0">&#91;</span>System.<span class="me1">Runtime</span>.<span class="me1">InteropServices</span>.<span class="me1">Marshal</span><span class="br0">&#93;</span></span>::<span class="me2">GetLastWin32Error</span><span class="br0">&#40;</span><span class="br0">&#41;</span> <span class="br0">&#41;</span> <span class="br0">&#41;</span></div></li>\
<li class="li2"><div class="de2">&nbsp; &nbsp; &nbsp; <span class="br0">&#125;</span></div></li>\
<li class="li1"><div class="de1">&nbsp;</div></li>\
<li class="li2"><div class="de2">&nbsp; &nbsp; &nbsp; <span class="re3">$Identity</span> <span class="sy0">=</span> <span class="re0">New-<span class="re1">Object</span></span> Security.<span class="me1">Principal</span>.<span class="me1">WindowsIdentity</span> <span class="re3">$userToken</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="re3">$script</span>:IdStack.<span class="me1">Push</span><span class="br0">&#40;</span> <span class="re3">$Identity</span> <span class="br0">&#41;</span></div></li>\
<li class="li1"><div class="de1">&nbsp; &nbsp;</div></li>\
<li class="li2"><div class="de2">&nbsp; &nbsp;<span class="re3">$context</span> <span class="sy0">=</span> <span class="re3">$Identity</span>.<span class="me1">Impersonate</span><span class="br0">&#40;</span><span class="br0">&#41;</span></div></li>\
<li class="li1"><div class="de1">&nbsp; &nbsp;<span class="re3">$null</span> <span class="sy0">=</span> <span class="re3">$script</span>:ImpContextStack.<span class="me1">Push</span><span class="br0">&#40;</span> <span class="re3">$context</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="re0">Write-<span class="re1">Verbose</span></span> <span class="br0">&#40;</span><span class="re4"><span class="br0">&#91;</span>Security.<span class="me1">Principal</span>.<span class="me1">WindowsIdentity</span><span class="br0">&#93;</span></span>::<span class="me2">GetCurrent</span><span class="br0">&#40;</span><span class="br0">&#41;</span> <span class="sy0">|</span> <span class="re0">Format-<span class="re1">Table</span></span> Name, Token, User, Groups <span class="re2">-Auto</span> <span class="sy0">|</span> <span class="re0">Out-<span class="re1">String</span></span><span class="br0">&#41;</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">$Passthru</span><span class="br0">&#41;</span> <span class="br0">&#123;</span> <span class="re3">$script</span>:IdStack.<span class="me1">Peek</span><span class="br0">&#40;</span><span class="br0">&#41;</span> <span class="br0">&#125;</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"><span class="kw1">function</span> <span class="re0">Pop-<span class="re1">ImpersonationContext</span></span> <span class="br0">&#123;</span></div></li>\
<li class="li1"><div class="de1"><span class="coMULTI">&lt;#</span></div></li>\
<li class="li2"><div class="de2"><span class="coMULTI">.Synopsis</span></div></li>\
<li class="li1"><div class="de1"><span class="coMULTI">&nbsp; &nbsp;Remove the current impersonation context from the stack and clean it up</span></div></li>\
<li class="li2"><div class="de2"><span class="coMULTI">.Description</span></div></li>\
<li class="li1"><div class="de1"><span class="coMULTI">&nbsp; &nbsp;Pops the current impersonation context from the stack and undo and dispose it, leaving the former context in place.</span></div></li>\
<li class="li2"><div class="de2"><span class="coMULTI">.Param Passthru</span></div></li>\
<li class="li1"><div class="de1"><span class="coMULTI">&nbsp; &nbsp;Output the old WindowsIdentity before popping it.</span></div></li>\
<li class="li2"><div class="de2"><span class="coMULTI">#&gt;</span></div></li>\
<li class="li1"><div class="de1">&nbsp; &nbsp;<span class="kw1">param</span><span class="br0">&#40;</span> <span class="re4"><span class="br0">&#91;</span><span class="kw1">switch</span><span class="br0">&#93;</span></span><span class="re3">$Passthru</span> <span class="br0">&#41;</span></div></li>\
<li class="li2"><div class="de2">&nbsp; &nbsp;<span class="kw1">trap</span> <span class="br0">&#123;</span> </div></li>\
<li class="li1"><div class="de1">&nbsp; &nbsp; &nbsp; <span class="re0">Write-<span class="re1">Error</span></span> <span class="st0">&quot;Impersonation Context Stack is Empty&quot;</span></div></li>\
<li class="li2"><div class="de2">&nbsp; &nbsp; &nbsp; <span class="kw1">while</span><span class="br0">&#40;</span><span class="re3">$script</span>:ImpContextStack.<span class="me1">Count</span> <span class="re2">-lt</span> <span class="re3">$script</span>:IdStack.<span class="me1">Count</span><span class="br0">&#41;</span> <span class="br0">&#123;</span> <span class="re3">$null</span> <span class="sy0">=</span> <span class="re3">$script</span>:IdStack.<span class="me1">Pop</span><span class="br0">&#40;</span><span class="br0">&#41;</span> <span class="br0">&#125;</span></div></li>\
<li class="li1"><div class="de1">&nbsp; &nbsp; &nbsp; <span class="kw1">return</span></div></li>\
<li class="li2"><div class="de2">&nbsp; &nbsp;<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">$Passthru</span><span class="br0">&#41;</span> <span class="br0">&#123;</span> <span class="re3">$script</span>:IdStack.<span class="me1">Peek</span><span class="br0">&#40;</span><span class="br0">&#41;</span> <span class="br0">&#125;</span></div></li>\
<li class="li2"><div class="de2">&nbsp; &nbsp;<span class="re3">$context</span> <span class="sy0">=</span> <span class="re3">$script</span>:ImpContextStack.<span class="me1">Pop</span><span class="br0">&#40;</span><span class="br0">&#41;</span></div></li>\
<li class="li1"><div class="de1">&nbsp; &nbsp;<span class="re3">$null</span> <span class="sy0">=</span> <span class="re3">$script</span>:IdStack.<span class="me1">Pop</span><span class="br0">&#40;</span><span class="br0">&#41;</span></div></li>\
<li class="li2"><div class="de2">&nbsp; &nbsp;</div></li>\
<li class="li1"><div class="de1">&nbsp; &nbsp;<span class="re3">$context</span>.<span class="me1">Undo</span><span class="br0">&#40;</span><span class="br0">&#41;</span>;</div></li>\
<li class="li2"><div class="de2">&nbsp; &nbsp;<span class="re3">$context</span>.<span class="me1">Dispose</span><span class="br0">&#40;</span><span class="br0">&#41;</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">Get-<span class="re1">ImpersonationContext</span></span> <span class="br0">&#123;</span></div></li>\
<li class="li2"><div class="de2"><span class="coMULTI">&lt;#</span></div></li>\
<li class="li1"><div class="de1"><span class="coMULTI">.Synopsis</span></div></li>\
<li class="li2"><div class="de2"><span class="coMULTI">&nbsp; &nbsp;Display the currently active WindowsIdentity</span></div></li>\
<li class="li1"><div class="de1"><span class="coMULTI">#&gt;</span></div></li>\
<li class="li2"><div class="de2">&nbsp; &nbsp;<span class="kw1">trap</span> <span class="br0">&#123;</span> </div></li>\
<li class="li1"><div class="de1">&nbsp; &nbsp; &nbsp; <span class="re0">Write-<span class="re1">Error</span></span> <span class="st0">&quot;Impersonation Context Stack is Empty&quot;</span></div></li>\
<li class="li2"><div class="de2">&nbsp; &nbsp; &nbsp; <span class="kw1">return</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="re0">Write-<span class="re1">Host</span></span> <span class="st0">&quot;There are $($script:ImpContextStack.Count) contexts on the stack&quot;</span></div></li>\
<li class="li1"><div class="de1">&nbsp; &nbsp;<span class="kw1">while</span><span class="br0">&#40;</span><span class="re3">$script</span>:ImpContextStack.<span class="me1">Count</span> <span class="re2">-lt</span> <span class="re3">$script</span>:IdStack.<span class="me1">Count</span><span class="br0">&#41;</span> <span class="br0">&#123;</span> <span class="re3">$null</span> <span class="sy0">=</span> <span class="re3">$script</span>:IdStack.<span class="me1">Pop</span><span class="br0">&#40;</span><span class="br0">&#41;</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="re3">$script</span>:ImpContextStack.<span class="me1">Count</span> <span class="re2">-eq</span> <span class="re3">$script</span>:IdStack.<span class="me1">Count</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">$script</span>:IdStack.<span class="me1">Peek</span><span class="br0">&#40;</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">New-<span class="re1">Alias</span></span> popic <span class="re0">Pop-<span class="re1">ImpersonationContext</span></span></div></li>\
<li class="li2"><div class="de2"><span class="re0">New-<span class="re1">Alias</span></span> pushic <span class="re0">Push-<span class="re1">ImpersonationContext</span></span></div></li>\
<li class="li1"><div class="de1"><span class="re0">New-<span class="re1">Alias</span></span> gic <span class="re0">Get-<span class="re1">ImpersonationContext</span></span></div></li>\
<li class="li2"><div class="de2"><span class="re0">Export-<span class="re1">ModuleMember</span></span> <span class="re2">-Function</span> <span class="sy0">*</span> <span class="re2">-Alias</span> <span class="sy0">*</span></div></li>\
</ol></div>');document.write('<div class="poshcredit"><a style="float:right;" href="http://poshcode.org/get/1867" title="download file">download</a><a href="http://poshcode.org/?show=1867" title="full view">This Script</a> brought to you by <a href="http://PoshCode.org">PoshCode</a>\
</div>\
</div>\
</div>');
