<?xml version="1.0" encoding="UTF-8"?><rss version="2.0"
	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/"
	>

<channel>
	<title>XenApp 5 for Server 2008 &#8211; Carl Webster</title>
	<atom:link href="https://www.carlwebster.com/category/xenapp-5-for-windows-server-2008/feed/" rel="self" type="application/rss+xml" />
	<link>https://www.carlwebster.com</link>
	<description>The Accidental Citrix Admin - The site for those who find themselves supporting Citrix involuntarily or accidentally</description>
	<lastBuildDate>Sat, 05 Feb 2022 14:37:17 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>
	hourly	</sy:updatePeriod>
	<sy:updateFrequency>
	1	</sy:updateFrequency>
	<generator>https://wordpress.org/?v=6.8.2</generator>
<site xmlns="com-wordpress:feed-additions:1">42228915</site>	<item>
		<title>XenApp 5 for Windows Server 2008 Documentation Script Version 4.2 Released</title>
		<link>https://www.carlwebster.com/xenapp-5-windows-server-2008-documentation-script-version-4-2-released/</link>
					<comments>https://www.carlwebster.com/xenapp-5-windows-server-2008-documentation-script-version-4-2-released/#comments</comments>
		
		<dc:creator><![CDATA[Carl Webster]]></dc:creator>
		<pubDate>Tue, 05 Aug 2014 10:00:25 +0000</pubDate>
				<category><![CDATA[PowerShell]]></category>
		<category><![CDATA[XenApp 5 for Server 2008]]></category>
		<guid isPermaLink="false">https://www.carlwebster.com/?p=7393</guid>

					<description><![CDATA[A feature that has been requested in all the XenApp documentation scripts for a good while is the ability to print a specific section of the report. This feature, a&#8230;]]></description>
										<content:encoded><![CDATA[<p>A feature that has been requested in all the XenApp documentation scripts for a good while is the ability to print a specific section of the report. This feature, a couple of bug fixes and several enhancements to speed up script execution are what make up Version 4.2.<br />
<span id="more-7393"></span><br />
<strong>Note: This is the last version of this script. Other than bug fixes, there will be no more enhancements or updates to this script.</strong></p>
<p>The list of changes in Version 4.2:</p>
<ul style="padding-left: 60px">
<li>Fix the SWExclusions function to work if SoftwareExclusions.txt file contains only one item</li>
<li>Cleanup the script&#8217;s parameters section</li>
<li>Code cleanup and standardization with the master template script</li>
<li>Requires PowerShell V3 or later</li>
<li>Removed support for Word 2007</li>
<li>Word 2007 references in help text removed</li>
<li>Cover page parameter now states only Word 2010 and 2013 are supported</li>
<li>Most Word 2007 references in script removed:
<ul>
<li>Function ValidateCoverPage</li>
<li>Function SetupWord</li>
<li>Function SaveandCloseDocumentandShutdownWord</li>
</ul>
</li>
<li>Function CheckWord2007SaveAsPDFInstalled removed</li>
<li>If Word 2007 is detected, an error message is now given and the script is aborted</li>
<li>Cleanup Word table code for the first row and background color</li>
<li>Cleanup retrieving services and service startup type with Iain Brighton&#8217;s optimization</li>
<li>Add Iain Brighton&#8217;s Word table functions</li>
<li>Move Citrix Services table to new table functions</li>
<li>Move hardware info to new table functions</li>
<li>Move Citrix and Microsoft hotfix tables to new table functions</li>
<li>Move Appendix A and B tables to new table function</li>
<li>Add more write statements and error handling to the Configuration Logging report section</li>
<li>Added beginning and ending dates for retrieving Configuration Logging data</li>
<li>Add Section parameter</li>
<li>Valid Section options are:
<ul>
<li>Admins (Administrators)</li>
<li>Apps (Applications)</li>
<li>ConfigLog (Configuration Logging)</li>
<li>Farm</li>
<li>LoadEvals (Load Evaluators)</li>
<li>Policies</li>
<li>Printers (Print Drivers and Print Driver Mappings)</li>
<li>Servers</li>
<li>Zones</li>
<li>All</li>
</ul>
</li>
</ul>
<p>Sam Jacobs found a bug in the SWExclusions function. If the SoftwareExclusions.txt file contained a single entry, the function did not work. This is now fixed.</p>
<p>For all the other scripts, I have added new output parameters. The parameters section was getting very ugly looking and over complicated. Turns out I was making that section much more difficult than it needed to be. After simplifying the code, the help text for the parameters, to me, looks much better. Even though this script will not get formatted text or HTML output options, the cleaner parameters section was needed.</p>
<pre class="brush: powershell; title: ; notranslate">
SYNTAX
F:\XA52008_Inventory_V42.ps1 &#x5B;-MSWord] &#x5B;-Hardware] &#x5B;-Software] &#x5B;-StartDate &lt;DateTime&gt;] &#x5B;-EndDate &lt;DateTime&gt;]
&#x5B;-Summary] &#x5B;-AddDateTime] &#x5B;-Section &lt;String&gt;] &#x5B;-CompanyName &lt;String&gt;] &#x5B;-CoverPage &lt;String&gt;] &#x5B;-UserName &lt;String&gt;]
&#x5B;&lt;CommonParameters&gt;]

F:\XA52008_Inventory_V42.ps1 &#x5B;-PDF] &#x5B;-Hardware] &#x5B;-Software] &#x5B;-StartDate &lt;DateTime&gt;] &#x5B;-EndDate &lt;DateTime&gt;]
&#x5B;-Summary] &#x5B;-AddDateTime] &#x5B;-Section &lt;String&gt;] &#x5B;-CompanyName &lt;String&gt;] &#x5B;-CoverPage &lt;String&gt;] &#x5B;-UserName &lt;String&gt;]
&#x5B;&lt;CommonParameters&gt;]
</pre>
<p>I was already deep into converting all my old tables to Iain&#8217;s new Word table functions before I made the decision to stop updating this script. This script contains code from the master template script and therefore requires PowerShell version 3 or later. Also, Word 2007 is no longer supported.</p>
<p>This script contains the code for Iain&#8217;s new table functions and several tables had already been converted:</p>
<ul>
<li>Citrix Services</li>
<li>Hardware Information</li>
<li>Citrix Hotfixes</li>
<li>Microsoft Hotfixes</li>
<li>Appendix A</li>
<li>Appendix B</li>
</ul>
<p>When I was creating the DHCP and Active Directory scripts, I found out the code I was using for the header row in a Word table was too verbose. I learned how to reduce the lines of code needed to set the header row and give it a background color and make the text bold.</p>
<p>I am working with a group of very talented and hard-working friends to create a master template script. One of my new EMEA friends, Iain Brighton, showed me a more efficient way to get the list of services that included the startup mode. My original method required two WMI calls. Iain gets it done in one line resulting in less code and much faster execution time.</p>
<p>When using the new -Section parameter, the report will contain only data for the section you specify. If you need to report on Applications, that is the only data that will be in the report.</p>
<p>Since this script will no longer be updated, I am moving it to the Archive section of the downloads page.</p>
<p><strong>You can always find this script in the Archive section by going to </strong><a title="Current Scripts" href="https://www.carlwebster.com/where-to-get-copies-of-the-documentation-scripts/" target="_blank"><strong>https://www.carlwebster.com/where-to-get-copies-of-the-documentation-scripts/</strong></a></p>
<p>Thanks</p>
<p>Webster</p>
]]></content:encoded>
					
					<wfw:commentRss>https://www.carlwebster.com/xenapp-5-windows-server-2008-documentation-script-version-4-2-released/feed/</wfw:commentRss>
			<slash:comments>9</slash:comments>
		
		
		<post-id xmlns="com-wordpress:feed-additions:1">7393</post-id>	</item>
		<item>
		<title>Important Information for Those Using My XenApp 5 for Windows Server 2008 Documentation Script</title>
		<link>https://www.carlwebster.com/important-information-using-xenapp-5-windows-server-2008-documentation-script/</link>
					<comments>https://www.carlwebster.com/important-information-using-xenapp-5-windows-server-2008-documentation-script/#comments</comments>
		
		<dc:creator><![CDATA[Carl Webster]]></dc:creator>
		<pubDate>Mon, 04 Aug 2014 12:02:29 +0000</pubDate>
				<category><![CDATA[PowerShell]]></category>
		<category><![CDATA[XenApp 5 for Server 2008]]></category>
		<guid isPermaLink="false">https://www.carlwebster.com/?p=7391</guid>

					<description><![CDATA[Currently there are ten documentation scripts that I maintain. There are more that need to be created. I love creating and working on these scripts to make all our lives&#8230;]]></description>
										<content:encoded><![CDATA[<p>Currently there are ten documentation scripts that I maintain.  There are more that need to be created.  I love creating and working on these scripts to make all our lives easier when it comes to documenting the current state of various Citrix and Microsoft products.  But there comes a time when there is just too much for one person to keep up with.  Today, 4-Aug-2014, I released the XenApp 5 for Windows Server 2003 which is the final version and update for that script.  After looking at the download counts for the XenApp 5 for Windows Server 2008 script and the fact that XenApp 5 for Windows Server 2008 goes end-of-life in about five months, I have decided to also pull the plug on this script.  When that script is released tomorrow, there will be no more enhancements or updates (except for bug fixes) to that script.</p>
<p>I am doing my best to get the XenDesktop 5.x and XenDesktop 7.x documentation scripts completed, create a major update for the Active Directory script and change all the scripts to use Iain Brighton&#8217;s highly optimized Word table functions.  I only have so much time in a day and since XenApp 5 is a dead product, I just don&#8217;t see the wisdom in spending all the time required to bring the XenApp 5 documentation scripts up-to-date with Iain&#8217;s work.</p>
<p>Sorry if this disappoints anyone but I am only one person who can only do so much with the time I have.  Plus, I really believe the community would rather see the two XenDesktop documentation scripts released than the XenApp 5 scripts updated.</p>
<p>Thanks</p>
<p>Webster</p>
]]></content:encoded>
					
					<wfw:commentRss>https://www.carlwebster.com/important-information-using-xenapp-5-windows-server-2008-documentation-script/feed/</wfw:commentRss>
			<slash:comments>1</slash:comments>
		
		
		<post-id xmlns="com-wordpress:feed-additions:1">7391</post-id>	</item>
		<item>
		<title>Important Information for Those Using My Documentation Scripts</title>
		<link>https://www.carlwebster.com/important-information-using-documentation-scripts/</link>
					<comments>https://www.carlwebster.com/important-information-using-documentation-scripts/#comments</comments>
		
		<dc:creator><![CDATA[Carl Webster]]></dc:creator>
		<pubDate>Wed, 30 Jul 2014 16:21:43 +0000</pubDate>
				<category><![CDATA[Active Directory]]></category>
		<category><![CDATA[NetScaler]]></category>
		<category><![CDATA[PowerShell]]></category>
		<category><![CDATA[PVS]]></category>
		<category><![CDATA[XenApp]]></category>
		<category><![CDATA[XenApp 5 for Server 2003]]></category>
		<category><![CDATA[XenApp 5 for Server 2008]]></category>
		<category><![CDATA[XenApp 6.0]]></category>
		<category><![CDATA[XenApp 6.5]]></category>
		<category><![CDATA[XenApp/XenDesktop 7.0 - 7.7]]></category>
		<category><![CDATA[XenDesktop 5.x]]></category>
		<guid isPermaLink="false">https://www.carlwebster.com/?p=7374</guid>

					<description><![CDATA[Greetings, New updates to all my documentation scripts will soon be released.  There are some things you need to know first. This is the last update for the XenApp 5&#8230;]]></description>
										<content:encoded><![CDATA[<p>Greetings,</p>
<p>New updates to all my documentation scripts will soon be released.  There are some things you need to know first.</p>
<ul>
<li><strong>This is the last update for the XenApp 5 for Windows Server 2003 script.</strong></li>
<li><strong>All other scripts now require PowerShell version 3 or later.</strong></li>
<li><strong>All other scripts will no longer support Word 2007.</strong></li>
</ul>
<p>The following script updates will soon see the light of day:</p>
<ul>
<li>Active Directory V1.1</li>
<li>DHCP V1.1</li>
<li>PVS V4.2</li>
<li>XenApp 5 for Windows Server 2008 V4.2</li>
<li>XenApp 6 V4.2</li>
<li>XenApp 6.5 V4,2</li>
</ul>
<p>Those testing the XenDesktop scripts will also receive the V0.25 update for both the XenDesktop 5.x and 7.x scripts.</p>
<p>Email me if you would like to be added to the testers group for any of my scripts.</p>
<p>There has been a ton of work going on behind the scenes.  A group of hard-working and dedicated friends have been helping me work on a master template script.  This will allow anyone who wants to create a documentation script to use the template framework and create their own documentation script for any product from any vendor.  Right now the stuff to create Word, PDF and Formatted Text are in the template.  I am not an HTML person and no one has offered to create a generic &#8220;WriteHTMLLine&#8221; type of function(s) like we have for Word.</p>
<p>There are at least four other people I know of, besides me, who are using the new template script as the basis for their documentation scripts.  They have been very instrumental in shaping the template script.  I am not ready to release the template script to the public yet as one person is adding an optional GUI for all the command line parameters and there is no HTML output yet.</p>
<p>Iain Brighton has created a set of highly optimized Word Table functions that can speed up the creation, populating and formatting of Word tables by 95% or more.  Iain has done an amazing amount of work and has produced some fantastic functions that are saving and will save those of us who are using the template script a LOT of time.  Also, those who run the scripts will see a huge time decrease in the amount of time it takes to run the scripts once all the current Word tables are converted to use Iain&#8217;s functions.  I have eight documentation scripts to change so the changes will happen gradually.</p>
<p>I will also, as I convert tables to Iain&#8217;s new functions, start to add formatted text output.  This will allow you to run the scripts without having Word installed.  The DHCP script is the only script that already creates Word, PDF and Formatted Text output files.</p>
<p>Barry Schiffer started and we collaborated on <em>finally</em> fixing the bug with running the scripts on systems with multiple language operating systems and or multiple language versions of Microsoft Word.  That bug fix took a lot of detective work.  Kudos to Barry for leading me towards the solution.  The fix is already in Barry&#8217;s NetScaler V2.0 script.</p>
<p>Thanks</p>
<p>Webster</p>
<p>&nbsp;</p>
<p>&nbsp;</p>
<p>&nbsp;</p>
]]></content:encoded>
					
					<wfw:commentRss>https://www.carlwebster.com/important-information-using-documentation-scripts/feed/</wfw:commentRss>
			<slash:comments>2</slash:comments>
		
		
		<post-id xmlns="com-wordpress:feed-additions:1">7374</post-id>	</item>
		<item>
		<title>Summary Report for Citrix XenApp Farms</title>
		<link>https://www.carlwebster.com/summary-report-for-citrix-xenapp-farms/</link>
					<comments>https://www.carlwebster.com/summary-report-for-citrix-xenapp-farms/#comments</comments>
		
		<dc:creator><![CDATA[Carl Webster]]></dc:creator>
		<pubDate>Mon, 04 Nov 2013 11:00:35 +0000</pubDate>
				<category><![CDATA[PowerShell]]></category>
		<category><![CDATA[XenApp]]></category>
		<category><![CDATA[XenApp 5 for Server 2003]]></category>
		<category><![CDATA[XenApp 5 for Server 2008]]></category>
		<category><![CDATA[XenApp 6.0]]></category>
		<category><![CDATA[XenApp 6.5]]></category>
		<guid isPermaLink="false">https://www.carlwebster.com/?p=6237</guid>

					<description><![CDATA[While speaking at the vCommunity events in the Northeast USA put on by Robert Morris and the fine folks at Advantec Global Services, Inc (http://www.advantec.us/), several script users asked if&#8230;]]></description>
										<content:encoded><![CDATA[<p>While speaking at the vCommunity events in the Northeast USA put on by Robert Morris and the fine folks at Advantec Global Services, Inc (<a href="http://www.advantec.us/">http://www.advantec.us/</a>), several script users asked if I could add a Summary Page at the end of the documentation script.</p>
<p><span id="more-6237"></span></p>
<p>They said their managers often asked for data on how many administrators, published resources, policies, etc were used in a particular XenApp farm.  That was easy to do so I added it while waiting to speak in Philadelphia.  Some input from Mr. App-V Tim Mangan on the report layout and it was done.  I am also making this Summary Page available as a separate script.</p>
<p>This script has no options and no parameters.  It simply runs and creates a one-page report.</p>
<p>Here is a sample run from my lab XenApp 5 for Server 2008:</p>
<p>PS C:\webster&gt; .\xa5_summaryreport.ps1<br />
10/28/2013 16:44:36: Getting Farm data<br />
10/28/2013 16:44:37: Verify farm version<br />
10/28/2013 16:44:37: Farm OS is 2008<br />
10/28/2013 16:44:37: Setting up Word<br />
10/28/2013 16:44:37: Create Word comObject.  Ignore the next message.<br />
10/28/2013 16:44:37: Running Microsoft Word 2010<br />
10/28/2013 16:44:37: Create empty word doc<br />
10/28/2013 16:44:37: Disable grammar and spell checking<br />
10/28/2013 16:44:37: Return focus to main document<br />
10/28/2013 16:44:37: Move to the end of the current document<br />
10/28/2013 16:44:37:<br />
10/28/2013 16:44:37: Processing Administrators<br />
10/28/2013 16:44:37:    Retrieving Administrators<br />
10/28/2013 16:44:37:            Processing administrator <em>CITRIX_BUILTIN</em>&#42;CITRIX_ADMINISTRATORS*<br />
10/28/2013 16:44:37:            Processing administrator XA52008\administrator<br />
10/28/2013 16:44:37:            Processing administrator XA52008\carlwebster<br />
10/28/2013 16:44:37: Finished Processing Administrators<br />
10/28/2013 16:44:37:<br />
10/28/2013 16:44:37: Processing Applications<br />
10/28/2013 16:44:37:    Retrieving Applications<br />
10/28/2013 16:44:37:            Processing application Notepad<br />
10/28/2013 16:44:37:            Processing application Paint<br />
10/28/2013 16:44:37: Finished Processing Applications<br />
10/28/2013 16:44:37:<br />
10/28/2013 16:44:37: Processing Servers<br />
10/28/2013 16:44:37:    Retrieving Servers<br />
10/28/2013 16:44:37:            Processing server XA52008<br />
10/28/2013 16:44:37: Finished Processing Servers<br />
10/28/2013 16:44:37:<br />
10/28/2013 16:44:37: Processing Zones<br />
10/28/2013 16:44:37:    Setting summary variables<br />
10/28/2013 16:44:37:    Retrieving Zone Information<br />
10/28/2013 16:44:37: Finished Processing Zones<br />
10/28/2013 16:44:38:<br />
10/28/2013 16:44:38: Processing Load Evaluators<br />
10/28/2013 16:44:38:    Retrieving Load Evaluators<br />
10/28/2013 16:44:38: Finished Processing Load Evaluators<br />
10/28/2013 16:44:38:<br />
10/28/2013 16:44:38: Processing Policies<br />
10/28/2013 16:44:38:    Retrieving Policies<br />
10/28/2013 16:44:38:    Processing policy Everything including the kitchen sink<br />
10/28/2013 16:44:38: Finished Processing Policies<br />
10/28/2013 16:44:38:<br />
10/28/2013 16:44:38: Processing Print Drivers<br />
10/28/2013 16:44:38:    Retrieving Print Drivers<br />
10/28/2013 16:44:38:            Processing driver Citrix Universal Printer<br />
10/28/2013 16:44:38:            Processing driver Citrix XPS Universal Printer<br />
10/28/2013 16:44:38:            Processing driver HP Color LaserJet 2800 Series PS<br />
10/28/2013 16:44:38:            Processing driver HP Color LaserJet 4500 PCL 5<br />
10/28/2013 16:44:38:            Processing driver HP Color LaserJet 4500 PS<br />
10/28/2013 16:44:38:            Processing driver HP LaserJet Series II<br />
10/28/2013 16:44:38:            Processing driver Microsoft XPS Document Writer<br />
10/28/2013 16:44:38:            Processing driver Terminal Services Easy Print<br />
10/28/2013 16:44:38: Finished Processing Print Drivers<br />
10/28/2013 16:44:38:<br />
10/28/2013 16:44:38: Processing Printer Driver Mappings<br />
10/28/2013 16:44:38:    Retrieving Print Driver Mappings<br />
10/28/2013 16:44:38: There are no Printer Driver Mappings created<br />
10/28/2013 16:44:38: Finished Processing Printer Driver Mappings<br />
10/28/2013 16:44:38:<br />
10/28/2013 16:44:38:<br />
10/28/2013 16:44:38: Create Summary Report<br />
10/28/2013 16:44:38: Add administrator summary info<br />
10/28/2013 16:44:39: Add application summary info<br />
10/28/2013 16:44:40: Add server summary info<br />
10/28/2013 16:44:40: Add zone summary info<br />
10/28/2013 16:44:41: Add load evaluator summary info<br />
10/28/2013 16:44:41: Add policy summary info<br />
10/28/2013 16:44:41: Add print driver summary info<br />
10/28/2013 16:44:42: Add print driver mapping summary info<br />
10/28/2013 16:44:42: Add configuration logging summary info<br />
10/28/2013 16:44:43:    Finished Create Summary Page<br />
10/28/2013 16:44:43:<br />
10/28/2013 16:44:43: Finishing up Word document<br />
10/28/2013 16:44:43: Save and Close document and Shutdown Word<br />
10/28/2013 16:44:43: Closing Word<br />
10/28/2013 16:44:43: System Cleanup<br />
10/28/2013 16:44:43:<br />
10/28/2013 16:44:43: Script has completed<br />
10/28/2013 16:44:43:<br />
10/28/2013 16:44:43: C:\webster\Summary Report for XA52008.docx is ready for use<br />
10/28/2013 16:44:43:<br />
PS C:\webster&gt;</p>
<div class="mceTemp"></div>
<p><strong>You can always find the most current script by going to </strong><a title="Current Scripts" href="https://www.carlwebster.com/downloads/" target="_blank" rel="noopener noreferrer"><strong>https://www.carlwebster.com/where-to-get-copies-of-the-documentation-scripts/</strong></a></p>
<p>I hope you find this script useful.</p>
<p>Thanks</p>
<p>Webster</p>
]]></content:encoded>
					
					<wfw:commentRss>https://www.carlwebster.com/summary-report-for-citrix-xenapp-farms/feed/</wfw:commentRss>
			<slash:comments>4</slash:comments>
		
		
		<post-id xmlns="com-wordpress:feed-additions:1">6237</post-id>	</item>
		<item>
		<title>Webster&#8217;s Citrix Documentation Scripts and Microsoft PowerShell Version 3</title>
		<link>https://www.carlwebster.com/websters-citrix-documentation-scripts-and-microsoft-powershell-version-3/</link>
					<comments>https://www.carlwebster.com/websters-citrix-documentation-scripts-and-microsoft-powershell-version-3/#comments</comments>
		
		<dc:creator><![CDATA[Carl Webster]]></dc:creator>
		<pubDate>Tue, 10 Sep 2013 21:41:23 +0000</pubDate>
				<category><![CDATA[PowerShell]]></category>
		<category><![CDATA[PVS]]></category>
		<category><![CDATA[Server 2012]]></category>
		<category><![CDATA[XenApp 5 for Server 2008]]></category>
		<category><![CDATA[XenApp 6.0]]></category>
		<category><![CDATA[XenApp 6.5]]></category>
		<category><![CDATA[PowerShell V2]]></category>
		<category><![CDATA[PowerShell V3]]></category>
		<guid isPermaLink="false">https://www.carlwebster.com/?p=6134</guid>

					<description><![CDATA[I am in the process of creating V4 of the PVS and XenApp documentation scripts.  As part of the process I wanted to make sure all the current and future&#8230;]]></description>
										<content:encoded><![CDATA[<p>I am in the process of creating V4 of the PVS and XenApp documentation scripts.  As part of the process I wanted to make sure all the current and future scripts worked with PowerShell Version 3.</p>
<p><span id="more-6134"></span></p>
<p>The following were tested:</p>
<ul>
<li>XenApp 5 on Windows Server 2008 Sp2, both PowerShell V2 and V3 &#8211; script versions 2 and the in development V4.</li>
<li>XenApp 6 on Windows Server 2008 R2 SP1, both PowerShell V2 and V3 &#8211; script versions 3 and the in development V4.</li>
<li>XenApp 6.5 on Windows Server 2008 R2 SP1, both PowerShell V2 and V3 &#8211; script versions 3.1 and the in development V4.</li>
<li>The PVS version 3 script was updated to support PVS 7.0 running on Server 2012.  Server 2012 includes PowerShell V3 so the PVS script has already been tested with PowerShell V3.</li>
</ul>
<p>All the V4 scripts are being developed exclusively with PowerShell V3.  When PowerShell V4 is released, I will retest my documentation scripts with it.</p>
<p>I have updated all the appropriate ReadMe files and the <a title="Where to Get Copies of the Various Documentation Scripts" href="https://www.carlwebster.com/where-to-get-copies-of-the-documentation-scripts/" target="_blank">Where to Get Copies of the Various Documentation Scripts</a> article.</p>
<p>Thanks</p>
<p>Webster</p>
]]></content:encoded>
					
					<wfw:commentRss>https://www.carlwebster.com/websters-citrix-documentation-scripts-and-microsoft-powershell-version-3/feed/</wfw:commentRss>
			<slash:comments>2</slash:comments>
		
		
		<post-id xmlns="com-wordpress:feed-additions:1">6134</post-id>	</item>
		<item>
		<title>E2E 2012 Hamburg, Germany Presentation (10 things in AD that can hurt your Application and Desktop Virtualization efforts and how to fix them)</title>
		<link>https://www.carlwebster.com/e2e-2012-hamburg/</link>
		
		<dc:creator><![CDATA[Carl Webster]]></dc:creator>
		<pubDate>Sat, 03 Nov 2012 16:00:12 +0000</pubDate>
				<category><![CDATA[Active Directory]]></category>
		<category><![CDATA[Blog]]></category>
		<category><![CDATA[Presentations]]></category>
		<category><![CDATA[XenApp]]></category>
		<category><![CDATA[XenApp 5 for Server 2003]]></category>
		<category><![CDATA[XenApp 5 for Server 2008]]></category>
		<category><![CDATA[XenApp 6.0]]></category>
		<category><![CDATA[XenApp 6.5]]></category>
		<category><![CDATA[XenDesktop 5.x]]></category>
		<guid isPermaLink="false">https://www.carlwebster.com/?p=4976</guid>

					<description><![CDATA[Greetings, If you came to my presentation at the Experts to Experts Conference in Hamburg, Germany thanks for being there. This presentation is different from the Synergy San Francisco version&#8230;]]></description>
										<content:encoded><![CDATA[<p>Greetings,</p>
<p>If you came to my presentation at the Experts to Experts Conference in Hamburg, Germany thanks for being there. This presentation is different from the Synergy San Francisco version in that I added content for:</p>
<ul>
<li>Server 2012 AD</li>
<li>Dell vWorkspace</li>
<li>RES Workspace Manager</li>
<li>VMware View</li>
</ul>
<p>I would like to thank the following people for their help in putting together the information and for verifying its accuracy and up-to-dateness.</p>
<p>Michael B. Smith, Exchange MVP, <a title="The Essential Exchange" href="https://www.essential.exchange/blog/" target="_blank" rel="noopener noreferrer">https://www.essential.exchange/blog/</a></p>
<p>Brian Desmond, Directory Services MVP, <a title="Brian Desmond" href="http://BrianDesmond.com" target="_blank" rel="noopener noreferrer">http://BrianDesmond.com</a></p>
<p>Andrew S. Baker, Directory Services Expert, <a title="Andrew S. Baker" href="http://about.me/Andrew.S.Baker" target="_blank" rel="noopener noreferrer">http://about.me/Andrew.S.Baker</a></p>
<p>Jo Harder, former Citrix XenApp product architect, now at <a href="https://www.linkedin.com/in/joharder/" target="_blank" rel="noopener noreferrer">https://www.linkedin.com/in/joharder/</a></p>
<p>Bob Free, Directory Services Expert, PG&amp;E, Enterprise Shared Technology and Services</p>
<p>Michel Roth, Product Manager Quest Workspace, Microsoft MVP Remote Desktop Services for information on Quest Workspace Desktop Virtualization</p>
<p>Scott Bowling, Pride Technologies for information on Quest Workspace Desktop Virtualization</p>
<p>Sander van der Hoek, IBM, RES Software Certified Professional for information on RES Workspace Manager</p>
<p>Andre Leibovici, View Architect, Office of CTO &#8211; End User Computing VMware for help in finding VMware View information</p>
<p>A special Thank You goes to Echo_S from Experts Exchange for helping me resolve an issue with generating the PDF version of this presentation.</p>
<p><strong>You can always find the most current PDF by going to </strong><a title="Current Scripts" href="https://www.carlwebster.com/downloads/" target="_blank" rel="noopener noreferrer"><strong>https://www.carlwebster.com/where-to-get-copies-of-the-documentation-scripts/</strong></a></p>
<p>Thanks</p>
<p>Webster</p>
]]></content:encoded>
					
		
		
		<post-id xmlns="com-wordpress:feed-additions:1">4976</post-id>	</item>
		<item>
		<title>Synergy 2012 Barcelona Geek Speak Live Presentation (10 things in AD that can hurt XenDesktop or XenApp and how to fix them)</title>
		<link>https://www.carlwebster.com/synergy-2012-barcelona/</link>
		
		<dc:creator><![CDATA[Carl Webster]]></dc:creator>
		<pubDate>Thu, 18 Oct 2012 07:30:22 +0000</pubDate>
				<category><![CDATA[Active Directory]]></category>
		<category><![CDATA[Blog]]></category>
		<category><![CDATA[Presentations]]></category>
		<category><![CDATA[XenApp]]></category>
		<category><![CDATA[XenApp 5 for Server 2003]]></category>
		<category><![CDATA[XenApp 5 for Server 2008]]></category>
		<category><![CDATA[XenApp 6.0]]></category>
		<category><![CDATA[XenApp 6.5]]></category>
		<category><![CDATA[XenDesktop 5.x]]></category>
		<guid isPermaLink="false">https://www.carlwebster.com/?p=4973</guid>

					<description><![CDATA[Greetings, If you came to my presentation at Synergy 2012 in Barcelona, thanks for being there. I would like to thank the following people for their help in putting together&#8230;]]></description>
										<content:encoded><![CDATA[<p>Greetings,</p>
<p>If you came to my presentation at Synergy 2012 in Barcelona, thanks for being there.</p>
<p>I would like to thank the following people for their help in putting together the information and for verifying its accuracy and up-to-dateness.</p>
<p>Michael B. Smith, Exchange MVP, <a title="The Essential Exchange" href="https://www.essential.exchange/blog/" target="_blank" rel="noopener noreferrer">https://www.essential.exchange/blog/</a></p>
<p>Brian Desmond, Directory Services MVP, <a title="Brian Desmond" href="http://BrianDesmond.com" target="_blank" rel="noopener noreferrer">http://BrianDesmond.com</a></p>
<p>Andrew S. Baker, Directory Services Expert, <a title="Andrew S. Baker" href="http://about.me/Andrew.S.Baker" target="_blank" rel="noopener noreferrer">http://about.me/Andrew.S.Baker</a></p>
<p>Jo Harder, former Citrix XenApp product architect, now at <a href="https://www.linkedin.com/in/joharder/" target="_blank" rel="noopener noreferrer">https://www.linkedin.com/in/joharder/</a></p>
<p>Bob Free, Directory Services Expert, PG&amp;E, Enterprise Shared Technology and Services</p>
<p><strong>You can always find the most current PDF by going to </strong><a title="Current Scripts" href="https://www.carlwebster.com/downloads/" target="_blank" rel="noopener noreferrer"><strong>https://www.carlwebster.com/where-to-get-copies-of-the-documentation-scripts/</strong></a></p>
<p>Thanks</p>
<p>Webster</p>
]]></content:encoded>
					
		
		
		<post-id xmlns="com-wordpress:feed-additions:1">4973</post-id>	</item>
		<item>
		<title>BriForum 2012 Chicago Presentation (10 things in AD that can hurt your Application and Desktop Virtualization efforts and how to fix them)</title>
		<link>https://www.carlwebster.com/briforum-2012-chicago/</link>
					<comments>https://www.carlwebster.com/briforum-2012-chicago/#comments</comments>
		
		<dc:creator><![CDATA[Carl Webster]]></dc:creator>
		<pubDate>Wed, 25 Jul 2012 14:15:10 +0000</pubDate>
				<category><![CDATA[Active Directory]]></category>
		<category><![CDATA[Blog]]></category>
		<category><![CDATA[Presentations]]></category>
		<category><![CDATA[XenApp]]></category>
		<category><![CDATA[XenApp 5 for Server 2003]]></category>
		<category><![CDATA[XenApp 5 for Server 2008]]></category>
		<category><![CDATA[XenApp 6.0]]></category>
		<category><![CDATA[XenApp 6.5]]></category>
		<category><![CDATA[XenDesktop 5.x]]></category>
		<guid isPermaLink="false">https://www.carlwebster.com/?p=4943</guid>

					<description><![CDATA[Greetings, If you came to my presentation at BriForum 2012 in Chicago, thanks for being there.  This presentation is different from the Synergy version in that I added content for:&#8230;]]></description>
										<content:encoded><![CDATA[<p>Greetings,</p>
<p>If you came to my presentation at BriForum 2012 in Chicago, thanks for being there.  This presentation is different from the Synergy version in that I added content for:</p>
<ul>
<li>Server 2012 AD</li>
<li>Quest Workspace Desktop Virtualization</li>
<li>RES Workspace Manager</li>
<li>VMware View</li>
</ul>
<p>I would like to thank the following people for their help in putting together the information and for verifying its accuracy and up-to-dateness.</p>
<p>Michael B. Smith, Exchange MVP, <a title="The Essential Exchange" href="https://www.essential.exchange/blog/" target="_blank" rel="noopener noreferrer">https://www.essential.exchange/blog/</a></p>
<p>Brian Desmond, Directory Services MVP, <a title="Brian Desmond" href="http://BrianDesmond.com" target="_blank" rel="noopener noreferrer">http://BrianDesmond.com</a></p>
<p>Andrew S. Baker, Directory Services Expert, <a title="Andrew S. Baker" href="http://about.me/Andrew.S.Baker" target="_blank" rel="noopener noreferrer">http://about.me/Andrew.S.Baker</a></p>
<p>Jo Harder, former Citrix XenApp product architect, now at <a href="https://www.linkedin.com/in/joharder/" target="_blank" rel="noopener noreferrer">https://www.linkedin.com/in/joharder/</a></p>
<p>Bob Free, Directory Services Expert, PG&amp;E, Enterprise Shared Technology and Services</p>
<p>Michel Roth, Product Manager Quest Workspace, Microsoft MVP Remote Desktop Services for information on Quest Workspace Desktop Virtualization</p>
<p>Scott Bowling, Pride Technologies for information on Quest Workspace Desktop Virtualization</p>
<p>Sander van der Hoek, IBM, RES Software Certified Professional for information on RES Workspace Manager</p>
<p>Andre Leibovici, View Architect, Office of CTO &#8211; End User Computing VMware for help in finding VMware View information</p>
<p><strong>You can always find the most current PDF by going to </strong><a title="Current Scripts" href="https://www.carlwebster.com/downloads/" target="_blank" rel="noopener noreferrer"><strong>https://www.carlwebster.com/where-to-get-copies-of-the-documentation-scripts/</strong></a></p>
<p>Thanks</p>
<p>Webster</p>
]]></content:encoded>
					
					<wfw:commentRss>https://www.carlwebster.com/briforum-2012-chicago/feed/</wfw:commentRss>
			<slash:comments>2</slash:comments>
		
		
		<post-id xmlns="com-wordpress:feed-additions:1">4943</post-id>	</item>
		<item>
		<title>Post Citrix Synergy 2012 Presentation for AGSI (10 things in AD that can hurt XenDesktop or XenApp and how to fix them)</title>
		<link>https://www.carlwebster.com/post-citrixsynergy-agsi/</link>
					<comments>https://www.carlwebster.com/post-citrixsynergy-agsi/#comments</comments>
		
		<dc:creator><![CDATA[Carl Webster]]></dc:creator>
		<pubDate>Thu, 14 Jun 2012 12:15:39 +0000</pubDate>
				<category><![CDATA[Active Directory]]></category>
		<category><![CDATA[Blog]]></category>
		<category><![CDATA[Presentations]]></category>
		<category><![CDATA[XenApp]]></category>
		<category><![CDATA[XenApp 5 for Server 2003]]></category>
		<category><![CDATA[XenApp 5 for Server 2008]]></category>
		<category><![CDATA[XenApp 6.0]]></category>
		<category><![CDATA[XenApp 6.5]]></category>
		<category><![CDATA[XenDesktop 5.x]]></category>
		<guid isPermaLink="false">https://www.carlwebster.com/?p=4918</guid>

					<description><![CDATA[Greetings, If you came to my presentation at AGSI&#8217;s Post Citrix Synergy 2012 event in Charlotte, NC thanks for being there. I would like to thank the following people for&#8230;]]></description>
										<content:encoded><![CDATA[<p>Greetings,</p>
<p>If you came to my presentation at AGSI&#8217;s Post Citrix Synergy 2012 event in Charlotte, NC thanks for being there.</p>
<p>I would like to thank the following people for their help in putting together the information and for verifying its accuracy and up-to-dateness.</p>
<p>Michael B. Smith, Exchange MVP, <a title="The Essential Exchange" href="https://www.essential.exchange/blog/" target="_blank" rel="noopener noreferrer">https://www.essential.exchange/blog/</a></p>
<p>Brian Desmond, Directory Services MVP, <a title="Brian Desmond" href="http://BrianDesmond.com" target="_blank" rel="noopener noreferrer">http://BrianDesmond.com</a></p>
<p>Andrew S. Baker, Directory Services Expert, <a title="Andrew S. Baker" href="http://about.me/Andrew.S.Baker" target="_blank" rel="noopener noreferrer">http://about.me/Andrew.S.Baker</a></p>
<p>Jo Harder, former Citrix XenApp product architect, now at <a href="https://www.linkedin.com/in/joharder/" target="_blank" rel="noopener noreferrer">https://www.linkedin.com/in/joharder/</a></p>
<p><strong>You can always find the most current PDF by going to </strong><a title="Current Scripts" href="https://www.carlwebster.com/downloads/" target="_blank" rel="noopener noreferrer"><strong>https://www.carlwebster.com/where-to-get-copies-of-the-documentation-scripts/</strong></a></p>
<p>Thanks</p>
<p>Webster</p>
]]></content:encoded>
					
					<wfw:commentRss>https://www.carlwebster.com/post-citrixsynergy-agsi/feed/</wfw:commentRss>
			<slash:comments>2</slash:comments>
		
		
		<post-id xmlns="com-wordpress:feed-additions:1">4918</post-id>	</item>
		<item>
		<title>Synergy 2012 San Francisco Geek Speak Live Presentation (10 things in AD that can hurt XenDesktop or XenApp and how to fix them)</title>
		<link>https://www.carlwebster.com/synergy-2012-san-fancisco-geek-speak-live-presentation/</link>
					<comments>https://www.carlwebster.com/synergy-2012-san-fancisco-geek-speak-live-presentation/#comments</comments>
		
		<dc:creator><![CDATA[Carl Webster]]></dc:creator>
		<pubDate>Fri, 11 May 2012 21:00:53 +0000</pubDate>
				<category><![CDATA[Active Directory]]></category>
		<category><![CDATA[Blog]]></category>
		<category><![CDATA[Presentations]]></category>
		<category><![CDATA[XenApp]]></category>
		<category><![CDATA[XenApp 5 for Server 2003]]></category>
		<category><![CDATA[XenApp 5 for Server 2008]]></category>
		<category><![CDATA[XenApp 6.0]]></category>
		<category><![CDATA[XenApp 6.5]]></category>
		<category><![CDATA[XenDesktop 5.x]]></category>
		<guid isPermaLink="false">https://www.carlwebster.com/?p=4906</guid>

					<description><![CDATA[Greetings, If you came to my presentation at Citrix Synergy 2012 in San Francisco, thanks for being there. I would like to thank the following people for their help in&#8230;]]></description>
										<content:encoded><![CDATA[<p>Greetings,</p>
<p>If you came to my presentation at Citrix Synergy 2012 in San Francisco, thanks for being there.</p>
<p>I would like to thank the following people for their help in putting together the information and for verifying its accuracy and up-to-dateness.</p>
<p>Michael B. Smith, Exchange MVP, <a title="The Essential Exchange" href="https://www.essential.exchange/blog/" target="_blank" rel="noopener noreferrer">https://www.essential.exchange/blog/</a></p>
<p>Brian Desmond, Directory Services MVP, <a title="Brian Desmond" href="http://BrianDesmond.com" target="_blank" rel="noopener noreferrer">http://BrianDesmond.com</a></p>
<p>Andrew S. Baker, Directory Services Expert, <a title="Andrew S. Baker" href="http://about.me/Andrew.S.Baker" target="_blank" rel="noopener noreferrer">http://about.me/Andrew.S.Baker</a></p>
<p>Jo Harder, former Citrix XenApp product architect, now at <a href="https://www.linkedin.com/in/joharder/" target="_blank" rel="noopener noreferrer">https://www.linkedin.com/in/joharder/</a></p>
<p><strong>You can always find the most current PDF by going to </strong><a title="Current Scripts" href="https://www.carlwebster.com/downloads/" target="_blank" rel="noopener noreferrer"><strong>https://www.carlwebster.com/where-to-get-copies-of-the-documentation-scripts/</strong></a></p>
<p>Thanks</p>
<p>Webster</p>
]]></content:encoded>
					
					<wfw:commentRss>https://www.carlwebster.com/synergy-2012-san-fancisco-geek-speak-live-presentation/feed/</wfw:commentRss>
			<slash:comments>12</slash:comments>
		
		
		<post-id xmlns="com-wordpress:feed-additions:1">4906</post-id>	</item>
		<item>
		<title>How To Digitally Sign a Microsoft PowerShell Script with a Third-Party Code Signing Certificate (Update April 4, 2012)</title>
		<link>https://www.carlwebster.com/how-to-digitally-sign-a-microsoft-powershell-script-with-a-third-party-code-signing-certificate/</link>
					<comments>https://www.carlwebster.com/how-to-digitally-sign-a-microsoft-powershell-script-with-a-third-party-code-signing-certificate/#comments</comments>
		
		<dc:creator><![CDATA[Carl Webster]]></dc:creator>
		<pubDate>Fri, 30 Sep 2011 20:00:08 +0000</pubDate>
				<category><![CDATA[PowerShell]]></category>
		<category><![CDATA[XenApp]]></category>
		<category><![CDATA[XenApp 5 for Server 2003]]></category>
		<category><![CDATA[XenApp 5 for Server 2008]]></category>
		<category><![CDATA[XenApp 6.0]]></category>
		<category><![CDATA[XenApp 6.5]]></category>
		<category><![CDATA[code signing]]></category>
		<category><![CDATA[powershell]]></category>
		<guid isPermaLink="false">http://webster.skyrocket.ltd/?p=3705</guid>

					<description><![CDATA[I recently wrote an article on using Microsoft PowerShell to document a Citrix XenApp 6.0 farm.  I am also in the process of finishing up follow-up articles for XenApp 5&#8230;]]></description>
										<content:encoded><![CDATA[<p>I recently wrote an article on using Microsoft PowerShell to document a Citrix XenApp 6.0 farm.  I am also in the process of finishing up follow-up articles for XenApp 5 and XenApp 6.5.  One of the options I wanted to make available is a digitally signed copy of the script used in that article.  As there may be environments where only signed PowerShell scripts are allowed, I want to make signed copies of all my PowerShell scripts available.  I still consider myself a PowerShell rookie, so I wanted to document what I had to go through to sign a PowerShell script.</p>
<p><strong>Update: I now use the Digicert Certificate Utility for Windows to sign all my scripts.</strong></p>
<p><a href="https://www.digicert.com/kb/code-signing/digicert-certificate-utility-to-sign-code.htm" target="_blank" rel="noopener noreferrer">Code Signing with the DigiCert® Certificate Utility for Windows</a></p>
<p>The first thing needed is to request a code signing certificate.  At DigiCert, I clicked on <em>Code Signing Certificates </em>(Figure 1).</p>
<figure id="attachment_20993" aria-describedby="caption-attachment-20993" style="width: 977px" class="wp-caption alignnone"><img fetchpriority="high" decoding="async" class="size-full wp-image-20993" src="https://www.carlwebster.com/wp-content/uploads/2011/09/Figure001-2.png" alt="Figure 1" width="977" height="438" srcset="https://www.carlwebster.com/wp-content/uploads/2011/09/Figure001-2.png 977w, https://www.carlwebster.com/wp-content/uploads/2011/09/Figure001-2-530x238.png 530w, https://www.carlwebster.com/wp-content/uploads/2011/09/Figure001-2-900x403.png 900w, https://www.carlwebster.com/wp-content/uploads/2011/09/Figure001-2-768x344.png 768w, https://www.carlwebster.com/wp-content/uploads/2011/09/Figure001-2-600x269.png 600w" sizes="(max-width: 977px) 100vw, 977px" /><figcaption id="caption-attachment-20993" class="wp-caption-text">Figure 1</figcaption></figure>
<p>I then selected <em>Buy Now</em> (Figure 2).</p>
<figure id="attachment_20995" aria-describedby="caption-attachment-20995" style="width: 746px" class="wp-caption alignnone"><img decoding="async" class="size-full wp-image-20995" src="https://www.carlwebster.com/wp-content/uploads/2011/09/Figure002-2.png" alt="Figure 2" width="746" height="552" srcset="https://www.carlwebster.com/wp-content/uploads/2011/09/Figure002-2.png 746w, https://www.carlwebster.com/wp-content/uploads/2011/09/Figure002-2-405x300.png 405w, https://www.carlwebster.com/wp-content/uploads/2011/09/Figure002-2-600x444.png 600w" sizes="(max-width: 746px) 100vw, 746px" /><figcaption id="caption-attachment-20995" class="wp-caption-text">Figure 2</figcaption></figure>
<p>I then selected <em>Code Signing Cert, </em>a <em>Validity Period, </em>and clicked <em>Continue</em> (Figure 3).</p>
<figure id="attachment_20996" aria-describedby="caption-attachment-20996" style="width: 746px" class="wp-caption alignnone"><img decoding="async" class="size-full wp-image-20996" src="https://www.carlwebster.com/wp-content/uploads/2011/09/Figure003-2.png" alt="Figure 3" width="746" height="792" srcset="https://www.carlwebster.com/wp-content/uploads/2011/09/Figure003-2.png 746w, https://www.carlwebster.com/wp-content/uploads/2011/09/Figure003-2-283x300.png 283w, https://www.carlwebster.com/wp-content/uploads/2011/09/Figure003-2-600x637.png 600w" sizes="(max-width: 746px) 100vw, 746px" /><figcaption id="caption-attachment-20996" class="wp-caption-text">Figure 3</figcaption></figure>
<p>Next, I selected <em>Microsoft Authenticode</em> and clicked <em>Continue </em>(Figure 4).</p>
<figure id="attachment_20997" aria-describedby="caption-attachment-20997" style="width: 746px" class="wp-caption alignnone"><img loading="lazy" decoding="async" class="size-full wp-image-20997" src="https://www.carlwebster.com/wp-content/uploads/2011/09/Figure004-2.png" alt="Figure 4" width="746" height="740" srcset="https://www.carlwebster.com/wp-content/uploads/2011/09/Figure004-2.png 746w, https://www.carlwebster.com/wp-content/uploads/2011/09/Figure004-2-302x300.png 302w, https://www.carlwebster.com/wp-content/uploads/2011/09/Figure004-2-150x150.png 150w, https://www.carlwebster.com/wp-content/uploads/2011/09/Figure004-2-100x100.png 100w, https://www.carlwebster.com/wp-content/uploads/2011/09/Figure004-2-600x595.png 600w" sizes="auto, (max-width: 746px) 100vw, 746px" /><figcaption id="caption-attachment-20997" class="wp-caption-text">Figure 4</figcaption></figure>
<p>Next, I filled in my <em>Organization Details</em> and clicked <em>Continue</em> (Figure 5).</p>
<figure id="attachment_20998" aria-describedby="caption-attachment-20998" style="width: 759px" class="wp-caption alignnone"><img loading="lazy" decoding="async" class="size-full wp-image-20998" src="https://www.carlwebster.com/wp-content/uploads/2011/09/Figure005-2.png" alt="Figure 5" width="759" height="540" srcset="https://www.carlwebster.com/wp-content/uploads/2011/09/Figure005-2.png 759w, https://www.carlwebster.com/wp-content/uploads/2011/09/Figure005-2-422x300.png 422w, https://www.carlwebster.com/wp-content/uploads/2011/09/Figure005-2-600x427.png 600w" sizes="auto, (max-width: 759px) 100vw, 759px" /><figcaption id="caption-attachment-20998" class="wp-caption-text">Figure 5</figcaption></figure>
<p>I then filled in my <em>Contact Details</em> and clicked <em>Continue</em> (Figure 6).</p>
<figure id="attachment_20999" aria-describedby="caption-attachment-20999" style="width: 742px" class="wp-caption alignnone"><img loading="lazy" decoding="async" class="size-full wp-image-20999" src="https://www.carlwebster.com/wp-content/uploads/2011/09/Figure006-2.png" alt="Figure 6" width="742" height="564" srcset="https://www.carlwebster.com/wp-content/uploads/2011/09/Figure006-2.png 742w, https://www.carlwebster.com/wp-content/uploads/2011/09/Figure006-2-395x300.png 395w, https://www.carlwebster.com/wp-content/uploads/2011/09/Figure006-2-600x456.png 600w" sizes="auto, (max-width: 742px) 100vw, 742px" /><figcaption id="caption-attachment-20999" class="wp-caption-text">Figure 6</figcaption></figure>
<p>I removed the Payment step information.  I selected <em>I agree to the Terms of Service above</em> and clicked <em>Complete Order</em> (Figure 7).</p>
<figure id="attachment_21000" aria-describedby="caption-attachment-21000" style="width: 742px" class="wp-caption alignnone"><img loading="lazy" decoding="async" class="size-full wp-image-21000" src="https://www.carlwebster.com/wp-content/uploads/2011/09/Figure007-1.png" alt="Figure 7" width="742" height="548" srcset="https://www.carlwebster.com/wp-content/uploads/2011/09/Figure007-1.png 742w, https://www.carlwebster.com/wp-content/uploads/2011/09/Figure007-1-406x300.png 406w, https://www.carlwebster.com/wp-content/uploads/2011/09/Figure007-1-600x443.png 600w" sizes="auto, (max-width: 742px) 100vw, 742px" /><figcaption id="caption-attachment-21000" class="wp-caption-text">Figure 7</figcaption></figure>
<p>I then received an e-mail from DigiCert Support asking me to verify that I did request a Code Signing Certificate.  After I replied to the e-mail in the affirmative, I received another e-mail with a link to create the code-signing certificate (Figure 8).</p>
<figure id="attachment_21001" aria-describedby="caption-attachment-21001" style="width: 823px" class="wp-caption alignnone"><img loading="lazy" decoding="async" class="size-full wp-image-21001" src="https://www.carlwebster.com/wp-content/uploads/2011/09/Figure008-1.png" alt="Figure 8" width="823" height="285" srcset="https://www.carlwebster.com/wp-content/uploads/2011/09/Figure008-1.png 823w, https://www.carlwebster.com/wp-content/uploads/2011/09/Figure008-1-530x184.png 530w, https://www.carlwebster.com/wp-content/uploads/2011/09/Figure008-1-768x266.png 768w, https://www.carlwebster.com/wp-content/uploads/2011/09/Figure008-1-600x208.png 600w" sizes="auto, (max-width: 823px) 100vw, 823px" /><figcaption id="caption-attachment-21001" class="wp-caption-text">Figure 8</figcaption></figure>
<p>Clicking the link in the e-mail opens my Internet browser with the following popup (Figure 9).  I clicked <em>Yes</em>.</p>
<figure id="attachment_21002" aria-describedby="caption-attachment-21002" style="width: 415px" class="wp-caption alignnone"><img loading="lazy" decoding="async" class="size-full wp-image-21002" src="https://www.carlwebster.com/wp-content/uploads/2011/09/Figure009-1.png" alt="Figure 9" width="415" height="229" /><figcaption id="caption-attachment-21002" class="wp-caption-text">Figure 9</figcaption></figure>
<p>Which then took me to the web site shown in Figure 10.  I then clicked <em>Generate Certificate</em>.</p>
<figure id="attachment_21003" aria-describedby="caption-attachment-21003" style="width: 824px" class="wp-caption alignnone"><img loading="lazy" decoding="async" class="size-full wp-image-21003" src="https://www.carlwebster.com/wp-content/uploads/2011/09/Figure010-1.png" alt="Figure 10" width="824" height="416" srcset="https://www.carlwebster.com/wp-content/uploads/2011/09/Figure010-1.png 824w, https://www.carlwebster.com/wp-content/uploads/2011/09/Figure010-1-530x268.png 530w, https://www.carlwebster.com/wp-content/uploads/2011/09/Figure010-1-768x388.png 768w, https://www.carlwebster.com/wp-content/uploads/2011/09/Figure010-1-600x303.png 600w" sizes="auto, (max-width: 824px) 100vw, 824px" /><figcaption id="caption-attachment-21003" class="wp-caption-text">Figure 10</figcaption></figure>
<p>Which then took me to the web page shown in Figure 11.</p>
<figure id="attachment_21004" aria-describedby="caption-attachment-21004" style="width: 833px" class="wp-caption alignnone"><img loading="lazy" decoding="async" class="size-full wp-image-21004" src="https://www.carlwebster.com/wp-content/uploads/2011/09/Figure011-1.png" alt="Figure 11" width="833" height="299" srcset="https://www.carlwebster.com/wp-content/uploads/2011/09/Figure011-1.png 833w, https://www.carlwebster.com/wp-content/uploads/2011/09/Figure011-1-530x190.png 530w, https://www.carlwebster.com/wp-content/uploads/2011/09/Figure011-1-768x276.png 768w, https://www.carlwebster.com/wp-content/uploads/2011/09/Figure011-1-600x215.png 600w" sizes="auto, (max-width: 833px) 100vw, 833px" /><figcaption id="caption-attachment-21004" class="wp-caption-text">Figure 11</figcaption></figure>
<p>I verified in Internet Explorer that the certificate is installed (Figure 12 and Figure 13).</p>
<figure id="attachment_21005" aria-describedby="caption-attachment-21005" style="width: 509px" class="wp-caption alignnone"><img loading="lazy" decoding="async" class="size-full wp-image-21005" src="https://www.carlwebster.com/wp-content/uploads/2011/09/Figure012-1.png" alt="Figure 12" width="509" height="464" srcset="https://www.carlwebster.com/wp-content/uploads/2011/09/Figure012-1.png 509w, https://www.carlwebster.com/wp-content/uploads/2011/09/Figure012-1-329x300.png 329w" sizes="auto, (max-width: 509px) 100vw, 509px" /><figcaption id="caption-attachment-21005" class="wp-caption-text">Figure 12</figcaption></figure>
<figure id="attachment_21006" aria-describedby="caption-attachment-21006" style="width: 408px" class="wp-caption alignnone"><img loading="lazy" decoding="async" class="size-full wp-image-21006" src="https://www.carlwebster.com/wp-content/uploads/2011/09/Figure013-1.png" alt="Figure 13" width="408" height="508" srcset="https://www.carlwebster.com/wp-content/uploads/2011/09/Figure013-1.png 408w, https://www.carlwebster.com/wp-content/uploads/2011/09/Figure013-1-241x300.png 241w" sizes="auto, (max-width: 408px) 100vw, 408px" /><figcaption id="caption-attachment-21006" class="wp-caption-text">Figure 13</figcaption></figure>
<p>On the computer where the Code Signing Certificate was installed, I started a PowerShell session running as Administrator.  Using the information from Don Jones’ <em>Windows PowerShell 2.0 TFM</em> book on page 149, I entered the following PowerShell command (should be one long line):</p>
<pre class="brush: powershell; title: ; notranslate">
Set-AuthenticodeSignature `
&quot;C:\Users\cwebster\Documents\carlwebster.com\Documenting a Citrix XenApp 6 Farm with Microsoft PowerShell\XA6_Inventory_Signed.ps1&quot; `
-TimestampServer &quot;http://timestamp.digicert.com/&quot; @(Get-Childitem cert:\CurrentUser\My -codesigning)&#x5B;0]
</pre>
<p>Which then returns a successful signing (Figure 14).</p>
<figure id="attachment_21009" aria-describedby="caption-attachment-21009" style="width: 985px" class="wp-caption alignnone"><img loading="lazy" decoding="async" class="size-full wp-image-21009" src="https://www.carlwebster.com/wp-content/uploads/2011/09/Figure014-1.png" alt="Figure 14" width="985" height="214" srcset="https://www.carlwebster.com/wp-content/uploads/2011/09/Figure014-1.png 985w, https://www.carlwebster.com/wp-content/uploads/2011/09/Figure014-1-530x115.png 530w, https://www.carlwebster.com/wp-content/uploads/2011/09/Figure014-1-900x196.png 900w, https://www.carlwebster.com/wp-content/uploads/2011/09/Figure014-1-768x167.png 768w, https://www.carlwebster.com/wp-content/uploads/2011/09/Figure014-1-600x130.png 600w" sizes="auto, (max-width: 985px) 100vw, 985px" /><figcaption id="caption-attachment-21009" class="wp-caption-text">Figure 14</figcaption></figure>
<p>Opening my script shows the added signature block (Figure 15).</p>
<figure id="attachment_21008" aria-describedby="caption-attachment-21008" style="width: 835px" class="wp-caption alignnone"><img loading="lazy" decoding="async" class="size-full wp-image-21008" src="https://www.carlwebster.com/wp-content/uploads/2011/09/Figure015-1.png" alt="Figure 15" width="835" height="652" srcset="https://www.carlwebster.com/wp-content/uploads/2011/09/Figure015-1.png 835w, https://www.carlwebster.com/wp-content/uploads/2011/09/Figure015-1-384x300.png 384w, https://www.carlwebster.com/wp-content/uploads/2011/09/Figure015-1-768x600.png 768w, https://www.carlwebster.com/wp-content/uploads/2011/09/Figure015-1-600x469.png 600w" sizes="auto, (max-width: 835px) 100vw, 835px" /><figcaption id="caption-attachment-21008" class="wp-caption-text">Figure 15</figcaption></figure>
<p>To verify the newly signed script, I went to my XenApp 6 server, copied the signed script to the C:\PSScripts folder, started a PowerShell session as Administrator, and changed to the C:\PSScripts folder.  I then set the PowerShell script execution policy to AllSigned (Figure 16).</p>
<figure id="attachment_21011" aria-describedby="caption-attachment-21011" style="width: 947px" class="wp-caption alignnone"><img loading="lazy" decoding="async" class="size-full wp-image-21011" src="https://www.carlwebster.com/wp-content/uploads/2011/09/Figure016-1.png" alt="Figure 16" width="947" height="126" srcset="https://www.carlwebster.com/wp-content/uploads/2011/09/Figure016-1.png 947w, https://www.carlwebster.com/wp-content/uploads/2011/09/Figure016-1-530x71.png 530w, https://www.carlwebster.com/wp-content/uploads/2011/09/Figure016-1-900x120.png 900w, https://www.carlwebster.com/wp-content/uploads/2011/09/Figure016-1-768x102.png 768w, https://www.carlwebster.com/wp-content/uploads/2011/09/Figure016-1-600x80.png 600w" sizes="auto, (max-width: 947px) 100vw, 947px" /><figcaption id="caption-attachment-21011" class="wp-caption-text">Figure 16</figcaption></figure>
<p>I then tried to run the original unsigned script (Figure 17).  The script would not run because it is not digitally signed.</p>
<figure id="attachment_21012" aria-describedby="caption-attachment-21012" style="width: 954px" class="wp-caption alignnone"><img loading="lazy" decoding="async" class="size-full wp-image-21012" src="https://www.carlwebster.com/wp-content/uploads/2011/09/Figure017-1.png" alt="Figure 17" width="954" height="142" srcset="https://www.carlwebster.com/wp-content/uploads/2011/09/Figure017-1.png 954w, https://www.carlwebster.com/wp-content/uploads/2011/09/Figure017-1-530x79.png 530w, https://www.carlwebster.com/wp-content/uploads/2011/09/Figure017-1-900x134.png 900w, https://www.carlwebster.com/wp-content/uploads/2011/09/Figure017-1-768x114.png 768w, https://www.carlwebster.com/wp-content/uploads/2011/09/Figure017-1-600x89.png 600w" sizes="auto, (max-width: 954px) 100vw, 954px" /><figcaption id="caption-attachment-21012" class="wp-caption-text">Figure 17</figcaption></figure>
<p>I then tried to run the signed script (Figure 18).</p>
<figure id="attachment_21013" aria-describedby="caption-attachment-21013" style="width: 965px" class="wp-caption alignnone"><img loading="lazy" decoding="async" class="size-full wp-image-21013" src="https://www.carlwebster.com/wp-content/uploads/2011/09/Figure018-1.png" alt="Figure 18" width="965" height="106" srcset="https://www.carlwebster.com/wp-content/uploads/2011/09/Figure018-1.png 965w, https://www.carlwebster.com/wp-content/uploads/2011/09/Figure018-1-530x58.png 530w, https://www.carlwebster.com/wp-content/uploads/2011/09/Figure018-1-900x99.png 900w, https://www.carlwebster.com/wp-content/uploads/2011/09/Figure018-1-768x84.png 768w, https://www.carlwebster.com/wp-content/uploads/2011/09/Figure018-1-600x66.png 600w" sizes="auto, (max-width: 965px) 100vw, 965px" /><figcaption id="caption-attachment-21013" class="wp-caption-text">Figure 18</figcaption></figure>
<p>I answered <strong>A</strong> to <em>Always run</em> scripts signed by me (Figure 19) and the script runs successfully.</p>
<figure id="attachment_21014" aria-describedby="caption-attachment-21014" style="width: 988px" class="wp-caption alignnone"><img loading="lazy" decoding="async" class="size-full wp-image-21014" src="https://www.carlwebster.com/wp-content/uploads/2011/09/Figure019-1.png" alt="Figure 19" width="988" height="631" srcset="https://www.carlwebster.com/wp-content/uploads/2011/09/Figure019-1.png 988w, https://www.carlwebster.com/wp-content/uploads/2011/09/Figure019-1-470x300.png 470w, https://www.carlwebster.com/wp-content/uploads/2011/09/Figure019-1-900x575.png 900w, https://www.carlwebster.com/wp-content/uploads/2011/09/Figure019-1-768x490.png 768w, https://www.carlwebster.com/wp-content/uploads/2011/09/Figure019-1-600x383.png 600w" sizes="auto, (max-width: 988px) 100vw, 988px" /><figcaption id="caption-attachment-21014" class="wp-caption-text">Figure 19</figcaption></figure>
<p>By answering <em>Always run</em> my code signing certificate was installed on the server in the Trusted Publishers store (Figure 20).</p>
<figure id="attachment_21015" aria-describedby="caption-attachment-21015" style="width: 509px" class="wp-caption alignnone"><img loading="lazy" decoding="async" class="size-full wp-image-21015" src="https://www.carlwebster.com/wp-content/uploads/2011/09/Figure020-1.png" alt="Figure 20" width="509" height="464" srcset="https://www.carlwebster.com/wp-content/uploads/2011/09/Figure020-1.png 509w, https://www.carlwebster.com/wp-content/uploads/2011/09/Figure020-1-329x300.png 329w" sizes="auto, (max-width: 509px) 100vw, 509px" /><figcaption id="caption-attachment-21015" class="wp-caption-text">Figure 20</figcaption></figure>
<p>The next time I run the signed script, the script automatically runs (Figure 21).</p>
<figure id="attachment_21016" aria-describedby="caption-attachment-21016" style="width: 418px" class="wp-caption alignnone"><img loading="lazy" decoding="async" class="size-full wp-image-21016" src="https://www.carlwebster.com/wp-content/uploads/2011/09/Figure021-1.png" alt="Figure 21" width="418" height="304" srcset="https://www.carlwebster.com/wp-content/uploads/2011/09/Figure021-1.png 418w, https://www.carlwebster.com/wp-content/uploads/2011/09/Figure021-1-413x300.png 413w" sizes="auto, (max-width: 418px) 100vw, 418px" /><figcaption id="caption-attachment-21016" class="wp-caption-text">Figure 21</figcaption></figure>
<p>What I learned is that digitally signing PowerShell scripts is simple to do.  It is not cheap, but it is simple.</p>
]]></content:encoded>
					
					<wfw:commentRss>https://www.carlwebster.com/how-to-digitally-sign-a-microsoft-powershell-script-with-a-third-party-code-signing-certificate/feed/</wfw:commentRss>
			<slash:comments>4</slash:comments>
		
		
		<post-id xmlns="com-wordpress:feed-additions:1">3705</post-id>	</item>
		<item>
		<title>Where to Get Copies of the Various Scripts</title>
		<link>https://www.carlwebster.com/where-to-get-copies-of-the-documentation-scripts/</link>
					<comments>https://www.carlwebster.com/where-to-get-copies-of-the-documentation-scripts/#comments</comments>
		
		<dc:creator><![CDATA[Carl Webster]]></dc:creator>
		<pubDate>Fri, 30 Sep 2011 19:00:16 +0000</pubDate>
				<category><![CDATA[Active Directory]]></category>
		<category><![CDATA[NetScaler]]></category>
		<category><![CDATA[PowerShell]]></category>
		<category><![CDATA[PVS]]></category>
		<category><![CDATA[VMware]]></category>
		<category><![CDATA[XenApp]]></category>
		<category><![CDATA[XenApp 5 for Server 2003]]></category>
		<category><![CDATA[XenApp 5 for Server 2008]]></category>
		<category><![CDATA[XenApp 6.0]]></category>
		<category><![CDATA[XenApp 6.5]]></category>
		<category><![CDATA[XenDesktop 5.x]]></category>
		<category><![CDATA[dhcp]]></category>
		<category><![CDATA[powershell]]></category>
		<category><![CDATA[provisioning services]]></category>
		<category><![CDATA[scripts]]></category>
		<category><![CDATA[Word]]></category>
		<category><![CDATA[word comobject]]></category>
		<category><![CDATA[xenapp]]></category>
		<category><![CDATA[xendesktop]]></category>
		<guid isPermaLink="false">http://webster.skyrocket.ltd/?p=3741</guid>

					<description><![CDATA[Many people have asked me where they can get copies of the PowerShell documentation scripts.  To make it easier to find, I have linked to all of them in this one article.]]></description>
										<content:encoded><![CDATA[<p><b>NOTE:  All current scripts require PowerShell Version 3 or later.  </b></p>
<p><strong>All current documentation scripts create a Microsoft Word 2010,  2013, or 2016/2019/O365 document.</strong></p>
<p><strong>Word 2016, Word 2019 and the Office 365 version of Word have the same version number of 16. All documentation scripts will work with Word 2019 and Word Office 365 with no changes.</strong></p>
<p><b>*****All the scripts run best on PowerShell Version 5*****</b></p>
<p>Many people have asked me where they can get copies of the various PowerShell documentation scripts. To make it easier to find, I have linked to all of them in this one article.</p>
<p>All scripts have been moved to the new <a title="Script Downloads Page" href="https://www.carlwebster.com/downloads" target="_blank" rel="noopener noreferrer">Downloads page</a>.</p>
<p>I am leaving this landing page here so I don&#8217;t break all the existing links people have to this page.</p>
<p>Thanks</p>
<p>Webster</p>
]]></content:encoded>
					
					<wfw:commentRss>https://www.carlwebster.com/where-to-get-copies-of-the-documentation-scripts/feed/</wfw:commentRss>
			<slash:comments>333</slash:comments>
		
		
		<post-id xmlns="com-wordpress:feed-additions:1">3741</post-id>	</item>
		<item>
		<title>Finding Mismatched Citrix XenApp 5 Servers Using Microsoft PowerShell</title>
		<link>https://www.carlwebster.com/finding-mismatched-xenapp-5-servers-using-powershell/</link>
		
		<dc:creator><![CDATA[Carl Webster]]></dc:creator>
		<pubDate>Wed, 28 Sep 2011 17:30:46 +0000</pubDate>
				<category><![CDATA[PowerShell]]></category>
		<category><![CDATA[XenApp]]></category>
		<category><![CDATA[XenApp 5 for Server 2003]]></category>
		<category><![CDATA[XenApp 5 for Server 2008]]></category>
		<category><![CDATA[citrix]]></category>
		<category><![CDATA[powershell]]></category>
		<category><![CDATA[xenapp 5]]></category>
		<guid isPermaLink="false">http://webster.skyrocket.ltd/?p=3240</guid>

					<description><![CDATA[Have you ever worked with a customer that had multiple Citrix license servers and product editions?  I worked with a client recently that had upgraded their Citrix XenApp product licenses&#8230;]]></description>
										<content:encoded><![CDATA[<p>Have you ever worked with a customer that had multiple Citrix license servers and product editions?  I worked with a client recently that had upgraded their Citrix XenApp product licenses from Enterprise to Platinum and had moved to a new Citrix license server.  Their problem was that they, over the years, had an unknown number of XenApp servers that had been manually configured to use various license servers and product editions.  Their problem was compounded by having well over 100 XenApp 5 servers.  The XenApp servers were segregated into folders based on Zone name and sub-folders based on application silo name.  Manually checking every XenApp server in the Delivery Services Console would have taken a very long time.  My solution was a Microsoft PowerShell script.</p>
<p>Being fairly new to PowerShell, but having a software development background, I knew this should be a very simple script to produce.  The client simply wanted a list of XenApp servers so they could look at the license server name and product edition.  The basics of the script are shown here (lines may wrap):</p>
<pre>$Farm = Get-XAFarmConfiguration
$Servers = Get-XAServer
ForEach($Server in $Servers)
{
        $ServerConfig = Get-XAServerConfiguration -ServerName $Server.Servername
        Echo "Zone: " $server.ZoneName
        Echo "Server Name: " $server.ServerName
        Echo “Product Edition: “  $server.CitrixEdition
        If( $ServerConfig.LicenseServerUseFarmSettings )
        {
               Echo "License server: " $Farm.LicenseServerName
        }
        Else
        {
               Echo "License server: " $ServerConfig.LicenseServerName
        }
        Echo “”
}</pre>
<p><strong>Note:</strong> This script is only valid for XenApp 5 for both Server 2003 and Server 2008.  In XenApp 5, it is possible to edit each XenApp server and set a specific Citrix license server.  You could, in fact, have every XenApp server in a XenApp farm configured to use its own Citrix license server.  In XenApp 6, you <em>can</em> do the same thing but that would require the use of Citrix Computer polices, one for each server.</p>
<p>While the above script worked, it was almost useless.  With an extremely large number of servers, the output produced was unwieldy.  The customer gave me the product edition and license server name they wanted to validate against.  I updated the script with that new information and needed a way to filter the data.  PowerShell uses the traditional programming “<strong>If</strong>” statement to allow filtering the data as it is processed.  I added a variable for the license server name and an “<strong>If</strong>” statement to the script as shown below (PowerShell uses the <code>character for line continuation. ):<br />
&lt;pre&gt;$LicenseServerName = NEWLICCTX01.WEBSTERSLAB.COM<br />
$Farm = Get-XAFarmConfiguration<br />
$Servers = Get-XAServer<br />
ForEach($Server in $Servers)<br />
{<br />
    $ServerConfig = Get-XAServerConfiguration -ServerName $Server.Servername<br />
    If(($Server.CitrixEdition -ne "Platinum") -or</code><br />
    ($ServerConfig.LicenseServerUseFarmSettings -eq $False `<br />
    &#8211;and $ServerConfig.LicenseServerName -ne $LicenseServerName))<br />
    {<br />
        &lt;snip&gt;<br />
    }<br />
}<br />
The “<strong>If</strong>” statement says:</p>
<ul>
<li><strong>If</strong> the server’s product edition is <strong>not equal</strong> to “Platinum”</li>
<li><strong>Or</strong>, the server is <strong>not</strong> configured to use the farm settings for the license server <strong>and</strong> the server’s license server name is <strong>not equal</strong> to NEWLICCTX01.WEBSTERSLAB.COM</li>
<li>Output the server’s information</li>
<li>If neither condition is met, skip to the next entry in the list of servers</li>
</ul>
<p>The new script allowed me to output just the XenApp servers matching the client’s criteria.</p>
<p>Sample output:</p>
<p>Zone: ZONE1<br />
Server Name: Z1DCCTXSSO01A<br />
Product Edition: Platinum<br />
License server: oldlicctx01<br />
Zone:  ZONE7<br />
Server Name: Z7DCTRMCTX03J<br />
Product edition: Enterprise<br />
License server: NEWLICCTX01.WEBSTERSLAB.COM</p>
<p><strong>Note:</strong>  The license server names shown in the sample output reflect the entry in the License Server name field for each XenApp server.  XenApp allows as valid entries the NetBIOS name, Fully Qualified Domain Name or IP Address.</p>
<p>Sweet, I have what the client needs, now let me just output this to HTML and I am done.</p>
<p>M:\PSScripts\Get-ServerInfo.ps1 | ConvertTo-Html | Out-File M:\PSScripts\MismatchedServers.html</p>
<p>This produced the following:</p>
<table border="0" cellpadding="0">
<tbody>
<tr>
<td>
<p align="center"><strong>*</strong></p>
</td>
</tr>
<tr>
<td>112</td>
</tr>
</tbody>
</table>
<p>What the…?</p>
<p>I needed to find out what was going on here.  I typed in <strong>Get-ServerInfo.ps1 | Get-Member</strong></p>
<pre>TypeName: System.String

Name       MemberType            Definition
----             ----------            ----------
Clone            Method                System.Object Clone()
CompareTo        Method                int CompareTo(System.Object value), int CompareTo(string strB)
Contains         Method                bool Contains(string value)

&lt;snip&gt;</pre>
<p>Next, I typed in <strong>Get-Help ConvertTo-HTML:</strong></p>
<p>PS Z:\&gt; <strong>Get-Help ConvertTo-HTML</strong></p>
<p>NAME<br />
ConvertTo-Html</p>
<p>SYNOPSIS<br />
Converts Microsoft .NET Framework objects into HTML that can be displayed in a Web browser.</p>
<p>&lt;snip&gt;</p>
<p>What I see from these two pieces of information is that my script is outputting <strong>String </strong>(or text) and ConvertTo-Html is expecting an <strong>Object</strong> as input.</p>
<p>Oh, now I get it.  The light-bulb finally went off:  PowerShell wants OBJECTS, not Text.  DOH!!!</p>
<p>OK, so how do I change this script to output objects instead of text?  I found what I needed in Chapter 19 of Don Jones’ book <a href="https://www.manning.com/books/learn-windows-powershell-in-a-month-of-lunches-third-edition"><em>Learn Windows PowerShell in a Month of Lunches</em></a>.  This is going to be a lot easier than I thought because I am only working with four pieces of data.</p>
<p>All I had to do was change:</p>
<pre>Echo "Zone: " $server.ZoneName
Echo "Server Name: " $server.ServerName
Echo “Product Edition: “  $server.CitrixEdition
If( $ServerConfig.LicenseServerUseFarmSettings )
{
       Echo "License server: " $Farm.LicenseServerName
}
Else
{
       Echo "License server: " $ServerConfig.LicenseServerName  
}
Echo “”

To:

$obj = New-Object -TypeName PSObject
$obj | Add-Member -MemberType NoteProperty `
-Name ZoneName -Value $server.ZoneName
$obj | Add-Member -MemberType NoteProperty `
-Name ServerName -Value $server.ServerName
$obj | Add-Member -MemberType NoteProperty `
-Name ProductEdition -Value $server.CitrixEdition
If($ServerConfig.LicenseServerUseFarmSettings)
{
       $obj | Add-Member -MemberType NoteProperty `
    -Name LicenseServer -Value $Farm.LicenseServerName
}
Else
{
       $obj | Add-Member -MemberType NoteProperty `
    -Name LicenseServer -Value $ServerConfig.LicenseServerName                    
}
Write-Output $obj</pre>
<p>Running the command <strong>M:\PSScripts\Get-ServerInfo.ps1 | ConvertTo-Html | Out-File M:\PSScripts\MismatchedServers.html</strong>, now gives me the following results (Figure 1).</p>
<figure id="attachment_20728" aria-describedby="caption-attachment-20728" style="width: 600px" class="wp-caption alignnone"><img loading="lazy" decoding="async" class="size-full wp-image-20728" src="https://www.carlwebster.com/wp-content/uploads/2011/09/Figure001-1.png" alt="Figure 1" width="600" height="210" srcset="https://www.carlwebster.com/wp-content/uploads/2011/09/Figure001-1.png 600w, https://www.carlwebster.com/wp-content/uploads/2011/09/Figure001-1-530x186.png 530w" sizes="auto, (max-width: 600px) 100vw, 600px" /><figcaption id="caption-attachment-20728" class="wp-caption-text">Figure 1</figcaption></figure>
<p>Perfect.  Now that the script is using objects for output, any of the ConvertTo-* or Export-To* cmdlets can be used.  But I wanted to take this adventure one step further.  The script uses a hard-coded license server name and product edition.  I want to turn the script into one that can be used by anyone and also make it an advanced function.</p>
<p>The first thing needed is a name for the function.  The purpose of the function is to Get XenApp Mismatched Servers.  Following the naming convention used by Citrix, Get-XA<em>Noun</em>, the name could be Get-XAMismatchedServer.  Why XAMismatchedServer and not XAMismatchedServers?  PowerShell convention is to use singular and not plural.</p>
<p>Function Get-XAMismatchedServer<br />
{<br />
#PowerShell statements<br />
}</p>
<p>There is more functionality that needs to be added to make this a more useful function.  Additionally, I want to learn how to turn this function into a proper PowerShell advanced function.  Some of the additions needed are:</p>
<ol>
<li>Prevent the function from running on XenApp 6+</li>
<li>Allow the use of a single XenApp Zone to restrict the output</li>
<li>Validate the Zone name entered</li>
<li>Change the function to use parameters instead of hardcoded values</li>
<li>Add debug and verbose statements</li>
<li>Add full help text to explain the function</li>
</ol>
<p>For the basis of turning this simple function into an advanced function, I am using Chapter 48 of <a href="http://www.amazon.com/Windows-PowerShell-2-0-Don-Jones/dp/0982131429"><em>Windows PowerShell 2.0 TFM</em></a> by Don Jones and Jeffery Hicks.</p>
<p>The first thing I need to add to the function is the statement that tells PowerShell this is an advanced function.</p>
<pre>Function Get-XAMismatchedServer
{
    [CmdletBinding( SupportsShouldProcess = $False, `
    ConfirmImpact = "None", DefaultParameterSetName = "" ) ]
}</pre>
<p>Even though all parameters in CmdletBinding() are the defaults, I am including them solely for the learning exercise.</p>
<p>I will also need two “helper” functions.  One to verify the version of XenApp the script is being run under and the other for validating the Zone name entered (if one was entered).  These two functions need to be declared before they are used.  This means they need to be at the top of the script.</p>
<p>The function to verify if the script is running under XenApp 5:</p>
<pre>Function IsRunningXenApp5
{
   Param( [string]$FarmVersion )
   Write-Debug "Starting IsRunningXenApp5 function"
   $XenApp5 = $false
   If($Farm.ServerVersion.ToString().SubString(0,1) -ne "6")
   {
     #this is a XenApp 5 farm, script can proceed
     $XenApp5 = $true
   }
   Else
   {
     #this is a not XenApp 5 farm, script cannot proceed
     $XenApp5 = $false
   }
   Write-Debug "Farm is running XenApp5 is $XenApp5"
   Return $XenApp5
}</pre>
<p>Result of function under XenApp 5 (Figure 2).</p>
<figure id="attachment_20729" aria-describedby="caption-attachment-20729" style="width: 466px" class="wp-caption alignnone"><img loading="lazy" decoding="async" class="size-full wp-image-20729" src="https://www.carlwebster.com/wp-content/uploads/2011/09/Figure002-1.png" alt="Figure 2" width="466" height="329" srcset="https://www.carlwebster.com/wp-content/uploads/2011/09/Figure002-1.png 466w, https://www.carlwebster.com/wp-content/uploads/2011/09/Figure002-1-425x300.png 425w" sizes="auto, (max-width: 466px) 100vw, 466px" /><figcaption id="caption-attachment-20729" class="wp-caption-text">Figure 2</figcaption></figure>
<p>Result of function under XenApp 6 (Figure 3).</p>
<figure id="attachment_20730" aria-describedby="caption-attachment-20730" style="width: 536px" class="wp-caption alignnone"><img loading="lazy" decoding="async" class="size-full wp-image-20730" src="https://www.carlwebster.com/wp-content/uploads/2011/09/Figure003-1.png" alt="Figure 3" width="536" height="323" srcset="https://www.carlwebster.com/wp-content/uploads/2011/09/Figure003-1.png 536w, https://www.carlwebster.com/wp-content/uploads/2011/09/Figure003-1-498x300.png 498w" sizes="auto, (max-width: 536px) 100vw, 536px" /><figcaption id="caption-attachment-20730" class="wp-caption-text">Figure 3</figcaption></figure>
<p>The function to verify that if a zone name is entered, it is valid:</p>
<pre>Function IsValidZoneName
{
   Param( [string]$ZoneName )
   Write-Debug "Starting IsValidZoneName function"
   $ValidZone = $false
   $Zones = Get-XAZone -ErrorAction SilentlyContinue
   If( -not $? )
   {
     Write-Error "Zone information could not be retrieved"
     Return $ValidZone
   }
   ForEach($Zone in $Zones)
   {
     Write-Debug "Checking zone $Zone against $ZoneName"
     Write-Verbose "Checking zone $Zone against $ZoneName"
     If($Zone.ZoneName -eq $ZoneName)
     {
        Write-Debug "Zone $ZoneName is valid $ValidZone"
        $Zones = $null
        $ValidZone = $true
     }
   }
   $Zones = $null
   Return $ValidZone
}</pre>
<p>Result of the function (Figure 4).</p>
<figure id="attachment_20731" aria-describedby="caption-attachment-20731" style="width: 464px" class="wp-caption alignnone"><img loading="lazy" decoding="async" class="size-full wp-image-20731" src="https://www.carlwebster.com/wp-content/uploads/2011/09/Figure004-1.png" alt="Figure 4" width="464" height="429" srcset="https://www.carlwebster.com/wp-content/uploads/2011/09/Figure004-1.png 464w, https://www.carlwebster.com/wp-content/uploads/2011/09/Figure004-1-324x300.png 324w" sizes="auto, (max-width: 464px) 100vw, 464px" /><figcaption id="caption-attachment-20731" class="wp-caption-text">Figure 4</figcaption></figure>
<p>Adding parameters to the main function:</p>
<pre>Function Get-XAMismatchedServer
{
   [CmdletBinding( SupportsShouldProcess = $False,
   ConfirmImpact = "None", DefaultParameterSetName = "" ) ]

   Param( 
   [parameter(Position = 0,Mandatory=$true,
   HelpMessage = "Citrix license server name to match" )]
   [Alias("LS")]
   [string]$LicenseServerName,
   [parameter(Position = 1, Mandatory=$true,
   HelpMessage = "Citrix product edition to match: `
   Platinum, Enterprise or Advanced" )]
   [Alias("PE")]
   [ValidateSet("Platinum", "Enterprise", "Advanced")]
   [string]$ProductEdition,
   [parameter(Position = 2,Mandatory=$false, `
   HelpMessage = "XenApp zone to restrict search.  `
   Blank is all zones in farm." )]
   [Alias("ZN")]
   [string]$ZoneName = '' )
}</pre>
<p>Three parameters have been added: $LicenseServerName, $ProductEdition and $ZoneName.  These parameter names were chosen because they are what the Citrix cmdlets use.</p>
<p>All three parameters are positional.  This means the parameter name is not required.  The function could be called as either:</p>
<p><strong>Get-XAMismatchedServer -LicenseServerName CtxLic01 -ProductEdition Platinum -ZoneName EMEA</strong></p>
<p>Or</p>
<p><strong>Get-XAMismatchedServer CtxLic01 Platinum EMEA</strong></p>
<p>The LicenseServerName and ProductEdition parameters are mandatory (Figure 5).</p>
<figure id="attachment_20732" aria-describedby="caption-attachment-20732" style="width: 759px" class="wp-caption alignnone"><img loading="lazy" decoding="async" class="size-full wp-image-20732" src="https://www.carlwebster.com/wp-content/uploads/2011/09/Figure005-1.png" alt="Figure 5" width="759" height="211" srcset="https://www.carlwebster.com/wp-content/uploads/2011/09/Figure005-1.png 759w, https://www.carlwebster.com/wp-content/uploads/2011/09/Figure005-1-530x147.png 530w, https://www.carlwebster.com/wp-content/uploads/2011/09/Figure005-1-600x167.png 600w" sizes="auto, (max-width: 759px) 100vw, 759px" /><figcaption id="caption-attachment-20732" class="wp-caption-text">Figure 5</figcaption></figure>
<p>A help message has been entered so that if a parameter is missing, help text can be requested to tell what needs to be entered (Figure 6).</p>
<figure id="attachment_20733" aria-describedby="caption-attachment-20733" style="width: 734px" class="wp-caption alignnone"><img loading="lazy" decoding="async" class="size-full wp-image-20733" src="https://www.carlwebster.com/wp-content/uploads/2011/09/Figure006-1.png" alt="Figure 6" width="734" height="297" srcset="https://www.carlwebster.com/wp-content/uploads/2011/09/Figure006-1.png 734w, https://www.carlwebster.com/wp-content/uploads/2011/09/Figure006-1-530x214.png 530w, https://www.carlwebster.com/wp-content/uploads/2011/09/Figure006-1-600x243.png 600w" sizes="auto, (max-width: 734px) 100vw, 734px" /><figcaption id="caption-attachment-20733" class="wp-caption-text">Figure 6</figcaption></figure>
<p><strong>Complete function (lines may wrap):</strong></p>
<pre>Function IsRunningXenApp5
{
   Param( [string]$FarmVersion )
   Write-Debug "Starting IsRunningXenApp5 function"
   $XenApp5 = $false
   If($Farm.ServerVersion.ToString().SubString(0,1) -ne "6")
   {
     #this is a XenApp 5 farm, script can proceed
     $XenApp5 = $true
   }
   Else
   {
     #this is not a XenApp 5 farm, script cannot proceed
     $XenApp5 = $false
   }
   Write-Debug "Farm is running XenApp5 is $XenApp5"
   Return $XenApp5
}

Function IsValidZoneName
{
   Param( [string]$ZoneName )
   Write-Debug "Starting IsValidZoneName function"
   $ValidZone = $false
   $Zones = Get-XAZone -ErrorAction SilentlyContinue
   If( -not $? )
   {
     Write-Error "Zone information could not be retrieved"
     Return $ValidZone
   }
   ForEach($Zone in $Zones)
   {
     Write-Debug "Checking zone $Zone against $ZoneName"
     Write-Verbose "Checking zone $Zone against $ZoneName"
     If($Zone.ZoneName -eq $ZoneName)
     {
        Write-Debug "Zone $ZoneName is valid $ValidZone"
        $Zones = $null
        $ValidZone = $true
     }
   }
   $Zones = $null
   Return $ValidZone
}

Function Get-XAMismatchedServer
{
   &lt;#
   .Synopsis
   Find servers not using the correct license server or
   product edition.
   .Description
   Find Citrix XenApp 5 servers that are not using the Citrix license
   server or product edition specified.  Can be restricted to a
   specific XenApp Zone.
   .Parameter LicenseServerName
   What is the name of the Citrix license server to validate servers
   against.  This parameter has an alias of LS.
   .Parameter ProductEdition
   What XenApp product edition should servers be configured to use.
   Valid input is Platinum, Enterprise or Advanced.
   This parameter has an alias of PE.
   .Parameter ZoneName
   Optional parameter.  If no XenApp zone name is specified, all zones
   in the farm are searched.
   This parameter has an alias of ZN.
   .Example
   PS C:\ Get-XAMismatchedServerInfo
   Will prompt for the Citrix license server name and product edition.
   .Example
   PS C:\ Get-XAMismatchedServerInfo -LicenseServerName CtxLic01 -ProductEdition Platinum
   Will search all XenApp zones in the XenApp 5 farm that the current XenApp 5 server
   is a member.  Any XenApp 5 server that is manually configured to use a different license
   server OR product edition will be returned.
   .Example
   PS C:\ Get-XAMismatchedServerInfo -LicenseServerName CtxLic01 -ProductEdition Platinum -ZoneName EMEA
   Will search the EMEA zone in the XenApp 5 farm that the current XenApp 5 server
   is a member.  Any XenApp 5 server that is manually configured to use a different license
   server OR product edition will be returned.
   .Example
   PS C:\ Get-XAMismatchedServerInfo -LS CtxLic01 -PE Enterprise -ZN Russia
   Will search the Russia zone in the XenApp 5 farm that the current XenApp 5 server
   is a member.  Any XenApp 5 server that is manually configured to use a different license
   server OR product edition will be returned.
   .Example
   PS C:\ Get-XAMismatchedServerInfo CtxNCC1701J Enterprise Cardassian
   Will search the dangerous Cardassian zone in the XenApp 5 farm that the current XenApp 5
   server is a member.  Any XenApp 5 server that is manually configured to use an inferior
   license server OR unworthy product edition will be returned (hopefully in one piece).
   .ReturnValue
   [OBJECT]
   .Notes
   NAME:         Get-XAMismatchedServerInfo
   VERSION:      .9
   AUTHOR:       Carl Webster (with a lot of help from Michael B. Smith)
   LASTEDIT:   May 16, 2011
   #Requires -version 2.0
   #Requires -pssnapin Citrix.XenApp.Commands
   #&gt;
   [CmdletBinding( SupportsShouldProcess = $False, ConfirmImpact = "None", DefaultParameterSetName = "" ) ]
   Param(       [parameter(
   Position = 0,
   Mandatory=$true,
   HelpMessage = "Citrix license server name to match" )]
   [Alias("LS")]
   [string]$LicenseServerName,
   [parameter(
   Position = 1,
   Mandatory=$true,
   HelpMessage = "Citrix product edition to match: Platinum, Enterprise or Advanced" )]
   [Alias("PE")]
   [ValidateSet("Platinum", "Enterprise", "Advanced")]
   [string]$ProductEdition,
   [parameter(
   Position = 2,
   Mandatory=$false,
   HelpMessage = "XenApp zone to restrict search.  Blank is all zones in farm." )]
   [Alias("ZN")]
   [string]$ZoneName = '' )
   Begin
   {
     Write-Debug "In the BEGIN block"
     Write-Debug "Retrieving farm information"
     Write-Verbose "Retrieving farm information"
     $Farm = Get-XAFarm -ErrorAction SilentlyContinue
     If( -not $? )
     {
        Write-Error "Farm information could not be retrieved"
        Return
     }
     Write-Debug "Validating the version of XenApp"
     $IsXenApp5 = IsRunningXenApp5 $Farm.ServerVersion
     If( -not $IsXenApp5 )
     {
        Write-Error "This script is designed for XenApp 5 and cannot be run on XenApp 6"
        Return
     }
     If($ZoneName -ne '')
     {
        Write-Debug "Is zone name valid"
        Write-Verbose "Validating zone $ZoneName"
        $ValidZone = IsValidZoneName $ZoneName
        If(-not $ValidZone)
        {
          Write-Error "Invalid zone name $ZoneName entered"
          Return
        }
     }
   }
   Process
   {
     Write-Debug "In the PROCESS block"
     If($ZoneName -eq '')
     {
        Write-Debug "Retrieving server information for all zones"
        Write-Verbose "Retrieving server information for all zones"
        $Servers = Get-XAServer -ErrorAction SilentlyContinue | `
        sort-object ZoneName, ServerName
     }
     Else
     {
        Write-Debug "Retrieving server information for zone $ZoneName"
        Write-Verbose "Retrieving server information for zone $ZoneName"
        $Servers = Get-XAServer -ZoneName $ZoneName -ErrorAction SilentlyContinue | `
        sort-object ZoneName, ServerName
     }
     If( $? )
     {
        ForEach($Server in $Servers)
        {
          Write-Debug "Retrieving server configuration data for server $Server"
          Write-Verbose "Retrieving server configuration data for server $Server"
          $ServerConfig = Get-XAServerConfiguration -ServerName $Server.Servername `
          -ErrorAction SilentlyContinue
          If( $? )
          {
             If($Server.CitrixEdition -ne $ProductEdition -or `
              ($ServerConfig.LicenseServerUseFarmSettings -eq $False -and `
              $ServerConfig.LicenseServerName -ne $LicenseServerName))
             {
               Write-Debug "Mismatched server $server"
               Write-Verbose "Mismatched server $server"
               $obj = New-Object -TypeName PSObject
               $obj | Add-Member -MemberType NoteProperty `
                  -Name ZoneName -Value $server.ZoneName
               $obj | Add-Member -MemberType NoteProperty `
                  -Name ServerName -Value $server.ServerName
               $obj | Add-Member -MemberType NoteProperty `
                  -Name ProductEdition -Value $server.CitrixEdition
               If($ServerConfig.LicenseServerUseFarmSettings)
               {
                  $obj | Add-Member -MemberType NoteProperty `
                    -Name LicenseServer -Value $Farm.LicenseServerName
               }
               Else
               {
                  $obj | Add-Member -MemberType `
                    NoteProperty -Name LicenseServer `
                    -Value $ServerConfig.LicenseServerName
               }
               Write-Debug "Creating object $obj"
               write-output $obj
            }
          }
          Else
          {
             Write-Error "Configuration information for server `
                   $($Server.Servername) could not be retrieved"
          }
        }
     }
     Else
     {
        Write-Error "Information on XenApp servers could not be retrieved"
     }
   }
   End
   {
     Write-Debug "In the END block"
     $servers = $null
     $serverconfig = $null
     $farm = $null
     $obj = $null
   }
}</pre>
]]></content:encoded>
					
		
		
		<post-id xmlns="com-wordpress:feed-additions:1">3240</post-id>	</item>
		<item>
		<title>How To Hide Additional Drive Letters On A Server</title>
		<link>https://www.carlwebster.com/how-to-hide-additional-drive-letters-on-a-server/</link>
					<comments>https://www.carlwebster.com/how-to-hide-additional-drive-letters-on-a-server/#comments</comments>
		
		<dc:creator><![CDATA[Carl Webster]]></dc:creator>
		<pubDate>Tue, 16 Jun 2009 15:58:12 +0000</pubDate>
				<category><![CDATA[XenApp]]></category>
		<category><![CDATA[XenApp 5 for Server 2003]]></category>
		<category><![CDATA[XenApp 5 for Server 2008]]></category>
		<category><![CDATA[GPO]]></category>
		<category><![CDATA[Group Policy]]></category>
		<category><![CDATA[Windows Server 2003]]></category>
		<category><![CDATA[xenapp]]></category>
		<guid isPermaLink="false">http://webster.skyrocket.ltd/?p=1088</guid>

					<description><![CDATA[When Creating a Server Management Group Policy on Windows Server 2003, there are two options that can be set to either Hide or Prevent users from working with the server’s&#8230;]]></description>
										<content:encoded><![CDATA[<p>When Creating a Server Management Group Policy on Windows Server 2003, there are two options that can be set to either Hide or Prevent users from working with the server’s drives:</p>
<ul>
<li>Hide these specified drives in My Computer</li>
<li>Prevent access to drives from My Computer</li>
</ul>
<p>When these options are enabled, there is a drop-down box that allows the selection of various drive combinations.  What if the drives you need hidden are not on the list?  This article will show you three ways to add any combination of drive letters to be hidden or denied access:</p>
<ol>
<li>Modify System.adm</li>
<li>Create a new ADM file</li>
<li>Use the ICAClient.adm file provided by Citrix</li>
</ol>
<p>Why bother with either manual process when there is a 3rd Party utility called GPDrivesOptions that automates the creation of the necessary information?  There are places that do not allow 3<sup>rd</sup> Party utilities to be run on Domain Controllers or Management Stations.  Also, if Change Management is used, it may take longer to go through the approval process to modify System.adm than it takes to create a new ADM file and use it for your Group Policy.</p>
<p><strong>Update February 26, 2015: The GPDrivesOptions article no longer exists on Petri.com.</strong></p>
<p>Microsoft has KB article <a href="http://support.microsoft.com/kb/231289">231289</a> that explains the process to add custom drive letter combinations.  Using KB231298, if you wanted to hide access to drives A, B, D, E, G, P, and R:</p>
<p>The 26-bit string of drive letters is represented as:</p>
<pre>11111111111111111111111111
ZYXWVUTSRQPONMLKJIHGFEDCBA</pre>
<p>If you prefer to not work in Binary, the decimal value for each drive letter is:</p>
<table border="1" cellspacing="0" cellpadding="0">
<tbody>
<tr>
<td valign="top" width="46">Drive Letter</td>
<td valign="top" width="59">Decimal Value</td>
<td valign="top" width="59">Binary Value</td>
</tr>
<tr>
<td valign="top" width="46">Z</td>
<td valign="top" width="59">
<p align="right">33554432</p>
</td>
<td valign="top" width="59">
<p align="right">10000000000000000000000000</p>
</td>
</tr>
<tr>
<td valign="top" width="46">Y</td>
<td valign="top" width="59">
<p align="right">16777216</p>
</td>
<td valign="top" width="59">
<p align="right">1000000000000000000000000</p>
</td>
</tr>
<tr>
<td valign="top" width="46">X</td>
<td valign="top" width="59">
<p align="right">8388608</p>
</td>
<td valign="top" width="59">
<p align="right">100000000000000000000000</p>
</td>
</tr>
<tr>
<td valign="top" width="46">W</td>
<td valign="top" width="59">
<p align="right">4194304</p>
</td>
<td valign="top" width="59">
<p align="right">10000000000000000000000</p>
</td>
</tr>
<tr>
<td valign="top" width="46">V</td>
<td valign="top" width="59">
<p align="right">2097152</p>
</td>
<td valign="top" width="59">
<p align="right">1000000000000000000000</p>
</td>
</tr>
<tr>
<td valign="top" width="46">U</td>
<td valign="top" width="59">
<p align="right">1048576</p>
</td>
<td valign="top" width="59">
<p align="right">100000000000000000000</p>
</td>
</tr>
<tr>
<td valign="top" width="46">T</td>
<td valign="top" width="59">
<p align="right">524288</p>
</td>
<td valign="top" width="59">
<p align="right">10000000000000000000</p>
</td>
</tr>
<tr>
<td valign="top" width="46">S</td>
<td valign="top" width="59">
<p align="right">262144</p>
</td>
<td valign="top" width="59">
<p align="right">1000000000000000000</p>
</td>
</tr>
<tr>
<td valign="top" width="46">R</td>
<td valign="top" width="59">
<p align="right">131072</p>
</td>
<td valign="top" width="59">
<p align="right">100000000000000000</p>
</td>
</tr>
<tr>
<td valign="top" width="46">Q</td>
<td valign="top" width="59">
<p align="right">65536</p>
</td>
<td valign="top" width="59">
<p align="right">10000000000000000</p>
</td>
</tr>
<tr>
<td valign="top" width="46">P</td>
<td valign="top" width="59">
<p align="right">32768</p>
</td>
<td valign="top" width="59">
<p align="right">1000000000000000</p>
</td>
</tr>
<tr>
<td valign="top" width="46">O</td>
<td valign="top" width="59">
<p align="right">16384</p>
</td>
<td valign="top" width="59">
<p align="right">100000000000000</p>
</td>
</tr>
<tr>
<td valign="top" width="46">N</td>
<td valign="top" width="59">
<p align="right">8192</p>
</td>
<td valign="top" width="59">
<p align="right">10000000000000</p>
</td>
</tr>
<tr>
<td valign="top" width="46">M</td>
<td valign="top" width="59">
<p align="right">4096</p>
</td>
<td valign="top" width="59">
<p align="right">1000000000000</p>
</td>
</tr>
<tr>
<td valign="top" width="46">L</td>
<td valign="top" width="59">
<p align="right">2048</p>
</td>
<td valign="top" width="59">
<p align="right">100000000000</p>
</td>
</tr>
<tr>
<td valign="top" width="46">K</td>
<td valign="top" width="59">
<p align="right">1024</p>
</td>
<td valign="top" width="59">
<p align="right">10000000000</p>
</td>
</tr>
<tr>
<td valign="top" width="46">J</td>
<td valign="top" width="59">
<p align="right">512</p>
</td>
<td valign="top" width="59">
<p align="right">1000000000</p>
</td>
</tr>
<tr>
<td valign="top" width="46">I</td>
<td valign="top" width="59">
<p align="right">256</p>
</td>
<td valign="top" width="59">
<p align="right">100000000</p>
</td>
</tr>
<tr>
<td valign="top" width="46">H</td>
<td valign="top" width="59">
<p align="right">128</p>
</td>
<td valign="top" width="59">
<p align="right">10000000</p>
</td>
</tr>
<tr>
<td valign="top" width="46">G</td>
<td valign="top" width="59">
<p align="right">64</p>
</td>
<td valign="top" width="59">
<p align="right">1000000</p>
</td>
</tr>
<tr>
<td valign="top" width="46">F</td>
<td valign="top" width="59">
<p align="right">32</p>
</td>
<td valign="top" width="59">
<p align="right">100000</p>
</td>
</tr>
<tr>
<td valign="top" width="46">E</td>
<td valign="top" width="59">
<p align="right">16</p>
</td>
<td valign="top" width="59">
<p align="right">10000</p>
</td>
</tr>
<tr>
<td valign="top" width="46">D</td>
<td valign="top" width="59">
<p align="right">8</p>
</td>
<td valign="top" width="59">
<p align="right">1000</p>
</td>
</tr>
<tr>
<td valign="top" width="46">C</td>
<td valign="top" width="59">
<p align="right">4</p>
</td>
<td valign="top" width="59">
<p align="right">100</p>
</td>
</tr>
<tr>
<td valign="top" width="46">B</td>
<td valign="top" width="59">
<p align="right">2</p>
</td>
<td valign="top" width="59">
<p align="right">10</p>
</td>
</tr>
<tr>
<td valign="top" width="46">A</td>
<td valign="top" width="59">
<p align="right">1</p>
</td>
<td valign="top" width="59">
<p align="right">1</p>
</td>
</tr>
</tbody>
</table>
<p>Putting &#8220;0&#8221;s for the drives to not be hidden results in:</p>
<pre>00000000101000000001011011
ZYXWVUTSRQPONMLKJIHGFEDCBA</pre>
<p>The binary string is 101000000001011011.  Converted to decimal is 163,931.</p>
<p>If you prefer to work with decimal, add up the value for each drive letter:</p>
<table border="0" cellspacing="0" cellpadding="0">
<tbody>
<tr>
<td valign="top" width="28">A</td>
<td valign="top" width="50">
<p align="right">1</p>
</td>
</tr>
<tr>
<td valign="top" width="28">B</td>
<td valign="top" width="50">
<p align="right">2</p>
</td>
</tr>
<tr>
<td valign="top" width="28">D</td>
<td valign="top" width="50">
<p align="right">8</p>
</td>
</tr>
<tr>
<td valign="top" width="28">E</td>
<td valign="top" width="50">
<p align="right">16</p>
</td>
</tr>
<tr>
<td valign="top" width="28">G</td>
<td valign="top" width="50">
<p align="right">64</p>
</td>
</tr>
<tr>
<td valign="top" width="28">P</td>
<td valign="top" width="50">
<p align="right">32768</p>
</td>
</tr>
<tr>
<td valign="top" width="28">R</td>
<td valign="top" width="50">
<p align="right">131072</p>
</td>
</tr>
<tr>
<td valign="top" width="28"></td>
<td valign="top" width="50">
<p align="right"><strong>163931</strong></p>
</td>
</tr>
</tbody>
</table>
<p><strong>Method 1 &#8212; Modify System.adm:</strong></p>
<p>To change System.adm, go to a command prompt and type in the following commands:</p>
<ul>
<li><strong>CD %SYSTEMROOT%\INF</strong> and press Enter</li>
<li><strong>COPY SYSTEM.ADM SYSTEM_BACKUP.ADM</strong> and press Enter</li>
<li><strong>Notepad system.adm</strong></li>
</ul>
<p>With Notepad open, press <strong>Ctrl-F</strong> and Find <strong>[strings]</strong>.  Add this line to the [strings] section:</p>
<p><strong>ABDEGPR_Only=&#8221;Restrict A, B, D, E, G, P and R drives only&#8221;</strong></p>
<p>Press <strong>Ctrl-Home</strong> to return to the top, then press <strong>Ctrl-F</strong> and Find <strong>!!NoDrives</strong>.  Add this entry in the ITEMLIST section for !!NoDrives:</p>
<p><strong>NAME !!ABDEGPR_Only                  VALUE NUMERIC                  163931</strong></p>
<p>Scroll down just a little until you see the !!NoViewOnDrive Policy.  Add this entry in the ITEMLIST section for !!NoViewOnDrive  Save the System.adm file and exit Notepad.</p>
<p><strong>NAME !!ABDEGPR_Only                  VALUE NUMERIC                  163931</strong></p>
<p>See Figures 1 and 2 for system.adm before changes and Figures 3 and 4 for system.adm after changes.</p>
<figure id="attachment_20269" aria-describedby="caption-attachment-20269" style="width: 604px" class="wp-caption alignnone"><a href="https://www.carlwebster.com/wp-content/uploads/2009/06/Figure001-1.jpg" target="_blank" rel="noopener"><img loading="lazy" decoding="async" class="wp-image-20269 size-full" src="https://www.carlwebster.com/wp-content/uploads/2009/06/Figure001-1.jpg" alt="Figure 1 (system.adm before changes)" width="604" height="469" srcset="https://www.carlwebster.com/wp-content/uploads/2009/06/Figure001-1.jpg 604w, https://www.carlwebster.com/wp-content/uploads/2009/06/Figure001-1-386x300.jpg 386w, https://www.carlwebster.com/wp-content/uploads/2009/06/Figure001-1-600x466.jpg 600w" sizes="auto, (max-width: 604px) 100vw, 604px" /></a><figcaption id="caption-attachment-20269" class="wp-caption-text">Figure 1 (system.adm before changes)</figcaption></figure>
<figure id="attachment_20271" aria-describedby="caption-attachment-20271" style="width: 391px" class="wp-caption alignnone"><a href="https://www.carlwebster.com/wp-content/uploads/2009/06/Figure002-1.jpg" target="_blank" rel="noopener"><img loading="lazy" decoding="async" class="wp-image-20271 size-full" src="https://www.carlwebster.com/wp-content/uploads/2009/06/Figure002-1.jpg" alt="Figure 2 (system.adm before changes)" width="391" height="125" /></a><figcaption id="caption-attachment-20271" class="wp-caption-text">Figure 2 (system.adm before changes)</figcaption></figure>
<figure id="attachment_20272" aria-describedby="caption-attachment-20272" style="width: 601px" class="wp-caption alignnone"><a href="https://www.carlwebster.com/wp-content/uploads/2009/06/Figure003-1.jpg" target="_blank" rel="noopener"><img loading="lazy" decoding="async" class="wp-image-20272 size-full" src="https://www.carlwebster.com/wp-content/uploads/2009/06/Figure003-1.jpg" alt="Figure 3 (system.adm after changes)" width="601" height="485" srcset="https://www.carlwebster.com/wp-content/uploads/2009/06/Figure003-1.jpg 601w, https://www.carlwebster.com/wp-content/uploads/2009/06/Figure003-1-372x300.jpg 372w" sizes="auto, (max-width: 601px) 100vw, 601px" /></a><figcaption id="caption-attachment-20272" class="wp-caption-text">Figure 3 (system.adm after changes)</figcaption></figure>
<figure id="attachment_20273" aria-describedby="caption-attachment-20273" style="width: 477px" class="wp-caption alignnone"><a href="https://www.carlwebster.com/wp-content/uploads/2009/06/Figure004-1.jpg" target="_blank" rel="noopener"><img loading="lazy" decoding="async" class="wp-image-20273 size-full" src="https://www.carlwebster.com/wp-content/uploads/2009/06/Figure004-1.jpg" alt="Figure 4 (system.adm after changes)" width="477" height="134" /></a><figcaption id="caption-attachment-20273" class="wp-caption-text">Figure 4 (system.adm after changes)</figcaption></figure>
<div class="mceTemp"></div>
<p>Save the System.adm file, exit Notepad and exit the command prompt.  In the Group Policy Object Editor, right-click <em>Administrative Templates</em> in the <em>User Configuration</em> section and select <em>Add/Remove Templates&#8230;</em> (Figure 5).</p>
<figure id="attachment_20274" aria-describedby="caption-attachment-20274" style="width: 360px" class="wp-caption alignnone"><a href="https://www.carlwebster.com/wp-content/uploads/2009/06/Figure005-1.jpg" target="_blank" rel="noopener"><img loading="lazy" decoding="async" class="wp-image-20274 size-full" src="https://www.carlwebster.com/wp-content/uploads/2009/06/Figure005-1.jpg" alt="Figure 5" width="360" height="236" /></a><figcaption id="caption-attachment-20274" class="wp-caption-text">Figure 5</figcaption></figure>
<p>Click <em>system</em> and then the <em>Remove</em> button (Figure 6).</p>
<figure id="attachment_20275" aria-describedby="caption-attachment-20275" style="width: 435px" class="wp-caption alignnone"><a href="https://www.carlwebster.com/wp-content/uploads/2009/06/Figure006-1.jpg" target="_blank" rel="noopener"><img loading="lazy" decoding="async" class="wp-image-20275 size-full" src="https://www.carlwebster.com/wp-content/uploads/2009/06/Figure006-1.jpg" alt="Figure 6" width="435" height="267" /></a><figcaption id="caption-attachment-20275" class="wp-caption-text">Figure 6</figcaption></figure>
<p>Click the <em>Add&#8230;</em> button, scroll to find system.adm, click <em>system.adm,</em> and then click <em>Open</em> (Figure 7).</p>
<figure id="attachment_20276" aria-describedby="caption-attachment-20276" style="width: 420px" class="wp-caption alignnone"><a href="https://www.carlwebster.com/wp-content/uploads/2009/06/Figure007-1.jpg" target="_blank" rel="noopener"><img loading="lazy" decoding="async" class="wp-image-20276 size-full" src="https://www.carlwebster.com/wp-content/uploads/2009/06/Figure007-1.jpg" alt="Figure 7" width="420" height="309" srcset="https://www.carlwebster.com/wp-content/uploads/2009/06/Figure007-1.jpg 420w, https://www.carlwebster.com/wp-content/uploads/2009/06/Figure007-1-408x300.jpg 408w" sizes="auto, (max-width: 420px) 100vw, 420px" /></a><figcaption id="caption-attachment-20276" class="wp-caption-text">Figure 7</figcaption></figure>
<p>Click <em>Close</em> (Figure 8).</p>
<figure id="attachment_20277" aria-describedby="caption-attachment-20277" style="width: 436px" class="wp-caption alignnone"><a href="https://www.carlwebster.com/wp-content/uploads/2009/06/Figure008-1.jpg" target="_blank" rel="noopener"><img loading="lazy" decoding="async" class="wp-image-20277 size-full" src="https://www.carlwebster.com/wp-content/uploads/2009/06/Figure008-1.jpg" alt="Figure 8" width="436" height="265" /></a><figcaption id="caption-attachment-20277" class="wp-caption-text">Figure 8</figcaption></figure>
<p>Expand <em>Administrative Templates</em>, expand <em>Windows Components</em>, click <em>Windows Explorer</em> and double-click <em>Hide these specified drives from My Computer</em> (Figure 9).</p>
<figure id="attachment_20278" aria-describedby="caption-attachment-20278" style="width: 639px" class="wp-caption alignnone"><a href="https://www.carlwebster.com/wp-content/uploads/2009/06/Figure009-1.jpg" target="_blank" rel="noopener"><img loading="lazy" decoding="async" class="wp-image-20278 size-full" src="https://www.carlwebster.com/wp-content/uploads/2009/06/Figure009-1.jpg" alt="Figure 9" width="639" height="426" srcset="https://www.carlwebster.com/wp-content/uploads/2009/06/Figure009-1.jpg 639w, https://www.carlwebster.com/wp-content/uploads/2009/06/Figure009-1-450x300.jpg 450w, https://www.carlwebster.com/wp-content/uploads/2009/06/Figure009-1-600x400.jpg 600w" sizes="auto, (max-width: 639px) 100vw, 639px" /></a><figcaption id="caption-attachment-20278" class="wp-caption-text">Figure 9</figcaption></figure>
<p>Click the Dropdown box, the new drive restriction selection is now available (Figure 10).</p>
<figure id="attachment_20279" aria-describedby="caption-attachment-20279" style="width: 403px" class="wp-caption alignnone"><a href="https://www.carlwebster.com/wp-content/uploads/2009/06/Figure010-1.jpg" target="_blank" rel="noopener"><img loading="lazy" decoding="async" class="wp-image-20279 size-full" src="https://www.carlwebster.com/wp-content/uploads/2009/06/Figure010-1.jpg" alt="Figure 10" width="403" height="444" srcset="https://www.carlwebster.com/wp-content/uploads/2009/06/Figure010-1.jpg 403w, https://www.carlwebster.com/wp-content/uploads/2009/06/Figure010-1-272x300.jpg 272w" sizes="auto, (max-width: 403px) 100vw, 403px" /></a><figcaption id="caption-attachment-20279" class="wp-caption-text">Figure 10</figcaption></figure>
<p>Select the new drive restriction and repeat for the <em>Prevent access to drives from My Computer</em> policy setting (Figure 11).</p>
<figure id="attachment_20280" aria-describedby="caption-attachment-20280" style="width: 401px" class="wp-caption alignnone"><a href="https://www.carlwebster.com/wp-content/uploads/2009/06/Figure011-1.jpg" target="_blank" rel="noopener"><img loading="lazy" decoding="async" class="wp-image-20280 size-full" src="https://www.carlwebster.com/wp-content/uploads/2009/06/Figure011-1.jpg" alt="Figure 11" width="401" height="444" srcset="https://www.carlwebster.com/wp-content/uploads/2009/06/Figure011-1.jpg 401w, https://www.carlwebster.com/wp-content/uploads/2009/06/Figure011-1-271x300.jpg 271w" sizes="auto, (max-width: 401px) 100vw, 401px" /></a><figcaption id="caption-attachment-20280" class="wp-caption-text">Figure 11</figcaption></figure>
<p>Exit editing the GPO and the new drive restrictions have been added to your GPO.</p>
<p><strong>Method 2 &#8212; Create a new ADM file:</strong></p>
<p>Why use Method 2?  If changes are not allowed to be made or Change Control processes must be followed to make changes to files installed by the Operating System, then Method 2 is an easy option.  It should take less than five minutes to complete Method 2.</p>
<p>To create a new ADM file, go to a command prompt and type in the following commands:</p>
<ul>
<li><strong>CD %SYSTEMROOT%\INF</strong> and press Enter</li>
<li><strong>Notepad HideDrives.adm</strong></li>
<li>Answer Yes to the <em>Do you want to create a new file? </em>popup</li>
</ul>
<p>Enter, or copy and paste, the following text into the new HideDrives.adm file:</p>
<pre class="brush: plain; title: ; notranslate">
#if version &amp;gt;= 3
CLASS USER
CATEGORY !!WindowsComponents
	CATEGORY !!WindowsExplorer
		KEYNAME &amp;quot;Software\Microsoft\Windows\CurrentVersion\Policies\Explorer&amp;quot;
		POLICY !!NoDrives
			EXPLAIN !!NoDrives_Help
			PART !!NoDrivesDropdown       DROPDOWNLIST NOSORT REQUIRED
			VALUENAME &amp;quot;NoDrives&amp;quot;
				ITEMLIST
					NAME !!ShowAll       VALUE NUMERIC       0
					NAME !!HideAll       VALUE NUMERIC       67108863 DEFAULT
					NAME !!ABDEGPR_Only       VALUE NUMERIC       163931
				END ITEMLIST
			END PART
		END POLICY
		POLICY !!NoViewOnDrive
			EXPLAIN !!NoViewOnDrive_Help
			PART !!NoViewOnDriveDropdown       DROPDOWNLIST NOSORT REQUIRED
			VALUENAME &amp;quot;NoViewOnDrive&amp;quot;
				ITEMLIST
					NAME !!ShowAll       VALUE NUMERIC       0
					NAME !!HideAll       VALUE NUMERIC       67108863 DEFAULT
					NAME !!ABDEGPR_Only       VALUE NUMERIC       163931
				END ITEMLIST
			END PART
		END POLICY
	END CATEGORY ; WindowsExplorer
END CATEGORY ; WindowsComponents
#endif
&#x5B;strings]
NoDrives=&amp;quot;Show only certain drives in My Computer&amp;quot;
NoDrives_Help=&amp;quot;Removes the icons representing all but selected hard drives from My Computer&amp;quot;
NoDrivesDropdown=&amp;quot;Pick one of the following combinations&amp;quot;
NoViewOnDrive=&amp;quot;Prevent access to drives from My Computer.&amp;quot;
NoViewOnDrive_Help=&amp;quot;Prevents users from using My Computer to gain access to the content of selected drives.&amp;quot;
NoViewOnDriveDropdown=&amp;quot;Pick one of the following combinations&amp;quot;
WindowsComponents=&amp;quot;Windows Components&amp;quot;
WindowsExplorer=&amp;quot;Windows Explorer&amp;quot;
ShowAll=&amp;quot;Show all drives&amp;quot;
HideAll=&amp;quot;Hide all drives&amp;quot;
ABDEGPR_Only=&amp;quot;Restrict A, B, D, E, G, P and R drives only&amp;quot;
</pre>
<p>Save the HideDrives.adm file, exit Notepad, and exit the command prompt.  In the Group Policy Object Editor, create a New Group Policy Object (GPO), name it <strong>Hide Server Drives</strong>. Edit the Hide Server Drives GPO, right-click <em>Administrative Templates</em> in the <em>User Configuration</em> section, and select <em>Add/Remove Templates&#8230;</em> (Figure 12).</p>
<p><strong>Update 10-Jan-2014.  To keep you from having weird characters placed in your text file by Copy &amp; Paste, I have placed a copy of HideDrives.adm <a title="HideDrives.adm file. Right-click and SaveAs HideDrives.adm" href="https://carlwebster.sharefile.com/d-s73d4107f5924b6da" target="_blank" rel="noopener noreferrer">here</a>.</strong></p>
<figure id="attachment_20281" aria-describedby="caption-attachment-20281" style="width: 360px" class="wp-caption alignnone"><a href="https://www.carlwebster.com/wp-content/uploads/2009/06/Figure012-1.jpg" target="_blank" rel="noopener"><img loading="lazy" decoding="async" class="wp-image-20281 size-full" src="https://www.carlwebster.com/wp-content/uploads/2009/06/Figure012-1.jpg" alt="Figure 12" width="360" height="236" /></a><figcaption id="caption-attachment-20281" class="wp-caption-text">Figure 12</figcaption></figure>
<p>In this GPO, the only policies used are:</p>
<ul>
<li>Hide these specified drives in My Computer</li>
<li>Prevent access to drives from My Computer</li>
</ul>
<p>To remove excess policies for this single purpose group policy, remove the other five Policy Templates (Figure 13):</p>
<ul>
<li>conf</li>
<li>inetres</li>
<li>system</li>
<li>wmplayer</li>
<li>wuau</li>
</ul>
<figure id="attachment_20282" aria-describedby="caption-attachment-20282" style="width: 433px" class="wp-caption alignnone"><a href="https://www.carlwebster.com/wp-content/uploads/2009/06/Figure013-1.jpg" target="_blank" rel="noopener"><img loading="lazy" decoding="async" class="wp-image-20282 size-full" src="https://www.carlwebster.com/wp-content/uploads/2009/06/Figure013-1.jpg" alt="Figure 13" width="433" height="267" /></a><figcaption id="caption-attachment-20282" class="wp-caption-text">Figure 13</figcaption></figure>
<p>Click <em>Add&#8230;</em>, click <em>HideDrives.adm,</em> and then click <em>Open</em> (Figure 14).</p>
<figure id="attachment_20283" aria-describedby="caption-attachment-20283" style="width: 563px" class="wp-caption alignnone"><a href="https://www.carlwebster.com/wp-content/uploads/2009/06/Figure014-1.jpg" target="_blank" rel="noopener"><img loading="lazy" decoding="async" class="wp-image-20283 size-full" src="https://www.carlwebster.com/wp-content/uploads/2009/06/Figure014-1.jpg" alt="Figure 14" width="563" height="411" srcset="https://www.carlwebster.com/wp-content/uploads/2009/06/Figure014-1.jpg 563w, https://www.carlwebster.com/wp-content/uploads/2009/06/Figure014-1-411x300.jpg 411w" sizes="auto, (max-width: 563px) 100vw, 563px" /></a><figcaption id="caption-attachment-20283" class="wp-caption-text">Figure 14</figcaption></figure>
<p>Click <em>Close</em> (Figure 15).</p>
<figure id="attachment_20286" aria-describedby="caption-attachment-20286" style="width: 434px" class="wp-caption alignnone"><a href="https://www.carlwebster.com/wp-content/uploads/2009/06/Figure015-1.jpg" target="_blank" rel="noopener"><img loading="lazy" decoding="async" class="wp-image-20286 size-full" src="https://www.carlwebster.com/wp-content/uploads/2009/06/Figure015-1.jpg" alt="Figure 15" width="434" height="267" /></a><figcaption id="caption-attachment-20286" class="wp-caption-text">Figure 15</figcaption></figure>
<p>Expand <em>Administrative Templates</em>, expand <em>Windows Components</em>, click <em>Windows Explorer</em> and double-click <em>Hide these specified drives from My Computer</em> (Figure 16).</p>
<figure id="attachment_20287" aria-describedby="caption-attachment-20287" style="width: 404px" class="wp-caption alignnone"><a href="https://www.carlwebster.com/wp-content/uploads/2009/06/Figure016-1.jpg" target="_blank" rel="noopener"><img loading="lazy" decoding="async" class="wp-image-20287 size-full" src="https://www.carlwebster.com/wp-content/uploads/2009/06/Figure016-1.jpg" alt="Figure 16" width="404" height="446" srcset="https://www.carlwebster.com/wp-content/uploads/2009/06/Figure016-1.jpg 404w, https://www.carlwebster.com/wp-content/uploads/2009/06/Figure016-1-272x300.jpg 272w" sizes="auto, (max-width: 404px) 100vw, 404px" /></a><figcaption id="caption-attachment-20287" class="wp-caption-text">Figure 16</figcaption></figure>
<p>Click <em>Enabled</em> and from the drop-down box select the new <em>Restrict A, B, D, E, G, P and R drives only</em> option (Figure 17).</p>
<figure id="attachment_20288" aria-describedby="caption-attachment-20288" style="width: 401px" class="wp-caption alignnone"><a href="https://www.carlwebster.com/wp-content/uploads/2009/06/Figure017-1.jpg" target="_blank" rel="noopener"><img loading="lazy" decoding="async" class="wp-image-20288 size-full" src="https://www.carlwebster.com/wp-content/uploads/2009/06/Figure017-1.jpg" alt="Figure 17" width="401" height="446" srcset="https://www.carlwebster.com/wp-content/uploads/2009/06/Figure017-1.jpg 401w, https://www.carlwebster.com/wp-content/uploads/2009/06/Figure017-1-270x300.jpg 270w" sizes="auto, (max-width: 401px) 100vw, 401px" /></a><figcaption id="caption-attachment-20288" class="wp-caption-text">Figure 17</figcaption></figure>
<p>Repeat for the <em>Prevent access to drives from My Computer</em> policy setting (Figure 18).</p>
<figure id="attachment_20289" aria-describedby="caption-attachment-20289" style="width: 401px" class="wp-caption alignnone"><a href="https://www.carlwebster.com/wp-content/uploads/2009/06/Figure018-1.jpg" target="_blank" rel="noopener"><img loading="lazy" decoding="async" class="wp-image-20289 size-full" src="https://www.carlwebster.com/wp-content/uploads/2009/06/Figure018-1.jpg" alt="Figure 18" width="401" height="446" srcset="https://www.carlwebster.com/wp-content/uploads/2009/06/Figure018-1.jpg 401w, https://www.carlwebster.com/wp-content/uploads/2009/06/Figure018-1-270x300.jpg 270w" sizes="auto, (max-width: 401px) 100vw, 401px" /></a><figcaption id="caption-attachment-20289" class="wp-caption-text">Figure 18</figcaption></figure>
<p>Exit editing the GPO and the new drive restrictions have been added to your GPO.</p>
<p><strong>Method 3 &#8212; Use the ICAClient.adm file provided by Citrix:</strong></p>
<p>If you are using Citrix XenApp and are also using the ICA Client version 10.x or higher than Citrix (akes available <a href="https://support.citrix.com/article/CTX220108" target="_blank" rel="noopener noreferrer">ICAClient.adm</a>.  Using this ADM file allows you to specify any combination of drive letters with no math involved.  Also, this ADM file is fully supported by Citrix if it has not been altered.  Citrix recommends using ICAClient.adm as the preferred way of controlling drives.  This GPO, in conjunction with the client-side XenApp plug-in, controls access to the specified drive letters.</p>
<p>Either download ICAClient.adm.zip and extract the ICAClient.adm file to c:\Windows\inf or copy the file from C:\Program Files\Citrix\ICA Client\Configuration.  In the Group Policy Object Editor, create a New Group Policy Object (GPO), name it <strong>ICAClient Hide Server Drives</strong>. Edit the Hide Server Drives GPO, right-click <em>Administrative Templates</em> in the <em>User Configuration</em> section, and select <em>Add/Remove Templates&#8230;</em> (Figure 19).</p>
<figure id="attachment_20290" aria-describedby="caption-attachment-20290" style="width: 360px" class="wp-caption alignnone"><a href="https://www.carlwebster.com/wp-content/uploads/2009/06/Figure019-1.jpg" target="_blank" rel="noopener"><img loading="lazy" decoding="async" class="wp-image-20290 size-full" src="https://www.carlwebster.com/wp-content/uploads/2009/06/Figure019-1.jpg" alt="Figure 19" width="360" height="236" /></a><figcaption id="caption-attachment-20290" class="wp-caption-text">Figure 19</figcaption></figure>
<p>In this GPO, the only policy that will be used is Client drive mapping.</p>
<p>To remove excess policies for this single purpose group policy, remove the other five Policy Templates (Figure 20):</p>
<ul>
<li>conf</li>
<li>inetres</li>
<li>system</li>
<li>wmplayer</li>
<li>wuau</li>
</ul>
<figure id="attachment_20294" aria-describedby="caption-attachment-20294" style="width: 433px" class="wp-caption alignnone"><a href="https://www.carlwebster.com/wp-content/uploads/2009/06/Figure020-1.jpg" target="_blank" rel="noopener"><img loading="lazy" decoding="async" class="wp-image-20294 size-full" src="https://www.carlwebster.com/wp-content/uploads/2009/06/Figure020-1.jpg" alt="Figure 20" width="433" height="267" /></a><figcaption id="caption-attachment-20294" class="wp-caption-text">Figure 20</figcaption></figure>
<p>Click <em>Add&#8230;</em>, click <em>icaclient.adm,</em> and then click <em>Open</em> (Figure 21).</p>
<figure id="attachment_20296" aria-describedby="caption-attachment-20296" style="width: 558px" class="wp-caption alignnone"><a href="https://www.carlwebster.com/wp-content/uploads/2009/06/Figure021-1.jpg" target="_blank" rel="noopener"><img loading="lazy" decoding="async" class="wp-image-20296 size-full" src="https://www.carlwebster.com/wp-content/uploads/2009/06/Figure021-1.jpg" alt="Figure 21" width="558" height="409" srcset="https://www.carlwebster.com/wp-content/uploads/2009/06/Figure021-1.jpg 558w, https://www.carlwebster.com/wp-content/uploads/2009/06/Figure021-1-409x300.jpg 409w" sizes="auto, (max-width: 558px) 100vw, 558px" /></a><figcaption id="caption-attachment-20296" class="wp-caption-text">Figure 21</figcaption></figure>
<p>Click <em>Close</em> (Figure 22).</p>
<figure id="attachment_20297" aria-describedby="caption-attachment-20297" style="width: 436px" class="wp-caption alignnone"><a href="https://www.carlwebster.com/wp-content/uploads/2009/06/Figure022-1.jpg" target="_blank" rel="noopener"><img loading="lazy" decoding="async" class="wp-image-20297 size-full" src="https://www.carlwebster.com/wp-content/uploads/2009/06/Figure022-1.jpg" alt="Figure 22" width="436" height="266" /></a><figcaption id="caption-attachment-20297" class="wp-caption-text">Figure 22</figcaption></figure>
<p>Expand <em>Administrative Templates</em>, expand <em>Citrix Components</em>, expand <em>Presentation Server Client</em>, click <em>Remoting client devices,</em> and double-click <em>Client drive mapping</em> (Figure 23).</p>
<figure id="attachment_20298" aria-describedby="caption-attachment-20298" style="width: 401px" class="wp-caption alignnone"><a href="https://www.carlwebster.com/wp-content/uploads/2009/06/Figure023-1.jpg" target="_blank" rel="noopener"><img loading="lazy" decoding="async" class="wp-image-20298 size-full" src="https://www.carlwebster.com/wp-content/uploads/2009/06/Figure023-1.jpg" alt="Figure 23" width="401" height="445" srcset="https://www.carlwebster.com/wp-content/uploads/2009/06/Figure023-1.jpg 401w, https://www.carlwebster.com/wp-content/uploads/2009/06/Figure023-1-270x300.jpg 270w" sizes="auto, (max-width: 401px) 100vw, 401px" /></a><figcaption id="caption-attachment-20298" class="wp-caption-text">Figure 23</figcaption></figure>
<p>Click <em>Enabled</em>, make sure <em>Enable client drive mapping</em> is checked and enter <strong>ABDEGPR </strong>in the box for <em>Do not map drives: </em>and click <em>OK</em> (Figure 24).</p>
<figure id="attachment_20299" aria-describedby="caption-attachment-20299" style="width: 401px" class="wp-caption alignnone"><a href="https://www.carlwebster.com/wp-content/uploads/2009/06/Figure024-1.jpg" target="_blank" rel="noopener"><img loading="lazy" decoding="async" class="wp-image-20299 size-full" src="https://www.carlwebster.com/wp-content/uploads/2009/06/Figure024-1.jpg" alt="Figure 24" width="401" height="445" srcset="https://www.carlwebster.com/wp-content/uploads/2009/06/Figure024-1.jpg 401w, https://www.carlwebster.com/wp-content/uploads/2009/06/Figure024-1-270x300.jpg 270w" sizes="auto, (max-width: 401px) 100vw, 401px" /></a><figcaption id="caption-attachment-20299" class="wp-caption-text">Figure 24</figcaption></figure>
<p>Exit editing the GPO and the new drive restrictions have been added to your GPO.</p>
<p>In this article, you learned three methods of adding additional drive letters to hide or prevent access for use on your Terminal or XenApp Servers.</p>
<p>Thanks</p>
<p>Webster</p>
]]></content:encoded>
					
					<wfw:commentRss>https://www.carlwebster.com/how-to-hide-additional-drive-letters-on-a-server/feed/</wfw:commentRss>
			<slash:comments>6</slash:comments>
		
		
		<post-id xmlns="com-wordpress:feed-additions:1">1088</post-id>	</item>
	</channel>
</rss>
