<?xml version="1.0" encoding="UTF-8"?>
<?xml-stylesheet type="text/xsl" media="screen" href="/~d/styles/rss2full.xsl"?><?xml-stylesheet type="text/css" media="screen" href="http://feeds.feedburner.com/~d/styles/itemcontent.css"?><rss xmlns:content="http://purl.org/rss/1.0/modules/content/" xmlns:wfw="http://wellformedweb.org/CommentAPI/" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:sy="http://purl.org/rss/1.0/modules/syndication/" xmlns:slash="http://purl.org/rss/1.0/modules/slash/" xmlns:geo="http://www.w3.org/2003/01/geo/wgs84_pos#" xmlns:creativeCommons="http://backend.userland.com/creativeCommonsRssModule" xmlns:feedburner="http://rssnamespace.org/feedburner/ext/1.0" version="2.0">

<channel>
	<title>String Theory</title>
	
	<link>http://www.cmschill.net/StringTheory</link>
	<description>Mastering the laws of physics with Windows PowerShell</description>
	<lastBuildDate>Thu, 26 Jan 2012 14:00:13 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=</generator>
		<atom10:link xmlns:atom10="http://www.w3.org/2005/Atom" rel="self" type="application/rss+xml" href="http://feeds.feedburner.com/StringTheory" /><feedburner:info uri="stringtheory" /><atom10:link xmlns:atom10="http://www.w3.org/2005/Atom" rel="hub" href="http://pubsubhubbub.appspot.com/" /><geo:lat>34.020621</geo:lat><geo:long>-84.142944</geo:long><creativeCommons:license>http://creativecommons.org/licenses/by/2.0/</creativeCommons:license><image><link>http://creativecommons.org/licenses/by/2.0/</link><url>http://creativecommons.org/images/public/somerights20.gif</url><title>Some Rights Reserved</title></image><item>
		<title>Registry Display in PowerShell Version 3</title>
		<link>http://feedproxy.google.com/~r/StringTheory/~3/oxw_HMkSawg/</link>
		<comments>http://www.cmschill.net/StringTheory/2012/01/26/registry-display-in-powershell-version-3/#comments</comments>
		<pubDate>Thu, 26 Jan 2012 14:00:13 +0000</pubDate>
		<dc:creator>Mark Schill</dc:creator>
				<category><![CDATA[PowerShell]]></category>
		<category><![CDATA[registry]]></category>
		<category><![CDATA[V3CTP2]]></category>

		<guid isPermaLink="false">http://www.cmschill.net/StringTheory/?p=124</guid>
		<description><![CDATA[One of the nice things that has changed with PowerShell Version 3 as of CTP 2 is the way that the registry is displayed. In PowerShell Version 3, the PowerShell team updated the format files for the registry provider. To see this difference first do a directory listing for HKCU: in version 2. You will [...]]]></description>
			<content:encoded><![CDATA[<!-- Start Shareaholic LikeButtonSetTop Automatic --><div style="clear: both; min-height: 1px; height: 3px; width: 100%;"></div><div class='shareaholic-like-buttonset' style='float:none;height:30px;'><a class='shareaholic-fblike' data-shr_layout='standard' data-shr_showfaces='false' data-shr_href='http%3A%2F%2Fwww.cmschill.net%2FStringTheory%2F2012%2F01%2F26%2Fregistry-display-in-powershell-version-3%2F' data-shr_title='Registry+Display+in+PowerShell+Version+3'></a><a class='shareaholic-googleplusone' data-shr_size='standard' data-shr_count='true' data-shr_href='http%3A%2F%2Fwww.cmschill.net%2FStringTheory%2F2012%2F01%2F26%2Fregistry-display-in-powershell-version-3%2F' data-shr_title='Registry+Display+in+PowerShell+Version+3'></a><a class='shareaholic-tweetbutton' data-shr_count='none' data-shr_href='http%3A%2F%2Fwww.cmschill.net%2FStringTheory%2F2012%2F01%2F26%2Fregistry-display-in-powershell-version-3%2F' data-shr_title='Registry+Display+in+PowerShell+Version+3'></a></div><div style="clear: both; min-height: 1px; height: 3px; width: 100%;"></div><!-- End Shareaholic LikeButtonSetTop Automatic --><p>One of the nice things that has changed with PowerShell Version 3 as of CTP 2 is the way that the registry is displayed. In PowerShell Version 3, the PowerShell team updated the format files for the registry provider. To see this difference first do a directory listing for HKCU: in version 2. You will get a similar output to Figure 1.</p>
<div id="attachment_125" class="wp-caption aligncenter" style="width: 484px"><a href="http://www.cmschill.net/StringTheory/wp-content/uploads/2012/01/Version2.png"><img class="wp-image-125  " title="Listing of HKCU: in PowerShell Version 2" src="http://www.cmschill.net/StringTheory/wp-content/uploads/2012/01/Version2.png" alt="Listing of HKCU: in PowerShell Version 2" width="474" height="239" /></a><p class="wp-caption-text">Figure 1: Listing of HKCU: in PowerShell Version 2 (Click image for full-size)</p></div>
<p>As you can see the listing is compact and actually somewhat hard to read, especially if you are interested in the properties. Now, perform the same action in version 3. You will be presented with the output similar to Figure 2.</p>
<div id="attachment_126" class="wp-caption aligncenter" style="width: 484px"><a href="http://www.cmschill.net/StringTheory/wp-content/uploads/2012/01/Version3.png"><img class=" wp-image-126" title="Listing of HKCU: in PowerShell Version 3" src="http://www.cmschill.net/StringTheory/wp-content/uploads/2012/01/Version3.png" alt="Listing of HKCU: in PowerShell Version 3" width="474" height="465" /></a><p class="wp-caption-text">Figure 2: Listing of HKCU: in PowerShell Version 3 (Click image for full-size)</p></div>
<p style="text-align: left;">As you can see the display is longer and isn’t completely captured in the screenshot. You will notice though, that it is much easier to read and you can view the values for each property very cleanly. This makes using PowerShell to navigate the registry so much easier and is a definite plus to the language.</p>
<p style="text-align: left;"><strong>Disclaimer:</strong> <em>This post covered PowerShell Version 3 CTP 2. Since this is a pre-release version, there is a possibility that the features described herein will be changed or completely removed from the final product.</em></p>
<div class="shr-publisher-124"></div><!-- Start Shareaholic LikeButtonSetBottom Automatic --><!-- End Shareaholic LikeButtonSetBottom Automatic --><div class="feedflare">
<a href="http://feeds.feedburner.com/~ff/StringTheory?a=oxw_HMkSawg:zBPX9IB-ts8:yIl2AUoC8zA"><img src="http://feeds.feedburner.com/~ff/StringTheory?d=yIl2AUoC8zA" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/StringTheory?a=oxw_HMkSawg:zBPX9IB-ts8:F7zBnMyn0Lo"><img src="http://feeds.feedburner.com/~ff/StringTheory?i=oxw_HMkSawg:zBPX9IB-ts8:F7zBnMyn0Lo" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/StringTheory?a=oxw_HMkSawg:zBPX9IB-ts8:V_sGLiPBpWU"><img src="http://feeds.feedburner.com/~ff/StringTheory?i=oxw_HMkSawg:zBPX9IB-ts8:V_sGLiPBpWU" border="0"></img></a>
</div><img src="http://feeds.feedburner.com/~r/StringTheory/~4/oxw_HMkSawg" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://www.cmschill.net/StringTheory/2012/01/26/registry-display-in-powershell-version-3/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		<feedburner:origLink>http://www.cmschill.net/StringTheory/2012/01/26/registry-display-in-powershell-version-3/</feedburner:origLink></item>
		<item>
		<title>Get-Help -ShowWindow (working title)</title>
		<link>http://feedproxy.google.com/~r/StringTheory/~3/W1IdIdvONt4/</link>
		<comments>http://www.cmschill.net/StringTheory/2012/01/24/get-help-showwindow-working-title/#comments</comments>
		<pubDate>Tue, 24 Jan 2012 14:00:35 +0000</pubDate>
		<dc:creator>Mark Schill</dc:creator>
				<category><![CDATA[PowerShell]]></category>
		<category><![CDATA[registry]]></category>
		<category><![CDATA[V3CTP2]]></category>

		<guid isPermaLink="false">http://www.cmschill.net/StringTheory/?p=127</guid>
		<description><![CDATA[Imagine the scenario: You are working on a script or command in your PowerShell session and you need to get help on a cmdlet. Sure, you have tab completion, but you can&#8217;t remember whether the parameter takes a string or an object, or you can&#8217;t remember how the value should be formatted. So you break [...]]]></description>
			<content:encoded><![CDATA[<!-- Start Shareaholic LikeButtonSetTop Automatic --><div style="clear: both; min-height: 1px; height: 3px; width: 100%;"></div><div class='shareaholic-like-buttonset' style='float:none;height:30px;'><a class='shareaholic-fblike' data-shr_layout='standard' data-shr_showfaces='false' data-shr_href='http%3A%2F%2Fwww.cmschill.net%2FStringTheory%2F2012%2F01%2F24%2Fget-help-showwindow-working-title%2F' data-shr_title='Get-Help+-ShowWindow+%28working+title%29'></a><a class='shareaholic-googleplusone' data-shr_size='standard' data-shr_count='true' data-shr_href='http%3A%2F%2Fwww.cmschill.net%2FStringTheory%2F2012%2F01%2F24%2Fget-help-showwindow-working-title%2F' data-shr_title='Get-Help+-ShowWindow+%28working+title%29'></a><a class='shareaholic-tweetbutton' data-shr_count='none' data-shr_href='http%3A%2F%2Fwww.cmschill.net%2FStringTheory%2F2012%2F01%2F24%2Fget-help-showwindow-working-title%2F' data-shr_title='Get-Help+-ShowWindow+%28working+title%29'></a></div><div style="clear: both; min-height: 1px; height: 3px; width: 100%;"></div><!-- End Shareaholic LikeButtonSetTop Automatic --><p>Imagine the scenario: You are working on a script or command in your PowerShell session and you need to get help on a cmdlet. Sure, you have tab completion, but you can&#8217;t remember whether the parameter takes a string or an object, or you can&#8217;t remember how the value should be formatted. So you break out the ever helpful (haha) get-help cmdlet.</p>
<p>Get-help provides you the information, but now you have to get back to your command. You start typing the command and realize you need more information. You either have to scroll up or rerun get-help. Wouldn&#8217;t it be nice if you could just have the help in a separate window that you can reference for as long as you need it?</p>
<p>Well it should be no surprise that you can display help in a separate window. Otherwise I wouldn&#8217;t have anything to write about, right? In version 3, Get-Help has a new parameter, -ShowWindow. As you can imagine -ShowWindow presents the help contents in a new, separate window as shown in Figure 1.</p>
<div id="attachment_128" class="wp-caption aligncenter" style="width: 585px"><a href="http://www.cmschill.net/StringTheory/wp-content/uploads/2012/01/ShowWindow.png"><img class=" wp-image-128  " title="Get-Help -ShowWindow" src="http://www.cmschill.net/StringTheory/wp-content/uploads/2012/01/ShowWindow.png" alt="Get-Help -ShowWindow" width="575" height="596" /></a><p class="wp-caption-text">Figure 1: Get-Help -ShowWindow (Click image for full-size)</p></div>
<p>Now you can continue editing your command AND have the help right there where you need it. Furthermore, you can search the help and customize the output to include/exclude the section you want by clicking on the <em>Settings</em> button as shown in Figure 2.</p>
<div id="attachment_129" class="wp-caption aligncenter" style="width: 170px"><a href="http://www.cmschill.net/StringTheory/wp-content/uploads/2012/01/ShowWindowOptions.png"><img class=" wp-image-129 " title="ShowWindowOptions" src="http://www.cmschill.net/StringTheory/wp-content/uploads/2012/01/ShowWindowOptions.png" alt="ShowWindowOptions" width="160" height="239" /></a><p class="wp-caption-text">Figure 2: Get-Help -ShowWindow Options. (Click image for full-size)</p></div>
<p><strong>Disclaimer:</strong> <em>This post covered PowerShell Version 3 CTP 2. Since this a pre-release version, there is a possibility that the the features described herein will be changed or completely removed from the final product.</em></p>
<div class="shr-publisher-127"></div><!-- Start Shareaholic LikeButtonSetBottom Automatic --><!-- End Shareaholic LikeButtonSetBottom Automatic --><div class="feedflare">
<a href="http://feeds.feedburner.com/~ff/StringTheory?a=W1IdIdvONt4:kVfsTPSfA9o:yIl2AUoC8zA"><img src="http://feeds.feedburner.com/~ff/StringTheory?d=yIl2AUoC8zA" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/StringTheory?a=W1IdIdvONt4:kVfsTPSfA9o:F7zBnMyn0Lo"><img src="http://feeds.feedburner.com/~ff/StringTheory?i=W1IdIdvONt4:kVfsTPSfA9o:F7zBnMyn0Lo" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/StringTheory?a=W1IdIdvONt4:kVfsTPSfA9o:V_sGLiPBpWU"><img src="http://feeds.feedburner.com/~ff/StringTheory?i=W1IdIdvONt4:kVfsTPSfA9o:V_sGLiPBpWU" border="0"></img></a>
</div><img src="http://feeds.feedburner.com/~r/StringTheory/~4/W1IdIdvONt4" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://www.cmschill.net/StringTheory/2012/01/24/get-help-showwindow-working-title/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		<feedburner:origLink>http://www.cmschill.net/StringTheory/2012/01/24/get-help-showwindow-working-title/</feedburner:origLink></item>
		<item>
		<title>How many Twitter followers do you have?</title>
		<link>http://feedproxy.google.com/~r/StringTheory/~3/CySovD0vlLY/</link>
		<comments>http://www.cmschill.net/StringTheory/2011/12/28/how-many-twitter-followers-do-you-have/#comments</comments>
		<pubDate>Wed, 28 Dec 2011 14:00:09 +0000</pubDate>
		<dc:creator>Mark Schill</dc:creator>
				<category><![CDATA[Random Thoughts]]></category>

		<guid isPermaLink="false">http://www.cmschill.net/StringTheory/?p=121</guid>
		<description><![CDATA[Not too long ago I was filling out an &#8220;achievement&#8221; form for an award that I want to obtain. This award was based on your community presence and how well you engaged the community to spread the value of the award&#8217;s intended purpose. One of the questions asked was your twitter username and how many followers you [...]]]></description>
			<content:encoded><![CDATA[<!-- Start Shareaholic LikeButtonSetTop Automatic --><div style="clear: both; min-height: 1px; height: 3px; width: 100%;"></div><div class='shareaholic-like-buttonset' style='float:none;height:30px;'><a class='shareaholic-fblike' data-shr_layout='standard' data-shr_showfaces='false' data-shr_href='http%3A%2F%2Fwww.cmschill.net%2FStringTheory%2F2011%2F12%2F28%2Fhow-many-twitter-followers-do-you-have%2F' data-shr_title='How+many+Twitter+followers+do+you+have%3F'></a><a class='shareaholic-googleplusone' data-shr_size='standard' data-shr_count='true' data-shr_href='http%3A%2F%2Fwww.cmschill.net%2FStringTheory%2F2011%2F12%2F28%2Fhow-many-twitter-followers-do-you-have%2F' data-shr_title='How+many+Twitter+followers+do+you+have%3F'></a><a class='shareaholic-tweetbutton' data-shr_count='none' data-shr_href='http%3A%2F%2Fwww.cmschill.net%2FStringTheory%2F2011%2F12%2F28%2Fhow-many-twitter-followers-do-you-have%2F' data-shr_title='How+many+Twitter+followers+do+you+have%3F'></a></div><div style="clear: both; min-height: 1px; height: 3px; width: 100%;"></div><!-- End Shareaholic LikeButtonSetTop Automatic --><p>Not too long ago I was filling out an &#8220;achievement&#8221; form for an award that I want to obtain. This award was based on your community presence and how well you engaged the community to spread the value of the award&#8217;s intended purpose. One of the questions asked was your twitter username and how many followers you had.</p>
<p>Every day I receive at least one user following me that is either a local business, some &#8220;hot chick&#8221; looking for a lonely guy, or someone selling some device at ridiculously low prices. Each and every time I reach for the spam link to report them, I think about that form. Do I  block them because they probably have no interest in what I have to say, or do I let them follow so they can pad my follower count? We are talking about the possibility of hundreds of additional followers.</p>
<p>Most of the time I just report them for spam but I always have to think about it first. To me this is just the social version of &#8220;What certifications do you have?&#8221; <strong>Most</strong> certification exams are no more than just a test of how well you can memorize something, not how well you know a subject. Saying you have a lot of followers just means you know a lot of people. Maybe the better question is: <strong>Who</strong> are your followers? Quality over quantity.</p>
<div class="shr-publisher-121"></div><!-- Start Shareaholic LikeButtonSetBottom Automatic --><!-- End Shareaholic LikeButtonSetBottom Automatic --><div class="feedflare">
<a href="http://feeds.feedburner.com/~ff/StringTheory?a=CySovD0vlLY:DmtldEVOjVs:yIl2AUoC8zA"><img src="http://feeds.feedburner.com/~ff/StringTheory?d=yIl2AUoC8zA" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/StringTheory?a=CySovD0vlLY:DmtldEVOjVs:F7zBnMyn0Lo"><img src="http://feeds.feedburner.com/~ff/StringTheory?i=CySovD0vlLY:DmtldEVOjVs:F7zBnMyn0Lo" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/StringTheory?a=CySovD0vlLY:DmtldEVOjVs:V_sGLiPBpWU"><img src="http://feeds.feedburner.com/~ff/StringTheory?i=CySovD0vlLY:DmtldEVOjVs:V_sGLiPBpWU" border="0"></img></a>
</div><img src="http://feeds.feedburner.com/~r/StringTheory/~4/CySovD0vlLY" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://www.cmschill.net/StringTheory/2011/12/28/how-many-twitter-followers-do-you-have/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		<feedburner:origLink>http://www.cmschill.net/StringTheory/2011/12/28/how-many-twitter-followers-do-you-have/</feedburner:origLink></item>
		<item>
		<title>Quickly Identify Long AppSense Environment Manager logins with PowerShell</title>
		<link>http://feedproxy.google.com/~r/StringTheory/~3/9a85WeeQO44/</link>
		<comments>http://www.cmschill.net/StringTheory/2011/12/26/quickly-identify-long-appsense-environment-manager-logins-with-powershell/#comments</comments>
		<pubDate>Tue, 27 Dec 2011 02:55:06 +0000</pubDate>
		<dc:creator>Mark Schill</dc:creator>
				<category><![CDATA[AppSense]]></category>
		<category><![CDATA[PowerShell]]></category>
		<category><![CDATA[Environment Manager]]></category>

		<guid isPermaLink="false">http://www.cmschill.net/StringTheory/?p=117</guid>
		<description><![CDATA[The AppSense Environment Manager can provide you with valuable information related to the processes involved in login and logoff . Using Windows PowerShell you can easily retrieve this information to assist you in identifying problem spots. When you install and configure Environment Manager (EM) &#160;it assumes control of your login and logout process, controlling each [...]]]></description>
			<content:encoded><![CDATA[<!-- Start Shareaholic LikeButtonSetTop Automatic --><div style="clear: both; min-height: 1px; height: 3px; width: 100%;"></div><div class='shareaholic-like-buttonset' style='float:none;height:30px;'><a class='shareaholic-fblike' data-shr_layout='standard' data-shr_showfaces='false' data-shr_href='http%3A%2F%2Fwww.cmschill.net%2FStringTheory%2F2011%2F12%2F26%2Fquickly-identify-long-appsense-environment-manager-logins-with-powershell%2F' data-shr_title='Quickly+Identify+Long+AppSense+Environment+Manager+logins+with+PowerShell'></a><a class='shareaholic-googleplusone' data-shr_size='standard' data-shr_count='true' data-shr_href='http%3A%2F%2Fwww.cmschill.net%2FStringTheory%2F2011%2F12%2F26%2Fquickly-identify-long-appsense-environment-manager-logins-with-powershell%2F' data-shr_title='Quickly+Identify+Long+AppSense+Environment+Manager+logins+with+PowerShell'></a><a class='shareaholic-tweetbutton' data-shr_count='none' data-shr_href='http%3A%2F%2Fwww.cmschill.net%2FStringTheory%2F2011%2F12%2F26%2Fquickly-identify-long-appsense-environment-manager-logins-with-powershell%2F' data-shr_title='Quickly+Identify+Long+AppSense+Environment+Manager+logins+with+PowerShell'></a></div><div style="clear: both; min-height: 1px; height: 3px; width: 100%;"></div><!-- End Shareaholic LikeButtonSetTop Automatic --><p>The AppSense Environment Manager can provide you with valuable information related to the processes involved in login and logoff . Using Windows PowerShell you can easily retrieve this information to assist you in identifying problem spots.</p>
<p><span id="more-117"></span>When you install and configure Environment Manager (EM) &nbsp;it assumes control of your login and logout process, controlling each action and when they are performed. With an efficient design the many steps of your login process can easily be subdivided into&nbsp;separate&nbsp;threads that are performed in parallel. No doubt you will have some tasks that are&nbsp;dependent&nbsp;on previous tasks. If any of those tasks take an extended amount of time to complete, you can experience long login and even logoff times for users.</p>
<p>If you encounter any extended times, you can enable logging in EM to assist you in identifying trouble spots. The key items that you want to enable are the logging of &#8220;Trigger Action Times&#8221; and &#8220;User Logon Success&#8221; records. When you enable the logging of these events, you can see exactly how long logins are taking, as well as the time it takes each step to complete.</p>
<p>The function below will pull the events from the AppSense Event Log related to action times and output them as PowerShell objects, that you can further manipulate. Summary information such as total login and logout times are available to determine the total time an action takes. If you need to drill down and identify a specific step that is causing a delay, you can use the detailed information.</p>
<div id="wpshdo_1" class="wp-synhighlighter-outer"><div id="wpshdt_1" class="wp-synhighlighter-expanded"><table border="0" width="100%"><tr><td align="left" width="80%"><a name="#codesyntax_1"></a><a id="wpshat_1" class="wp-synhighlighter-title" href="#codesyntax_1"  onClick="javascript:wpsh_toggleBlock(1)" title="Click to show/hide code block">Code block</a></td><td align="right"><a href="#codesyntax_1" onClick="javascript:wpsh_code(1)" title="Show code only"><img border="0" style="border: 0 none" src="http://www.cmschill.net/StringTheory/wp-content/plugins/wp-synhighlight/themes/stringtheory/images/code.png" /></a>&nbsp;<a href="#codesyntax_1" onClick="javascript:wpsh_print(1)" title="Print code"><img border="0" style="border: 0 none" src="http://www.cmschill.net/StringTheory/wp-content/plugins/wp-synhighlight/themes/stringtheory/images/printer.png" /></a>&nbsp;<a href="http://www.cmschill.net/StringTheory/wp-content/plugins/wp-synhighlight/About.html" target="_blank" title="Show plugin information"><img border="0" style="border: 0 none" src="http://www.cmschill.net/StringTheory/wp-content/plugins/wp-synhighlight/themes/stringtheory/images/info.gif" /></a>&nbsp;</td></tr></table></div><div id="wpshdi_1" class="wp-synhighlighter-inner" style="display: block;max-height: 500px"><pre class="powershell" style="font-family:monospace;"><ol><li class="li1"><div class="de1"><span class="coMULTI">&lt;#</span></div></li><li class="li1"><div class="de1"><span class="coMULTI">.SYNOPSIS</span></div></li><li class="li1"><div class="de1"><span class="coMULTI">&nbsp; Parses the AppSense event log to extract information related to timings for actions.</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; The Get-ActionTimes function reads the AppSense event log for AppSense Environment Manager entries related to timing of AppSense events.</span></div></li><li class="li1"><div class="de1">&nbsp;</div></li><li class="li1"><div class="de1"><span class="coMULTI">&nbsp; Get-ActionTimes interrogates the AppSense event log and retrieves either &quot;Trigger Action Times&quot; or &quot;User Logon Success&quot; records. Records are parsed and then are outputed as an object.  </span></div></li><li class="li1"><div class="de1">&nbsp;</div></li><li class="li1"><div class="de1"><span class="coMULTI">&nbsp; Requires that AppSense Environment Manager is configured to log Events 9662, and 9405 to the AppSense Event Log.</span></div></li><li class="li2"><div class="de2"><span class="coMULTI">.EXAMPLE</span></div></li><li class="li1"><div class="de1"><span class="coMULTI">&nbsp; C:PS&gt;Get-ActionTimes -Server Server01 -ReportLevel Summary </span></div></li><li class="li1"><div class="de1">&nbsp;</div></li><li class="li1"><div class="de1"><span class="coMULTI">&nbsp; Action Duration EndTime                UserID       StartTime</span></div></li><li class="li1"><div class="de1"><span class="coMULTI">&nbsp; ------ -------- -------                ------       ---------</span></div></li><li class="li2"><div class="de2"><span class="coMULTI">&nbsp; Logoff       41 12/26/2011 8:11:00 PM  DomainUser1 12/26/2011 8:11:00 PM</span></div></li><li class="li1"><div class="de1"><span class="coMULTI">&nbsp; Logon     10250 12/26/2011 8:10:52 PM  Domainuser2 12/26/2011 8:10:42 PM </span></div></li><li class="li1"><div class="de1">&nbsp;</div></li><li class="li1"><div class="de1"><span class="coMULTI">&nbsp; Description</span></div></li><li class="li1"><div class="de1">&nbsp;</div></li><li class="li2"><div class="de2"><span class="coMULTI">&nbsp; -----------</span></div></li><li class="li1"><div class="de1">&nbsp;</div></li><li class="li1"><div class="de1"><span class="coMULTI">&nbsp; This command gets the AppSense Logon/Logoff records for Server 'Server01'.</span></div></li><li class="li1"><div class="de1">&nbsp;</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; C:PS&gt;Get-ActionTimes -ReportLevel Detailed</span></div></li><li class="li1"><div class="de1">&nbsp;</div></li><li class="li1"><div class="de1"><span class="coMULTI">&nbsp; Node      : Login Script</span></div></li><li class="li1"><div class="de1"><span class="coMULTI">&nbsp; LogonTime : 12/26/2011 8:10:38 PM</span></div></li><li class="li1"><div class="de1"><span class="coMULTI">&nbsp; Duration  : 1</span></div></li><li class="li2"><div class="de2"><span class="coMULTI">&nbsp; UserID    : DomainUser1</span></div></li><li class="li1"><div class="de1"><span class="coMULTI">&nbsp; StartTime : 12/26/2011 8:10:42 PM</span></div></li><li class="li1"><div class="de1">&nbsp;</div></li><li class="li1"><div class="de1"><span class="coMULTI">&nbsp; Node      : Populate Start Menu</span></div></li><li class="li1"><div class="de1"><span class="coMULTI">&nbsp; LogonTime : 12/26/2011 8:10:38 PM</span></div></li><li class="li2"><div class="de2"><span class="coMULTI">&nbsp; Duration  : 1</span></div></li><li class="li1"><div class="de1"><span class="coMULTI">&nbsp; UserID    : DomainUser1</span></div></li><li class="li1"><div class="de1"><span class="coMULTI">&nbsp; StartTime : 12/26/2011 8:10:42 PM</span></div></li><li class="li1"><div class="de1">&nbsp;</div></li><li class="li1"><div class="de1"><span class="coMULTI">&nbsp;  Description</span></div></li><li class="li2"><div class="de2">&nbsp;</div></li><li class="li1"><div class="de1"><span class="coMULTI">&nbsp; -----------</span></div></li><li class="li1"><div class="de1">&nbsp;</div></li><li class="li1"><div class="de1"><span class="coMULTI">&nbsp; This command gets the detailed AppSense steps performed by Environment Manager for the local host.</span></div></li><li class="li1"><div class="de1"><span class="coMULTI">.PARAMETER ComputerName</span></div></li><li class="li2"><div class="de2"><span class="coMULTI">&nbsp; Name of the computer to pull the event logs from.</span></div></li><li class="li1"><div class="de1"><span class="coMULTI">.PARAMETER ReportLevel</span></div></li><li class="li1"><div class="de1"><span class="coMULTI">&nbsp; The level of reporting data to return.</span></div></li><li class="li1"><div class="de1">&nbsp;</div></li><li class="li1"><div class="de1"><span class="coMULTI">&nbsp; Possible values are either 'Detailed' or 'Summary'</span></div></li><li class="li2"><div class="de2"><span class="coMULTI">.PARAMETER UserName</span></div></li><li class="li1"><div class="de1"><span class="coMULTI">&nbsp; Retrieve only the information for the specified user. Otherwise all records will be retrieved. </span></div></li><li class="li1"><div class="de1">&nbsp;</div></li><li class="li1"><div class="de1"><span class="coMULTI">#&gt;</span></div></li><li class="li1"><div class="de1"><span class="kw3">Function</span> Get<span class="sy0">-</span>ActionTimes</div></li><li class="li2"><div class="de2"><span class="br0">&#123;</span></div></li><li class="li1"><div class="de1"><span class="kw3">param</span></div></li><li class="li1"><div class="de1"><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="re0">$False</span><span class="sy0">,</span>ValueFromPipeline<span class="sy0">=</span><span class="re0">$False</span><span class="br0">&#41;</span><span class="br0">&#93;</span></div></li><li class="li1"><div class="de1"><span class="br0">&#91;</span>alias<span class="br0">&#40;</span><span class="st0">&quot;Server&quot;</span><span class="br0">&#41;</span><span class="br0">&#93;</span></div></li><li class="li2"><div class="de2"><span class="br0">&#91;</span><span class="re3">String</span><span class="br0">&#93;</span><span class="re0">$ComputerName</span> <span class="sy0">=</span> <span class="st0">&quot;localhost&quot;</span></div></li><li class="li1"><div class="de1"><span class="sy0">,</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="re0">$False</span><span class="sy0">,</span>ValueFromPipeline<span class="sy0">=</span><span class="re0">$False</span><span class="br0">&#41;</span><span class="br0">&#93;</span></div></li><li class="li1"><div class="de1"><span class="br0">&#91;</span>ValidateSet<span class="br0">&#40;</span><span class="st0">'Summary'</span><span class="sy0">,</span><span class="st0">'Detailed'</span><span class="br0">&#41;</span><span class="br0">&#93;</span></div></li><li class="li1"><div class="de1"><span class="br0">&#91;</span><span class="re3">String</span><span class="br0">&#93;</span><span class="re0">$ReportLevel</span> <span class="sy0">=</span> <span class="st0">'Summary'</span></div></li><li class="li2"><div class="de2"><span class="sy0">,</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="re0">$False</span><span class="sy0">,</span>ValueFromPipeline<span class="sy0">=</span><span class="re0">$False</span><span class="br0">&#41;</span><span class="br0">&#93;</span></div></li><li class="li1"><div class="de1"><span class="br0">&#91;</span><span class="re3">string</span><span class="br0">&#93;</span><span class="re0">$UserName</span> <span class="sy0">=</span> <span class="re0">$Null</span></div></li><li class="li1"><div class="de1"><span class="br0">&#41;</span></div></li><li class="li1"><div class="de1">&nbsp;</div></li><li class="li2"><div class="de2"><span class="kw3">if</span> <span class="br0">&#40;</span><span class="re0">$ReportLevel</span> <span class="kw4">-eq</span> <span class="st0">'Summary'</span><span class="br0">&#41;</span></div></li><li class="li1"><div class="de1"><span class="br0">&#123;</span></div></li><li class="li1"><div class="de1">        <span class="kw1">Write-Verbose</span> <span class="st0">'$ReportLevel -eq Summary'</span></div></li><li class="li1"><div class="de1">&nbsp;</div></li><li class="li1"><div class="de1">        <span class="re0">$AppSenseCollection</span> <span class="sy0">=</span> <span class="sy0">@</span><span class="br0">&#40;</span><span class="br0">&#41;</span></div></li><li class="li2"><div class="de2">        <span class="kw1">Get-EventLog</span> <span class="kw5">-ComputerName</span> <span class="re0">$ComputerName</span> <span class="kw5">-LogName</span> <span class="st0">'AppSense'</span> <span class="sy0">-</span>InstanceID 9662 <span class="sy0">|</span> <span class="sy0">%</span><span class="br0">&#123;</span> </div></li><li class="li1"><div class="de1">&nbsp;</div></li><li class="li1"><div class="de1">                <span class="kw3">if</span> <span class="br0">&#40;</span> <span class="br0">&#40;</span> <a href="about:blank"><span class="kw6">$_</span></a>.UserName <span class="kw4">-ne</span> <span class="st0">'NT AUTHORITYSYSTEM'</span> <span class="br0">&#41;</span> <span class="kw4">-and</span> <span class="br0">&#40;</span><a href="about:blank"><span class="kw6">$_</span></a>.Username <span class="kw4">-match</span> <span class="br0">&#91;</span><span class="re3">regex</span><span class="br0">&#93;</span>::Escape<span class="br0">&#40;</span><span class="st0">&quot;$UserName&quot;</span><span class="br0">&#41;</span> <span class="br0">&#41;</span> <span class="br0">&#41;</span></div></li><li class="li1"><div class="de1">                <span class="br0">&#123;</span></div></li><li class="li1"><div class="de1">&nbsp;</div></li><li class="li2"><div class="de2">                        <span class="re0">$UserRegex</span> <span class="sy0">=</span> <span class="br0">&#91;</span><span class="re3">regex</span><span class="br0">&#93;</span><span class="st0">'Trigger: (?&lt;Action&gt;w*) Start Time: (?&lt;StartTime&gt;S*) End Time: (?&lt;EndTime&gt;S*)  Duration: (?&lt;Duration&gt;d*)'</span></div></li><li class="li1"><div class="de1">                        <a href="about:blank"><span class="kw6">$_</span></a>.Message <span class="kw4">-match</span> <span class="re0">$UserRegex</span> <span class="sy0">|</span> <span class="kw1">Out-Null</span></div></li><li class="li1"><div class="de1">                        <span class="re0">$EventAction</span> <span class="sy0">=</span> <span class="re0">$Matches</span><span class="br0">&#91;</span><span class="st0">'Action'</span><span class="br0">&#93;</span></div></li><li class="li1"><div class="de1">                        <span class="re0">$EventStartTime</span> <span class="sy0">=</span> <span class="re0">$Matches</span><span class="br0">&#91;</span><span class="st0">'StartTime'</span><span class="br0">&#93;</span></div></li><li class="li1"><div class="de1">                        <span class="re0">$EventEndTime</span> <span class="sy0">=</span> <span class="re0">$Matches</span><span class="br0">&#91;</span><span class="st0">'EndTime'</span><span class="br0">&#93;</span></div></li><li class="li2"><div class="de2">                        <span class="re0">$EventDuration</span> <span class="sy0">=</span> <span class="re0">$Matches</span><span class="br0">&#91;</span><span class="st0">'Duration'</span><span class="br0">&#93;</span></div></li><li class="li1"><div class="de1">&nbsp;</div></li><li class="li1"><div class="de1">                        <span class="kw1">Write-Verbose</span> <span class="st0">&quot;EventAction = $EventAction&quot;</span></div></li><li class="li1"><div class="de1">                        <span class="kw1">Write-Verbose</span> <span class="st0">&quot;EventStartTime = $EventStartTime&quot;</span></div></li><li class="li1"><div class="de1">                        <span class="kw1">Write-Verbose</span> <span class="st0">&quot;EventEndTime = $EventEndTime&quot;</span></div></li><li class="li2"><div class="de2">                        <span class="kw1">Write-Verbose</span> <span class="st0">&quot;EventDuration = $EventDuration&quot;</span></div></li><li class="li1"><div class="de1">&nbsp;</div></li><li class="li1"><div class="de1">                        <span class="re0">$AppSenseInfo</span> <span class="sy0">=</span> <span class="kw1">New-Object</span> PSObject <span class="kw5">-Property</span> <span class="sy0">@</span><span class="br0">&#123;</span></div></li><li class="li1"><div class="de1">                                UserID <span class="sy0">=</span> <span class="br0">&#91;</span><span class="re3">string</span><span class="br0">&#93;</span><a href="about:blank"><span class="kw6">$_</span></a>.UserName</div></li><li class="li1"><div class="de1">                                Action <span class="sy0">=</span> <span class="br0">&#91;</span><span class="re3">string</span><span class="br0">&#93;</span><span class="re0">$EventAction</span></div></li><li class="li2"><div class="de2">                                StartTime <span class="sy0">=</span> <span class="br0">&#40;</span><span class="br0">&#91;</span>datetime<span class="br0">&#93;</span><span class="re0">$EventStartTime</span><span class="br0">&#41;</span>.ToLocalTime<span class="br0">&#40;</span><span class="br0">&#41;</span></div></li><li class="li1"><div class="de1">                                EndTime <span class="sy0">=</span> <span class="br0">&#40;</span><span class="br0">&#91;</span>datetime<span class="br0">&#93;</span><span class="re0">$EventEndTime</span><span class="br0">&#41;</span>.ToLocalTime<span class="br0">&#40;</span><span class="br0">&#41;</span></div></li><li class="li1"><div class="de1">                                Duration <span class="sy0">=</span> <span class="br0">&#91;</span>Int32<span class="br0">&#93;</span><span class="re0">$EventDuration</span></div></li><li class="li1"><div class="de1">                        <span class="br0">&#125;</span></div></li><li class="li1"><div class="de1">&nbsp;</div></li><li class="li2"><div class="de2">                        <span class="re0">$AppSenseCollection</span> <span class="sy0">+=</span> <span class="re0">$AppSenseInfo</span></div></li><li class="li1"><div class="de1">                <span class="br0">&#125;</span></div></li><li class="li1"><div class="de1">        <span class="br0">&#125;</span></div></li><li class="li1"><div class="de1">&nbsp;</div></li><li class="li1"><div class="de1">        <span class="kw1">Write-Output</span> <span class="re0">$AppSenseCollection</span></div></li><li class="li2"><div class="de2">&nbsp;</div></li><li class="li1"><div class="de1"><span class="br0">&#125;</span></div></li><li class="li1"><div class="de1"><span class="kw3">elseif</span> <span class="br0">&#40;</span><span class="re0">$ReportLevel</span> <span class="kw4">-eq</span> <span class="st0">'Detailed'</span><span class="br0">&#41;</span></div></li><li class="li1"><div class="de1"><span class="br0">&#123;</span></div></li><li class="li1"><div class="de1">        <span class="kw1">Write-Verbose</span> <span class="st0">'$ReportLevel -eq Detailed'</span></div></li><li class="li2"><div class="de2">&nbsp;</div></li><li class="li1"><div class="de1">        <span class="re0">$AppSenseCollection</span> <span class="sy0">=</span> <span class="sy0">@</span><span class="br0">&#40;</span><span class="br0">&#41;</span></div></li><li class="li1"><div class="de1">        <span class="kw1">Get-EventLog</span> <span class="kw5">-ComputerName</span> <span class="re0">$ComputerName</span> <span class="kw5">-LogName</span> <span class="st0">'AppSense'</span> <span class="sy0">-</span>InstanceID 9405 <span class="sy0">|</span> <span class="sy0">%</span><span class="br0">&#123;</span></div></li><li class="li1"><div class="de1">                <span class="kw3">if</span> <span class="br0">&#40;</span> <span class="br0">&#40;</span> <a href="about:blank"><span class="kw6">$_</span></a>.UserName <span class="kw4">-ne</span> <span class="st0">'NT AUTHORITYSYSTEM'</span> <span class="br0">&#41;</span> <span class="kw4">-and</span> <span class="br0">&#40;</span><a href="about:blank"><span class="kw6">$_</span></a>.Username <span class="kw4">-match</span> <span class="br0">&#91;</span><span class="re3">regex</span><span class="br0">&#93;</span>::Escape<span class="br0">&#40;</span><span class="st0">&quot;$UserName&quot;</span><span class="br0">&#41;</span> <span class="br0">&#41;</span> <span class="br0">&#41;</span></div></li><li class="li1"><div class="de1">                <span class="br0">&#123;</span></div></li><li class="li2"><div class="de2">                        <span class="re0">$UserRegex</span> <span class="sy0">=</span> <span class="br0">&#91;</span><span class="re3">regex</span><span class="br0">&#93;</span><span class="st0">'Logon Time: (?&lt;LogonTime&gt;S*) Node Name: (?&lt;Node&gt;.*) Start Time: (?&lt;StartTime&gt;S*) Duration: (?&lt;Duration&gt;d*)ms.'</span></div></li><li class="li1"><div class="de1">                        <a href="about:blank"><span class="kw6">$_</span></a>.Message <span class="kw4">-match</span> <span class="re0">$UserRegEx</span> <span class="sy0">|</span> <span class="kw1">Out-Null</span></div></li><li class="li1"><div class="de1">                        <span class="re0">$LogonTime</span> <span class="sy0">=</span> <span class="re0">$Matches</span><span class="br0">&#91;</span><span class="st0">'LogonTime'</span><span class="br0">&#93;</span></div></li><li class="li1"><div class="de1">                        <span class="re0">$Node</span> <span class="sy0">=</span> <span class="re0">$Matches</span><span class="br0">&#91;</span><span class="st0">'Node'</span><span class="br0">&#93;</span></div></li><li class="li1"><div class="de1">                        <span class="re0">$StartTime</span> <span class="sy0">=</span> <span class="re0">$Matches</span><span class="br0">&#91;</span><span class="st0">'StartTime'</span><span class="br0">&#93;</span></div></li><li class="li2"><div class="de2">                        <span class="re0">$Duration</span> <span class="sy0">=</span> <span class="re0">$Matches</span><span class="br0">&#91;</span><span class="st0">'Duration'</span><span class="br0">&#93;</span> </div></li><li class="li1"><div class="de1">&nbsp;</div></li><li class="li1"><div class="de1">                        <span class="kw1">Write-Verbose</span> <span class="st0">&quot;LogonTime = $LogonTime&quot;</span></div></li><li class="li1"><div class="de1">                        <span class="kw1">Write-Verbose</span> <span class="st0">&quot;Node = $Node&quot;</span></div></li><li class="li1"><div class="de1">                        <span class="kw1">WRite-Verbose</span> <span class="st0">&quot;StartTime = $StartTime&quot;</span></div></li><li class="li2"><div class="de2">                        <span class="kw1">Write-Verbose</span> <span class="st0">&quot;Duration = $Duration&quot;</span></div></li><li class="li1"><div class="de1">                        <span class="re0">$AppSenseInfo</span> <span class="sy0">=</span> <span class="kw1">New-Object</span> PSObject <span class="kw5">-Property</span> <span class="sy0">@</span><span class="br0">&#123;</span></div></li><li class="li1"><div class="de1">                                UserID <span class="sy0">=</span> <span class="br0">&#91;</span><span class="re3">string</span><span class="br0">&#93;</span><a href="about:blank"><span class="kw6">$_</span></a>.UserName</div></li><li class="li1"><div class="de1">                                LogonTime <span class="sy0">=</span> <span class="br0">&#40;</span><span class="br0">&#91;</span>datetime<span class="br0">&#93;</span><span class="re0">$LogonTime</span><span class="br0">&#41;</span>.ToLocalTime<span class="br0">&#40;</span><span class="br0">&#41;</span></div></li><li class="li1"><div class="de1">                                Node <span class="sy0">=</span> <span class="br0">&#91;</span><span class="re3">string</span><span class="br0">&#93;</span><span class="re0">$Node</span></div></li><li class="li2"><div class="de2">                                StartTime <span class="sy0">=</span> <span class="br0">&#40;</span><span class="br0">&#91;</span>datetime<span class="br0">&#93;</span><span class="re0">$StartTime</span><span class="br0">&#41;</span>.ToLocalTime<span class="br0">&#40;</span><span class="br0">&#41;</span></div></li><li class="li1"><div class="de1">                                Duration <span class="sy0">=</span> <span class="br0">&#91;</span>Int32<span class="br0">&#93;</span><span class="re0">$Duration</span></div></li><li class="li1"><div class="de1">&nbsp;</div></li><li class="li1"><div class="de1">                        <span class="br0">&#125;</span></div></li><li class="li1"><div class="de1">                        <span class="re0">$AppSenseCollection</span> <span class="sy0">+=</span> <span class="re0">$AppSenseInfo</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="li1"><div class="de1">        <span class="br0">&#125;</span></div></li><li class="li1"><div class="de1">        <span class="re0">$AppSenseCollection</span></div></li><li class="li1"><div class="de1">&nbsp;</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="li1"><div class="de1"><span class="br0">&#125;</span></div></li></ol></pre></div></div>
<div class="shr-publisher-117"></div><!-- Start Shareaholic LikeButtonSetBottom Automatic --><!-- End Shareaholic LikeButtonSetBottom Automatic --><div class="feedflare">
<a href="http://feeds.feedburner.com/~ff/StringTheory?a=9a85WeeQO44:6R44r_S_NSM:yIl2AUoC8zA"><img src="http://feeds.feedburner.com/~ff/StringTheory?d=yIl2AUoC8zA" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/StringTheory?a=9a85WeeQO44:6R44r_S_NSM:F7zBnMyn0Lo"><img src="http://feeds.feedburner.com/~ff/StringTheory?i=9a85WeeQO44:6R44r_S_NSM:F7zBnMyn0Lo" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/StringTheory?a=9a85WeeQO44:6R44r_S_NSM:V_sGLiPBpWU"><img src="http://feeds.feedburner.com/~ff/StringTheory?i=9a85WeeQO44:6R44r_S_NSM:V_sGLiPBpWU" border="0"></img></a>
</div><img src="http://feeds.feedburner.com/~r/StringTheory/~4/9a85WeeQO44" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://www.cmschill.net/StringTheory/2011/12/26/quickly-identify-long-appsense-environment-manager-logins-with-powershell/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		<feedburner:origLink>http://www.cmschill.net/StringTheory/2011/12/26/quickly-identify-long-appsense-environment-manager-logins-with-powershell/</feedburner:origLink></item>
		<item>
		<title>Just a Little Update</title>
		<link>http://feedproxy.google.com/~r/StringTheory/~3/ipmsTnMp3V8/</link>
		<comments>http://www.cmschill.net/StringTheory/2011/08/02/just-a-little-update/#comments</comments>
		<pubDate>Wed, 03 Aug 2011 02:15:55 +0000</pubDate>
		<dc:creator>Mark Schill</dc:creator>
				<category><![CDATA[Citrix]]></category>
		<category><![CDATA[PowerShell]]></category>
		<category><![CDATA[PowerShell Bible]]></category>
		<category><![CDATA[PowerShellgroup.org]]></category>

		<guid isPermaLink="false">http://www.cmschill.net/StringTheory/2011/08/02/just-a-little-update/</guid>
		<description><![CDATA[Starting with an innocent conversation a little over 15 months ago, I agreed to co-author a book on Windows PowerShell. I had no idea what I was getting into nor the amount of work it was going to entail. It was a very long and detailed process, but I can finally say it was all [...]]]></description>
			<content:encoded><![CDATA[<!-- Start Shareaholic LikeButtonSetTop Automatic --><div style="clear: both; min-height: 1px; height: 3px; width: 100%;"></div><div class='shareaholic-like-buttonset' style='float:none;height:30px;'><a class='shareaholic-fblike' data-shr_layout='standard' data-shr_showfaces='false' data-shr_href='http%3A%2F%2Fwww.cmschill.net%2FStringTheory%2F2011%2F08%2F02%2Fjust-a-little-update%2F' data-shr_title='Just+a+Little+Update'></a><a class='shareaholic-googleplusone' data-shr_size='standard' data-shr_count='true' data-shr_href='http%3A%2F%2Fwww.cmschill.net%2FStringTheory%2F2011%2F08%2F02%2Fjust-a-little-update%2F' data-shr_title='Just+a+Little+Update'></a><a class='shareaholic-tweetbutton' data-shr_count='none' data-shr_href='http%3A%2F%2Fwww.cmschill.net%2FStringTheory%2F2011%2F08%2F02%2Fjust-a-little-update%2F' data-shr_title='Just+a+Little+Update'></a></div><div style="clear: both; min-height: 1px; height: 3px; width: 100%;"></div><!-- End Shareaholic LikeButtonSetTop Automatic --><p>Starting with an innocent conversation a little over 15 months ago, I agreed to co-author a book on Windows PowerShell. I had no <img style="margin: 0px 10px 0px 0px; display: inline; float: left" align="left" src="http://ecx.images-amazon.com/images/I/51ejIP1GM0L._SS500_.jpg" width="218" height="218" />idea what I was getting into nor the amount of work it was going to entail. It was a very long and detailed process, but I can finally say it was all absolutely worth it.</p>
<p>The book is in its final stages and we are looking at a September or October release date. As you can see from the image to the left we have our book cover. This is the part I was most looking forward to.</p>
<p>I am especially proud to have been able to use my experience and knowledge to dedicate individual chapters to Citrix XenApp 6 and&nbsp; to Citrix XenDesktop 5. My goal from the beginning of this project was to include these topics because I felt they hadn’t been addressed in any other resource appropriately. These chapters are only a beginning and I look forward to expanding on the information contained.</p>
<p>If you haven’t yet seen the new <a href="http://PowerShellGroup.org">PowerShellGroup.org</a> site I would recommend that you take a look.&nbsp; Joel Bennett and I have been working very hard to migrate the system from the old site to the new one. It wasn’t an easy process, but I can honestly say that I am proud of the new site. With the new host I haven’t seen a single “Page Not Found”.</p>
<p>The new User Group map is the feature that I am most proud of. When I was preparing my proposal for taking over the site it was the feature that I wanted the most. The were two questions that were prevalent at the Scripting Guys booth during MSTechEd here in Atlanta:</p>
<ol>
<li>Is there a PowerShell user group where I live?</li>
<li>How can I start my own PowerShell user group.</li>
</ol>
<p>The User Group map answers that first question. As to the second question: stay tuned. I will be starting work on a ‘New User Group’ welcome packet that provides all of the resources you need to start your very own user group.</p>
<p>With the book completed and more free time, I am working hard to complete everything I have postponed and become an active member of the PowerShell community once again.</p>
<div class="shr-publisher-112"></div><!-- Start Shareaholic LikeButtonSetBottom Automatic --><!-- End Shareaholic LikeButtonSetBottom Automatic --><div class="feedflare">
<a href="http://feeds.feedburner.com/~ff/StringTheory?a=ipmsTnMp3V8:G0Zsc2WXPzw:yIl2AUoC8zA"><img src="http://feeds.feedburner.com/~ff/StringTheory?d=yIl2AUoC8zA" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/StringTheory?a=ipmsTnMp3V8:G0Zsc2WXPzw:F7zBnMyn0Lo"><img src="http://feeds.feedburner.com/~ff/StringTheory?i=ipmsTnMp3V8:G0Zsc2WXPzw:F7zBnMyn0Lo" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/StringTheory?a=ipmsTnMp3V8:G0Zsc2WXPzw:V_sGLiPBpWU"><img src="http://feeds.feedburner.com/~ff/StringTheory?i=ipmsTnMp3V8:G0Zsc2WXPzw:V_sGLiPBpWU" border="0"></img></a>
</div><img src="http://feeds.feedburner.com/~r/StringTheory/~4/ipmsTnMp3V8" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://www.cmschill.net/StringTheory/2011/08/02/just-a-little-update/feed/</wfw:commentRss>
		<slash:comments>3</slash:comments>
		<feedburner:origLink>http://www.cmschill.net/StringTheory/2011/08/02/just-a-little-update/</feedburner:origLink></item>
		<item>
		<title>Honorary Scripting Guy for Microsoft TechEd 2011</title>
		<link>http://feedproxy.google.com/~r/StringTheory/~3/dpbizYOyvvU/</link>
		<comments>http://www.cmschill.net/StringTheory/2011/03/29/honorary-scripting-guy-for-microsoft-teched-2011/#comments</comments>
		<pubDate>Tue, 29 Mar 2011 20:36:50 +0000</pubDate>
		<dc:creator>Mark Schill</dc:creator>
				<category><![CDATA[Admin]]></category>
		<category><![CDATA[PowerShell]]></category>
		<category><![CDATA[@ScriptingGuys]]></category>
		<category><![CDATA[TechEd]]></category>

		<guid isPermaLink="false">http://www.cmschill.net/StringTheory/2011/03/29/honorary-scripting-guy-for-microsoft-teched-2011/</guid>
		<description><![CDATA[I am delighted beyond belief to be able to announce that I get to be an honorary Scripting Guys team member, at least for a week.&#160; I received an email earlier this week from Ed Wilson himself asking whether I would be interested in helping @ScriptingGuys and @ScriptingWife staff the Script Center booth at MS [...]]]></description>
			<content:encoded><![CDATA[<!-- Start Shareaholic LikeButtonSetTop Automatic --><div style="clear: both; min-height: 1px; height: 3px; width: 100%;"></div><div class='shareaholic-like-buttonset' style='float:none;height:30px;'><a class='shareaholic-fblike' data-shr_layout='standard' data-shr_showfaces='false' data-shr_href='http%3A%2F%2Fwww.cmschill.net%2FStringTheory%2F2011%2F03%2F29%2Fhonorary-scripting-guy-for-microsoft-teched-2011%2F' data-shr_title='Honorary+Scripting+Guy+for+Microsoft+TechEd+2011'></a><a class='shareaholic-googleplusone' data-shr_size='standard' data-shr_count='true' data-shr_href='http%3A%2F%2Fwww.cmschill.net%2FStringTheory%2F2011%2F03%2F29%2Fhonorary-scripting-guy-for-microsoft-teched-2011%2F' data-shr_title='Honorary+Scripting+Guy+for+Microsoft+TechEd+2011'></a><a class='shareaholic-tweetbutton' data-shr_count='none' data-shr_href='http%3A%2F%2Fwww.cmschill.net%2FStringTheory%2F2011%2F03%2F29%2Fhonorary-scripting-guy-for-microsoft-teched-2011%2F' data-shr_title='Honorary+Scripting+Guy+for+Microsoft+TechEd+2011'></a></div><div style="clear: both; min-height: 1px; height: 3px; width: 100%;"></div><!-- End Shareaholic LikeButtonSetTop Automatic --><p style="text-align: justify">I am delighted beyond belief to be able to announce that I get to be an honorary Scripting <a href="http://www.cmschill.net/StringTheory/wp-content/uploads/2011/03/image1.png"><img style="background-image: none; border-right-width: 0px; margin: 10px 10px 0px 0px; padding-left: 0px; padding-right: 0px; display: inline; float: left; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px; padding-top: 0px" title="image" border="0" alt="image" align="left" src="http://www.cmschill.net/StringTheory/wp-content/uploads/2011/03/image_thumb1.png" width="154" height="187" /></a>Guys team member, at least for a week.&nbsp; I received an email earlier this week from Ed Wilson himself asking whether I would be interested in helping <a href="http://twitter.com/scriptingguys" target="_blank">@ScriptingGuys</a> and <a href="http://twitter.com/scriptingwife" target="_blank">@ScriptingWife</a> staff the Script Center booth at <a href="http://northamerica.msteched.com" target="_blank">MS TechEd 2011</a> in Atlanta May 16-19, 2011. After picking myself up off of the floor and having my wife verify what I read, I immediately accepted the invitation.</p>
<p style="text-align: justify">I am so excited about this opportunity because not only do I get to work a booth with The Scripting Guy himself and The Scripting Wife, but that I am going to get to meet so many great people and spread the word of Windows PowerShell. If you are attending TechEd please stop by the booth and say hello. Feel free to add me as a contact on <a href="http://app.eventpoint.com/myportal?fbid=TU3z4mxp6ng" target="_blank">MyTechEd</a>.</p>
<div class="shr-publisher-110"></div><!-- Start Shareaholic LikeButtonSetBottom Automatic --><!-- End Shareaholic LikeButtonSetBottom Automatic --><div class="feedflare">
<a href="http://feeds.feedburner.com/~ff/StringTheory?a=dpbizYOyvvU:-BmPco9bEmA:yIl2AUoC8zA"><img src="http://feeds.feedburner.com/~ff/StringTheory?d=yIl2AUoC8zA" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/StringTheory?a=dpbizYOyvvU:-BmPco9bEmA:F7zBnMyn0Lo"><img src="http://feeds.feedburner.com/~ff/StringTheory?i=dpbizYOyvvU:-BmPco9bEmA:F7zBnMyn0Lo" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/StringTheory?a=dpbizYOyvvU:-BmPco9bEmA:V_sGLiPBpWU"><img src="http://feeds.feedburner.com/~ff/StringTheory?i=dpbizYOyvvU:-BmPco9bEmA:V_sGLiPBpWU" border="0"></img></a>
</div><img src="http://feeds.feedburner.com/~r/StringTheory/~4/dpbizYOyvvU" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://www.cmschill.net/StringTheory/2011/03/29/honorary-scripting-guy-for-microsoft-teched-2011/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		<feedburner:origLink>http://www.cmschill.net/StringTheory/2011/03/29/honorary-scripting-guy-for-microsoft-teched-2011/</feedburner:origLink></item>
		<item>
		<title>PowerShell for VisionApp Remote Desktop</title>
		<link>http://feedproxy.google.com/~r/StringTheory/~3/H_McNK_IlXU/</link>
		<comments>http://www.cmschill.net/StringTheory/2011/03/27/powershell-for-visionapp-remote-desktop/#comments</comments>
		<pubDate>Sun, 27 Mar 2011 23:55:06 +0000</pubDate>
		<dc:creator>Mark Schill</dc:creator>
				<category><![CDATA[PowerShell]]></category>
		<category><![CDATA[tools]]></category>
		<category><![CDATA[visionapp]]></category>

		<guid isPermaLink="false">http://www.cmschill.net/StringTheory/?p=106</guid>
		<description><![CDATA[If you use VisionApp Remote Desktop in your environment then you know it’s an extremely valuable tool. If you are not familiar with it then here is a snippet from the product’s website. visionapp Remote Desktop makes it easy to manage remote connections to Windows-based systems. Administrators who need to maintain simultaneous connections to multiple [...]]]></description>
			<content:encoded><![CDATA[<!-- Start Shareaholic LikeButtonSetTop Automatic --><div style="clear: both; min-height: 1px; height: 3px; width: 100%;"></div><div class='shareaholic-like-buttonset' style='float:none;height:30px;'><a class='shareaholic-fblike' data-shr_layout='standard' data-shr_showfaces='false' data-shr_href='http%3A%2F%2Fwww.cmschill.net%2FStringTheory%2F2011%2F03%2F27%2Fpowershell-for-visionapp-remote-desktop%2F' data-shr_title='PowerShell+for+VisionApp+Remote+Desktop'></a><a class='shareaholic-googleplusone' data-shr_size='standard' data-shr_count='true' data-shr_href='http%3A%2F%2Fwww.cmschill.net%2FStringTheory%2F2011%2F03%2F27%2Fpowershell-for-visionapp-remote-desktop%2F' data-shr_title='PowerShell+for+VisionApp+Remote+Desktop'></a><a class='shareaholic-tweetbutton' data-shr_count='none' data-shr_href='http%3A%2F%2Fwww.cmschill.net%2FStringTheory%2F2011%2F03%2F27%2Fpowershell-for-visionapp-remote-desktop%2F' data-shr_title='PowerShell+for+VisionApp+Remote+Desktop'></a></div><div style="clear: both; min-height: 1px; height: 3px; width: 100%;"></div><!-- End Shareaholic LikeButtonSetTop Automatic --><p>If you use <a href="http://www.visionapp.com/germany/software/visionapp-remote-desktop.html">VisionApp Remote Desktop</a> in your environment then you know it’s an extremely valuable tool. If you are not familiar with it then here is a snippet from the product’s website.</p>
<blockquote>
<p>visionapp Remote Desktop makes it easy to manage remote connections to Windows-based systems. Administrators who need to maintain simultaneous connections to multiple systems can create and organize Connection-specific settings and login credentials for quick access and simplified day-to-day use.
</p></blockquote>
<p>It’s a life-saver for admins by allowing you to maintain multiple tabbed connections to a whole library of SSH, ICA, RDP, VNC, and Telnet with saved credentials.&nbsp; I have used it for many years now, but I finally realized one of its other great hidden potentials.</p>
<p>In the application you can create “External Applications”. External Applications are simply applications that you can reference from inside the product. I decided that I would really benefit from having Windows PowerShell at my ready within this application, so I created a PowerShell External <a href="http://www.cmschill.net/StringTheory/wp-content/uploads/2011/03/image.png"><img style="background-image: none; margin: 2px 2px 0px 0px; padding-left: 0px; padding-right: 0px; display: inline; float: left; padding-top: 0px; border-width: 0px;" title="image" src="http://www.cmschill.net/StringTheory/wp-content/uploads/2011/03/image_thumb.png" border="0" alt="image" width="244" height="81" align="left" /></a>Application. As you can see by the image to the left I have three commands. Yes, I usually have a PowerShell console open, but having it within the application makes it much more efficient. Why? Well I am able to embed the computer’s name within the command. So now I can right-click the computer and select the “Windows PowerShell (remote)” application and immediately have a PowerShell session on the remote machine via WinRM. (The computers must have WinRM enabled to connect to them of course.) I also created a couple of local PowerShell sessions for a quick session when you need them.</p>
<p>If you are interested in the applications then you can download them from <a href="http://dl.dropbox.com/u/1031738/StringTheory/Files/Attachments/VisionApp/PowerShell.vra" target="_blank">here</a>.</p>
<div class="shr-publisher-106"></div><!-- Start Shareaholic LikeButtonSetBottom Automatic --><!-- End Shareaholic LikeButtonSetBottom Automatic --><div class="feedflare">
<a href="http://feeds.feedburner.com/~ff/StringTheory?a=H_McNK_IlXU:e-YYJWws3dg:yIl2AUoC8zA"><img src="http://feeds.feedburner.com/~ff/StringTheory?d=yIl2AUoC8zA" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/StringTheory?a=H_McNK_IlXU:e-YYJWws3dg:F7zBnMyn0Lo"><img src="http://feeds.feedburner.com/~ff/StringTheory?i=H_McNK_IlXU:e-YYJWws3dg:F7zBnMyn0Lo" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/StringTheory?a=H_McNK_IlXU:e-YYJWws3dg:V_sGLiPBpWU"><img src="http://feeds.feedburner.com/~ff/StringTheory?i=H_McNK_IlXU:e-YYJWws3dg:V_sGLiPBpWU" border="0"></img></a>
</div><img src="http://feeds.feedburner.com/~r/StringTheory/~4/H_McNK_IlXU" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://www.cmschill.net/StringTheory/2011/03/27/powershell-for-visionapp-remote-desktop/feed/</wfw:commentRss>
		<slash:comments>3</slash:comments>
		<feedburner:origLink>http://www.cmschill.net/StringTheory/2011/03/27/powershell-for-visionapp-remote-desktop/</feedburner:origLink></item>
		<item>
		<title>AppSense Audit Codes</title>
		<link>http://feedproxy.google.com/~r/StringTheory/~3/EbvVhxF0FUs/</link>
		<comments>http://www.cmschill.net/StringTheory/2011/02/11/appsense-audit-codes/#comments</comments>
		<pubDate>Sat, 12 Feb 2011 02:59:40 +0000</pubDate>
		<dc:creator>Mark Schill</dc:creator>
				<category><![CDATA[AppSense]]></category>
		<category><![CDATA[Event Codes]]></category>

		<guid isPermaLink="false">http://www.cmschill.net/StringTheory/2011/02/11/appsense-audit-codes/</guid>
		<description><![CDATA[We covered this in our AppSense Specialist class today and I thought it was important information for the community. This is the kind of stuff one might find useful on an exam. AppSense Management Center 90XX AM Agent 91XX PM Agent 93XX EM Agent 97XX CCA, Events and AMC Performance Manager 91XX Memory &#38; CPU [...]]]></description>
			<content:encoded><![CDATA[<!-- Start Shareaholic LikeButtonSetTop Automatic --><div style="clear: both; min-height: 1px; height: 3px; width: 100%;"></div><div class='shareaholic-like-buttonset' style='float:none;height:30px;'><a class='shareaholic-fblike' data-shr_layout='standard' data-shr_showfaces='false' data-shr_href='http%3A%2F%2Fwww.cmschill.net%2FStringTheory%2F2011%2F02%2F11%2Fappsense-audit-codes%2F' data-shr_title='AppSense+Audit+Codes'></a><a class='shareaholic-googleplusone' data-shr_size='standard' data-shr_count='true' data-shr_href='http%3A%2F%2Fwww.cmschill.net%2FStringTheory%2F2011%2F02%2F11%2Fappsense-audit-codes%2F' data-shr_title='AppSense+Audit+Codes'></a><a class='shareaholic-tweetbutton' data-shr_count='none' data-shr_href='http%3A%2F%2Fwww.cmschill.net%2FStringTheory%2F2011%2F02%2F11%2Fappsense-audit-codes%2F' data-shr_title='AppSense+Audit+Codes'></a></div><div style="clear: both; min-height: 1px; height: 3px; width: 100%;"></div><!-- End Shareaholic LikeButtonSetTop Automatic --><p>We covered this in our AppSense Specialist class today and I thought it was important information for the community. This is the kind of stuff one might find useful on an exam.</p>
<h2>AppSense Management Center</h2>
<ul>
<li>90XX AM Agent</li>
<li>91XX PM Agent</li>
<li>93XX EM Agent</li>
<li>97XX CCA, Events and AMC</li>
</ul>
<h2>Performance Manager</h2>
<ul>
<li>91XX Memory &amp; CPU</li>
<li>9197/9199 Licensing</li>
<li>92XX Application Manager</li>
<li>90XX Application blocked/allowed</li>
<li>9099 License Problem</li>
</ul>
<h2>EM – Policy</h2>
<ul>
<li>93XX Self Heal</li>
<li>9399 Licenses</li>
<li>94XX Triggers and Actions</li>
<li>95XX User defined</li>
</ul>
<h2>EM – Personalization</h2>
<ul>
<li>96XX Personalization settings</li>
<li>9661 Timeout communicating with Personalization Server</li>
</ul>
<div class="shr-publisher-102"></div><!-- Start Shareaholic LikeButtonSetBottom Automatic --><!-- End Shareaholic LikeButtonSetBottom Automatic --><div class="feedflare">
<a href="http://feeds.feedburner.com/~ff/StringTheory?a=EbvVhxF0FUs:TPkYobgl5P0:yIl2AUoC8zA"><img src="http://feeds.feedburner.com/~ff/StringTheory?d=yIl2AUoC8zA" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/StringTheory?a=EbvVhxF0FUs:TPkYobgl5P0:F7zBnMyn0Lo"><img src="http://feeds.feedburner.com/~ff/StringTheory?i=EbvVhxF0FUs:TPkYobgl5P0:F7zBnMyn0Lo" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/StringTheory?a=EbvVhxF0FUs:TPkYobgl5P0:V_sGLiPBpWU"><img src="http://feeds.feedburner.com/~ff/StringTheory?i=EbvVhxF0FUs:TPkYobgl5P0:V_sGLiPBpWU" border="0"></img></a>
</div><img src="http://feeds.feedburner.com/~r/StringTheory/~4/EbvVhxF0FUs" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://www.cmschill.net/StringTheory/2011/02/11/appsense-audit-codes/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		<feedburner:origLink>http://www.cmschill.net/StringTheory/2011/02/11/appsense-audit-codes/</feedburner:origLink></item>
		<item>
		<title>Load Balancing AppSense Personalization Servers with Citrix NetScaler</title>
		<link>http://feedproxy.google.com/~r/StringTheory/~3/cvreXsLNWb0/</link>
		<comments>http://www.cmschill.net/StringTheory/2010/12/16/load-balancing-appsense-personalization-servers-with-citrix-netscaler/#comments</comments>
		<pubDate>Fri, 17 Dec 2010 02:36:55 +0000</pubDate>
		<dc:creator>Mark Schill</dc:creator>
				<category><![CDATA[AppSense]]></category>
		<category><![CDATA[Citrix]]></category>
		<category><![CDATA[NetScaler]]></category>
		<category><![CDATA[Personalization Server]]></category>

		<guid isPermaLink="false">http://www.cmschill.net/StringTheory/?p=101</guid>
		<description><![CDATA[Recently at work we have been doing some load testing and finally realized that we needed to load balance the AppSense Personalization servers in our environment. Prior to this we have just utilized the standard AppSense failover method. We needed something a little more robust. These were the requirements. Solution must be able to distribute [...]]]></description>
			<content:encoded><![CDATA[<!-- Start Shareaholic LikeButtonSetTop Automatic --><div style="clear: both; min-height: 1px; height: 3px; width: 100%;"></div><div class='shareaholic-like-buttonset' style='float:none;height:30px;'><a class='shareaholic-fblike' data-shr_layout='standard' data-shr_showfaces='false' data-shr_href='http%3A%2F%2Fwww.cmschill.net%2FStringTheory%2F2010%2F12%2F16%2Fload-balancing-appsense-personalization-servers-with-citrix-netscaler%2F' data-shr_title='Load+Balancing+AppSense+Personalization+Servers+with+Citrix+NetScaler'></a><a class='shareaholic-googleplusone' data-shr_size='standard' data-shr_count='true' data-shr_href='http%3A%2F%2Fwww.cmschill.net%2FStringTheory%2F2010%2F12%2F16%2Fload-balancing-appsense-personalization-servers-with-citrix-netscaler%2F' data-shr_title='Load+Balancing+AppSense+Personalization+Servers+with+Citrix+NetScaler'></a><a class='shareaholic-tweetbutton' data-shr_count='none' data-shr_href='http%3A%2F%2Fwww.cmschill.net%2FStringTheory%2F2010%2F12%2F16%2Fload-balancing-appsense-personalization-servers-with-citrix-netscaler%2F' data-shr_title='Load+Balancing+AppSense+Personalization+Servers+with+Citrix+NetScaler'></a></div><div style="clear: both; min-height: 1px; height: 3px; width: 100%;"></div><!-- End Shareaholic LikeButtonSetTop Automatic --><p>Recently at work we have been doing some load testing and finally realized that we needed to load balance the AppSense Personalization servers in our environment. Prior to this we have just utilized the standard AppSense failover method. We needed something a little more robust. These were the requirements.</p>
<blockquote>
<p>Solution must be able to distribute the load among all of the AppSense Personalization servers
</p></blockquote>
<p>We didn’t require that each Personalization server have an exact equal load. We just needed to make sure that the load was distributed among them without one taking all of the work.</p>
<blockquote>
<p>Solution must be able to detect when a Personalization server was unavailable and take it out of the list of available servers.
</p></blockquote>
<p>Simply stated, if a server was unable to serve the Personalization role we needed it removed so no further connections were created until it was functioning again.</p>
<h2>Determine How to Monitor Availability</h2>
<p>Before I configured anything I needed to determine method I would use to detect that the Personalization server was actually functioning. Probably the first two things that come to mind would be a TCP monitor on port 80 or an http monitor. Neither of these monitors would be acceptable.</p>
<p>I didn’t just want to know if IIS was still running. I wanted to know if Personalization was working. We have had several cases where something caused application crashes which then caused the PersonalizationServerPool to crash enough times to trigger the application pool’s “Rapid-Fail Protection&#8221;. In this case IIS and thus http was still functional so those checks would still register successful.</p>
<p>I was then reminded by our AppSense channel partner about the status page who just happened to be in our office that day.</p>
<p>On your Personalization server at <a href="http://Server:Port/PersonalizationServer/status.aspx">http://Server:Port/PersonalizationServer/status.aspx</a> is a dynamic status page that you can use to get information about your client and Personalization server.</p>
<p><a href="http://www.cmschill.net/StringTheory/wp-content/uploads/2010/12/image.png"><img style="background-image: none; padding-left: 0px; padding-right: 0px; display: inline; padding-top: 0px; border-width: 0px;" title="image" src="http://www.cmschill.net/StringTheory/wp-content/uploads/2010/12/image_thumb.png" border="0" alt="image" width="595" height="184" /></a></p>
<p>For this page to return any data Personalization needs to be running so I decided to use it for my test. I just need some text to synchronize the test on and “Successfully connected to the profile server status handler” seemed fitting so I decided to use that.</p>
<h2>Configuring the NetScaler</h2>
<h3>Setting up the Monitor</h3>
<p>Now I am ready to do some dirty work. I logged into my NetScaler and navigated to the Load Balancing node and then to Monitors. I created a new monitor named <em>MON-AppSense</em>. You are going to use the <strong>HTTP-ECV</strong> monitor type.</p>
<p>Leave the Destination IP and Destination Port blank. This allows the NetScaler to insert the servers information into those fields. This enables you to use the monitor on all of your Personalization servers.</p>
<p>The first five fields on your left side determine how often you will probe your server and how you will react to changes. These values are going to be dependent on your environment and I recommend you sitting back for a couple of minutes to think about your values.</p>
<p><a href="http://www.cmschill.net/StringTheory/wp-content/uploads/2010/12/SNAGHTML41e0af.png"><img style="background-image: none; padding-left: 0px; padding-right: 0px; display: block; float: none; margin-left: auto; margin-right: auto; padding-top: 0px; border-width: 0px;" title="SNAGHTML41e0af" src="http://www.cmschill.net/StringTheory/wp-content/uploads/2010/12/SNAGHTML41e0af_thumb.png" border="0" alt="SNAGHTML41e0af" width="369" height="250" /></a></p>
<ul>
<li><span style="font-size: xx-small;">Interval. The time interval between probes sent to a server. The value must be greater than the value entered for the response time-out. The value is set in seconds.</span></li>
<li><span style="font-size: xx-small;">Response Time-out. The time the monitor waits for the response from the server. The value must be less than the monitoring interval. The value is set in seconds.</span></li>
<li><span style="font-size: xx-small;">Down Time. The time interval before the next probe after a server is marked DOWN. The value is set in seconds.</span></li>
<li><span style="font-size: xx-small;">Deviation. Deviation from the learned response time for Dynamic Response Time monitoring. The maximum value in seconds is 159 and 159000 in msec. The minimum value is 10 msec. Minimum value: 1, Maximum Value: 2147483647.</span></li>
<li><span style="font-size: xx-small;">Retries. The number of consecutive probes failures after which the appliance determines the service as DOWN. The default value is 3. The minimum value for this parameter is 3 and maximum value is 127.</span></li>
</ul>
<p><a href="http://www.cmschill.net/StringTheory/wp-content/uploads/2010/12/SNAGHTML493f09.png"><img style="background-image: none; padding-left: 0px; padding-right: 0px; display: block; float: none; margin-left: auto; margin-right: auto; padding-top: 0px; border-width: 0px;" title="SNAGHTML493f09" src="http://www.cmschill.net/StringTheory/wp-content/uploads/2010/12/SNAGHTML493f09_thumb.png" border="0" alt="SNAGHTML493f09" width="372" height="253" /></a></p>
<p>The <em>Special Parameters</em> tab is where you put in the URL and the string you are expecting to get back if the service is up.&nbsp; You are directing NetScaler to get the /PersonalizationServer/status.aspx page and expect to see “Successfully connected to the profile server status handler” somewhere in the data that is sent back to that request.</p>
<p>Now you just need to go into each of the S<em>ervices</em> for the Personalization server and attach the monitor to the Service</p>
<p><a href="http://www.cmschill.net/StringTheory/wp-content/uploads/2010/12/SNAGHTML4e20fa.png"><img style="background-image: none; padding-left: 0px; padding-right: 0px; display: inline; padding-top: 0px; border-width: 0px;" title="SNAGHTML4e20fa" src="http://www.cmschill.net/StringTheory/wp-content/uploads/2010/12/SNAGHTML4e20fa_thumb.png" border="0" alt="SNAGHTML4e20fa" width="367" height="258" /></a></p>
<h3>Configuring Load Balancing</h3>
<p>Now you are ready to configure the actual load balancing for the Personalization servers in the <em>Virtual Server</em> section. The key parameters for this step are the Load Balancing Method and the Persistence.</p>
<p>The Load Balancing Method is the method which the NetScaler distributes connections to the individual Personalization servers. I decided to use the “Least Connection” method, which is the default. I am not a networking guru so I am not going to say that is the absolute best choice. But I did some load testing afterwards and was satisfied with the results.</p>
<p>This method will work especially well if we do encounter a failure. The NetScaler will monitor the connections to the servers and maintain an even connection count. For my load testing I took one of the servers out of rotation. The other server took up the slack with perfection. When I re-added the original server the connections were again balanced.</p>
<p>The persistence is what determines how the NetScaler determines where to send connections so that subsequent requests are sent to the appropriate server. For Personalization each request contains all of the necessary information for that transaction. In other words there are no “sessions” created for each transaction. This may sound strange, but trust me. I did a full load test after implementing this change and did not encounter any issues with users not receiving or submitting their personalization settings.</p>
<p><a href="http://www.cmschill.net/StringTheory/wp-content/uploads/2010/12/SNAGHTML54b760.png"><img style="background-image: none; padding-left: 0px; padding-right: 0px; display: block; float: none; margin-left: auto; margin-right: auto; padding-top: 0px; border-width: 0px;" title="SNAGHTML54b760" src="http://www.cmschill.net/StringTheory/wp-content/uploads/2010/12/SNAGHTML54b760_thumb.png" border="0" alt="SNAGHTML54b760" width="352" height="316" /></a></p>
<p>As always I welcome all of your comments and questions.</p>
<div class="shr-publisher-101"></div><!-- Start Shareaholic LikeButtonSetBottom Automatic --><!-- End Shareaholic LikeButtonSetBottom Automatic --><div class="feedflare">
<a href="http://feeds.feedburner.com/~ff/StringTheory?a=cvreXsLNWb0:9T5XEkFTGW4:yIl2AUoC8zA"><img src="http://feeds.feedburner.com/~ff/StringTheory?d=yIl2AUoC8zA" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/StringTheory?a=cvreXsLNWb0:9T5XEkFTGW4:F7zBnMyn0Lo"><img src="http://feeds.feedburner.com/~ff/StringTheory?i=cvreXsLNWb0:9T5XEkFTGW4:F7zBnMyn0Lo" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/StringTheory?a=cvreXsLNWb0:9T5XEkFTGW4:V_sGLiPBpWU"><img src="http://feeds.feedburner.com/~ff/StringTheory?i=cvreXsLNWb0:9T5XEkFTGW4:V_sGLiPBpWU" border="0"></img></a>
</div><img src="http://feeds.feedburner.com/~r/StringTheory/~4/cvreXsLNWb0" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://www.cmschill.net/StringTheory/2010/12/16/load-balancing-appsense-personalization-servers-with-citrix-netscaler/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		<feedburner:origLink>http://www.cmschill.net/StringTheory/2010/12/16/load-balancing-appsense-personalization-servers-with-citrix-netscaler/</feedburner:origLink></item>
		<item>
		<title>Atlanta Technical Community Holiday Party – Eventbrite</title>
		<link>http://feedproxy.google.com/~r/StringTheory/~3/sHV4uBc68VQ/</link>
		<comments>http://www.cmschill.net/StringTheory/2010/12/06/atlanta-technical-community-holiday-party-eventbrite/#comments</comments>
		<pubDate>Mon, 06 Dec 2010 19:07:35 +0000</pubDate>
		<dc:creator>Mark Schill</dc:creator>
				<category><![CDATA[Atlanta Citrix User Group]]></category>
		<category><![CDATA[Atlanta PowerShell User Group]]></category>
		<category><![CDATA[User Groups]]></category>

		<guid isPermaLink="false">http://www.cmschill.net/StringTheory/?p=90</guid>
		<description><![CDATA[Atlanta Technical Community Holiday Party Wednesday, December 15, 2010 from 7:00 PM &#8211; 11:00 PM (ET) Sandy Springs, United States This year, Microsoft, will bring the Atlanta technical community together not only in spirit, but in holiday fun as well. We invite you&#160;to join us for a holiday celebration at&#160;{three} Sheets on Wednesday, December 15 [...]]]></description>
			<content:encoded><![CDATA[<!-- Start Shareaholic LikeButtonSetTop Automatic --><div style="clear: both; min-height: 1px; height: 3px; width: 100%;"></div><div class='shareaholic-like-buttonset' style='float:none;height:30px;'><a class='shareaholic-fblike' data-shr_layout='standard' data-shr_showfaces='false' data-shr_href='http%3A%2F%2Fwww.cmschill.net%2FStringTheory%2F2010%2F12%2F06%2Fatlanta-technical-community-holiday-party-eventbrite%2F' data-shr_title='Atlanta+Technical+Community+Holiday+Party+-+Eventbrite'></a><a class='shareaholic-googleplusone' data-shr_size='standard' data-shr_count='true' data-shr_href='http%3A%2F%2Fwww.cmschill.net%2FStringTheory%2F2010%2F12%2F06%2Fatlanta-technical-community-holiday-party-eventbrite%2F' data-shr_title='Atlanta+Technical+Community+Holiday+Party+-+Eventbrite'></a><a class='shareaholic-tweetbutton' data-shr_count='none' data-shr_href='http%3A%2F%2Fwww.cmschill.net%2FStringTheory%2F2010%2F12%2F06%2Fatlanta-technical-community-holiday-party-eventbrite%2F' data-shr_title='Atlanta+Technical+Community+Holiday+Party+-+Eventbrite'></a></div><div style="clear: both; min-height: 1px; height: 3px; width: 100%;"></div><!-- End Shareaholic LikeButtonSetTop Automatic --><h1><span class="summary">Atlanta Technical Community Holiday Party</span></h1>
<h2>Wednesday, December 15, 2010 from 7:00 PM &#8211; 11:00 PM (ET)</h2>
<div id="event_network" style="margin-top: 5px;">
<h2>Sandy Springs, United States</h2>
</div>
<p>This year, Microsoft, will bring the Atlanta technical community together not only in spirit, but in holiday fun as well. We invite you&nbsp;to join us for a holiday celebration at&nbsp;<a href="http://www.threesheetsatlanta.com/" target="_blank">{three} Sheets</a> on Wednesday, December 15 at 7pm.</p>
<p>This will be the perfect event for networking and seeing what&#8217;s going on with the different technologies in the community. When you&#8217;re not mingling, have some fun playing the new Xbox Kinect. Or enjoy some of the delicious appetizers provided by Microsoft.</p>
<p>Don&#8217;t forget, it&#8217;s the giving season! It&#8217;s not required, but please bring an new, unwrapped toy to give to Toys for Tots. We would like to do our part for this wonderful cause.</p>
<hr />
<p><span style="font-family: Helvetica,Arial,sans-serif; font-size: x-small;"><em>This celebration is brought to you by Microsoft and your Atlanta technical community:</em></span></p>
<p>Atlanta BI</p>
<p>Atlanta MDF</p>
<p>Atlanta MS Pros</p>
<p>Atlanta .NET</p>
<p>Atlanta PHP</p>
<p>AWDG</p>
<p>Gwinnett .Net</p>
<p>IASA Atlanta</p>
<p>Silverlight&nbsp;Atlanta</p>
<p><a href="http://atlholidayparty.eventbrite.com/">Atlanta Technical Community Holiday Party &#8211; Eventbrite</a>.</p>
<div class="shr-publisher-90"></div><!-- Start Shareaholic LikeButtonSetBottom Automatic --><!-- End Shareaholic LikeButtonSetBottom Automatic --><div class="feedflare">
<a href="http://feeds.feedburner.com/~ff/StringTheory?a=sHV4uBc68VQ:3oc-MCWBYZ0:yIl2AUoC8zA"><img src="http://feeds.feedburner.com/~ff/StringTheory?d=yIl2AUoC8zA" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/StringTheory?a=sHV4uBc68VQ:3oc-MCWBYZ0:F7zBnMyn0Lo"><img src="http://feeds.feedburner.com/~ff/StringTheory?i=sHV4uBc68VQ:3oc-MCWBYZ0:F7zBnMyn0Lo" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/StringTheory?a=sHV4uBc68VQ:3oc-MCWBYZ0:V_sGLiPBpWU"><img src="http://feeds.feedburner.com/~ff/StringTheory?i=sHV4uBc68VQ:3oc-MCWBYZ0:V_sGLiPBpWU" border="0"></img></a>
</div><img src="http://feeds.feedburner.com/~r/StringTheory/~4/sHV4uBc68VQ" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://www.cmschill.net/StringTheory/2010/12/06/atlanta-technical-community-holiday-party-eventbrite/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		<feedburner:origLink>http://www.cmschill.net/StringTheory/2010/12/06/atlanta-technical-community-holiday-party-eventbrite/</feedburner:origLink></item>
	</channel>
</rss><!-- Dynamic page generated in 0.562 seconds. --><!-- Cached page generated by WP-Super-Cache on 2012-01-31 13:07:35 -->

