<?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>Ross' Cogitations</title>
	<atom:link href="http://ross-family.org/blog/feed/" rel="self" type="application/rss+xml" />
	<link>http://ross-family.org/blog</link>
	<description>Thoughts on theology &#38; technology.</description>
	<lastBuildDate>Fri, 30 Jul 2010 22:35:24 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.0.1</generator>
		<item>
		<title>Home Lab&#8230;Complete!</title>
		<link>http://ross-family.org/blog/2010/07/30/home-lab-complete/</link>
		<comments>http://ross-family.org/blog/2010/07/30/home-lab-complete/#comments</comments>
		<pubDate>Fri, 30 Jul 2010 22:13:54 +0000</pubDate>
		<dc:creator>Steve</dc:creator>
				<category><![CDATA[Technology]]></category>
		<category><![CDATA[ESX]]></category>
		<category><![CDATA[Lab]]></category>

		<guid isPermaLink="false">http://ross-family.org/blog/?p=192</guid>
		<description><![CDATA[I am very excited as I finally got my home lab complete!  Check it out and tell me what you think.]]></description>
			<content:encoded><![CDATA[<div id="attachment_193" class="wp-caption alignleft" style="width: 822px"><a href="http://ross-family.org/blog/wp-content/uploads/2010/07/Home-Lab.png"><img class="size-full wp-image-193" title="Home-Lab" src="http://ross-family.org/blog/wp-content/uploads/2010/07/Home-Lab.png" alt="" width="812" height="630" /></a><p class="wp-caption-text">Home Lab - Logical View</p></div>
<p>I am very excited as I finally got my home lab complete!  Check it out and tell me what you think.</p>
<div id="attachment_200" class="wp-caption alignleft" style="width: 235px"><a href="http://ross-family.org/blog/wp-content/uploads/2010/07/Switches_and_WAP1.jpg"><img class="size-medium wp-image-200" title="Switches_and_WAP" src="http://ross-family.org/blog/wp-content/uploads/2010/07/Switches_and_WAP1-225x300.jpg" alt="" width="225" height="300" /></a><p class="wp-caption-text">Perimeter switch, internal switch, and WAP</p></div>
<div id="attachment_201" class="wp-caption aligncenter" style="width: 310px"><a href="http://ross-family.org/blog/wp-content/uploads/2010/07/NAS_CableModem_UPS.jpg"><img class="size-medium wp-image-201" title="NAS_CableModem_UPS" src="http://ross-family.org/blog/wp-content/uploads/2010/07/NAS_CableModem_UPS-300x225.jpg" alt="" width="300" height="225" /></a><p class="wp-caption-text">8 TB NAS (iSCSI Support), cable modem, and UPS</p></div>
<div id="attachment_202" class="wp-caption alignright" style="width: 235px"><a href="http://ross-family.org/blog/wp-content/uploads/2010/07/ESX_Host.jpg"><img class="size-medium wp-image-202" title="ESX_Host" src="http://ross-family.org/blog/wp-content/uploads/2010/07/ESX_Host-225x300.jpg" alt="" width="225" height="300" /></a><p class="wp-caption-text">ESXi 4.x Host (1x Quad-Core, 16 GB RAM)</p></div>
]]></content:encoded>
			<wfw:commentRss>http://ross-family.org/blog/2010/07/30/home-lab-complete/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Windows 2008 R2 &#8211; File Management Tasks</title>
		<link>http://ross-family.org/blog/2010/03/10/windows-2008-r2-file-management-tasks/</link>
		<comments>http://ross-family.org/blog/2010/03/10/windows-2008-r2-file-management-tasks/#comments</comments>
		<pubDate>Thu, 11 Mar 2010 00:37:58 +0000</pubDate>
		<dc:creator>Steve</dc:creator>
				<category><![CDATA[Technology]]></category>
		<category><![CDATA[File Classification Infrastructure]]></category>
		<category><![CDATA[File Management Task]]></category>

		<guid isPermaLink="false">http://ross-family.org/blog/?p=180</guid>
		<description><![CDATA[There is a really neat post on Adi Oltean&#8217;s Blog concerning the use of Windows 2008 R2&#8242;s File Management Tasks (FMTs) to archive data.  He uses a &#8220;Custom&#8221; task type and refers to a batch script which moves files and leaves a symbolic link.  This is sort of a &#8220;poor man&#8217;s&#8221; HSM solution, admittedly, but still [...]]]></description>
			<content:encoded><![CDATA[<p>There is a really neat post on <a title="SCRIPT OF THE WEEK: HOW TO EXPIRE FILES WITH CLASSIFICATION" href="http://blogs.msdn.com/adioltean/archive/2009/05/15/script-of-the-week-how-to-expire-files-with-classification.aspx" target="_blank">Adi Oltean&#8217;s Blog</a> concerning the use of Windows 2008 R2&#8242;s File Management Tasks (FMTs) to archive data.  He uses a &#8220;Custom&#8221; task type and refers to a batch script which moves files and leaves a symbolic link.  This is sort of a &#8220;poor man&#8217;s&#8221; HSM solution, admittedly, but still pretty cool and instructive as to what can be accomplished with FMTs (anything you can script!).  His script is below:</p>
<pre>if exist "c:\protected\%~pnx1" @echo Target file already exists! &amp; goto :EOF 
md "c:\HSM\%~p1" 
move %1 "c:\protected\%~p1" 
mklink %1 "c:\protected\%~pnx1"</pre>
<p>If you are wondering (like I was) what the heck &#8220;%~p1&#8243; or &#8220;%~pnx1&#8243; means,<a title="Using batch parameters" href="http://www.microsoft.com/resources/documentation/windows/xp/all/proddocs/en-us/percent.mspx?mfr=true" target="_blank"> check out this site</a>.</p>
<p>I set up a similar FMT in my test environment to learn about this technology, but I had problems with Adi&#8217;s batch script.  It was hard to debug because it has no logging, so I wrote my own in VBS with lots of logging.  <a title="Archive Data Script" href="http://files.ross-family.org/ArchiveData.txt" target="_blank">You can download my script here</a>.  Here is how I set up my FMT.</p>
<p>1.  On the <strong>General</strong> tab enter a task name and the <strong>Scope</strong>.  The scope is where the FMT run against.</p>
<p><a href="http://ross-family.org/blog/wp-content/uploads/2010/03/FMT_General1.jpg"><img class="alignnone size-full wp-image-182" title="FMT_General" src="http://ross-family.org/blog/wp-content/uploads/2010/03/FMT_General1.jpg" alt="" width="290" height="346" /></a></p>
<p>2.   On the <strong>Action</strong> tab choose &#8220;Custom&#8221; for the <strong>Type</strong>.  For the <strong>Executable</strong> section enter the path to <strong>cscript.exe</strong>.  In the <strong>Arguments</strong> section enter the path to the script (download above), and choose the [Source File Path] variable to insert.  <strong>Command Security</strong> should be set to <strong>Local System</strong>.</p>
<p><a href="http://ross-family.org/blog/wp-content/uploads/2010/03/FMT_Action.jpg"><img class="alignnone size-full wp-image-183" title="FMT_Action" src="http://ross-family.org/blog/wp-content/uploads/2010/03/FMT_Action.jpg" alt="" width="293" height="349" /></a></p>
<p>3.  On the <strong>Condition</strong> tab place a check mark inside the <strong>Days since file was last accessed</strong> box.  Note the property conditions section of this tab.  Here you can add file classifications you have previously set up.  For a great read on Microsoft&#8217;s File Classification Infrastructure read <a href="http://blogs.technet.com/filecab/archive/2009/05/11/windows-server-2008-r2-file-classification-infrastructure-managing-data-based-on-business-value.aspx">the Storage Team&#8217;s blog about it</a>.  <strong>Note</strong>, if you want to use &#8220;Last Accessed&#8221; time for your FMT as I did you need to enable the tracking of this attribute.  This is done by setting HKLM\System\CurrentControlSet\Control\FileSystem\NtfsDisableLastAccessUpdate to 0 (this value is REG_DWORD).  <strong>Note</strong> <strong>that this could impact disk IO performance on busy file servers!</strong></p>
<p><strong><a href="http://ross-family.org/blog/wp-content/uploads/2010/03/FMT_Condition.jpg"><img class="alignnone size-full wp-image-184" title="FMT_Condition" src="http://ross-family.org/blog/wp-content/uploads/2010/03/FMT_Condition.jpg" alt="" width="290" height="347" /></a></strong></p>
<p>4.  On the <strong>Schedule</strong> tab enter whatever schedule/frequency is desired.</p>
<p>Finally, use a Windows &#8220;Touch&#8221; utility (<a title="Windows Touch Utility" href="http://www.guardiansoftware.net/touch/" target="_blank">download one here</a>) to alter the Last Accessed date of a file that falls within the scope of the FMT you created.  Then manually run your FMT (Right-click &gt; Run Now) and if all is well the file you altered should be moved and a symbolic link left in it&#8217;s place.</p>
]]></content:encoded>
			<wfw:commentRss>http://ross-family.org/blog/2010/03/10/windows-2008-r2-file-management-tasks/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>System Center Operations Manager 2007 R2 &#8211; How to Install a Gateway Server</title>
		<link>http://ross-family.org/blog/2010/03/10/system-center-operations-manager-2007-r2-how-to-install-a-gateway-server/</link>
		<comments>http://ross-family.org/blog/2010/03/10/system-center-operations-manager-2007-r2-how-to-install-a-gateway-server/#comments</comments>
		<pubDate>Wed, 10 Mar 2010 21:55:51 +0000</pubDate>
		<dc:creator>Steve</dc:creator>
				<category><![CDATA[Technology]]></category>
		<category><![CDATA[gateway]]></category>
		<category><![CDATA[OpsMgr]]></category>

		<guid isPermaLink="false">http://ross-family.org/blog/?p=177</guid>
		<description><![CDATA[Installing a Gateway server in your existing OpsMgr environment is a fairly challenging task.  When accomplishing this task for a customer I found many resources which helped, but I could not find one that was complete.  The process I found which was the most helpful was Brad Hearn&#8217;s blog.  Much of my documented process comes [...]]]></description>
			<content:encoded><![CDATA[<p>Installing a Gateway server in your existing OpsMgr environment is a fairly challenging task.  When accomplishing this task for a customer I found many resources which helped, but I could not find one that was complete.  The process I found which was the most helpful was <a title="Brad Hearn's Excellent Post on Gateway Installs" href="http://bradstechblog.com/scom/deploying-scom-gateway-server" target="_blank">Brad Hearn&#8217;s blog</a>.  Much of my documented process comes from his document.  Honestly I would never have gotten my gateways operational without Brad&#8217;s excellent post so many thanks!</p>
<p><a title="InstallingGatewayRole.pdf Document" href="http://files.ross-family.org/InstallingGatewayRole.pdf" target="_blank">Download &#8220;How to Install a Gateway Server.pdf&#8221; here</a>.</p>
]]></content:encoded>
			<wfw:commentRss>http://ross-family.org/blog/2010/03/10/system-center-operations-manager-2007-r2-how-to-install-a-gateway-server/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>OpsMgr 2007 DMZ-Based Agents Fail to Report to Gateway with Event ID 20070</title>
		<link>http://ross-family.org/blog/2010/02/19/opsmgr-2007-dmz-based-agents-fail-to-report-to-gateway-with-event-id-20070/</link>
		<comments>http://ross-family.org/blog/2010/02/19/opsmgr-2007-dmz-based-agents-fail-to-report-to-gateway-with-event-id-20070/#comments</comments>
		<pubDate>Sat, 20 Feb 2010 01:56:57 +0000</pubDate>
		<dc:creator>Steve</dc:creator>
				<category><![CDATA[Technology]]></category>
		<category><![CDATA[dmz]]></category>
		<category><![CDATA[gateway]]></category>
		<category><![CDATA[OpsMgr]]></category>

		<guid isPermaLink="false">http://ross-family.org/blog/?p=173</guid>
		<description><![CDATA[We recently noticed most of our DMZ-based OpsMgr agents were not connecting to their gateway server.  On the agent we saw the following event: Event Type:          Error Event Source:       OpsMgr Connector Event Category:    None Event ID:              20070 Computer:            &#60;Computer&#62; Description:          The OpsMgr Connector connected to &#60;domain&#62;, but the connection was [...]]]></description>
			<content:encoded><![CDATA[<p>We recently noticed most of our DMZ-based OpsMgr agents were not connecting to their gateway server.  On the agent we saw the following event:</p>
<p style="padding-left: 30px;"><span style="color: #000000;">Event Type:          Error<br />
Event Source:       OpsMgr Connector<br />
Event Category:    None<br />
Event ID:              20070<br />
Computer:            &lt;Computer&gt;<br />
Description:          The OpsMgr Connector connected to &lt;domain&gt;, but the connection was closed immediately after authentication occurred.  The most likely cause of this error is that the agent is not authorized to communicate with the server, or the server has not received configuration.  Check the event log on the server for the presence of 20000 events, indicating that agents which are not approved are attempting to connect.</span></p>
<p><span style="color: #000000;">On the gateway server the following event was being logged:</span></p>
<p><span style="color: #000000;"> </span></p>
<div id="_mcePaste" style="padding-left: 30px;">Event Type: Information</div>
<div style="padding-left: 30px;">Event Source:        OpsMgr Connector</div>
<div id="_mcePaste" style="padding-left: 30px;">Task Category: None</div>
<div id="_mcePaste" style="padding-left: 30px;">Event ID:      20000</div>
<div style="padding-left: 30px;">Description: A device which is not part of this management group has attempted to access this Health Service.  Requesting Device Name : &lt;computer&gt;</div>
<div id="_mcePaste"></div>
<div>The strange thing is that these agents had been working fine, and a few still were working!  We checked the usual things and did the usual recovery steps:</div>
<div>
<ul>
<li>Is TCP 5723 open to the gateway server?</li>
<li>Restart the HealthService</li>
<li>Is agent in Pending Management?</li>
<li>Restart the HealthService</li>
<li>Wait 5 minutes</li>
<li>Restart the HealthService</li>
</ul>
</div>
<p>All to no avail.  We found <a href="http://blogs.technet.com/operationsmgr/archive/2009/02/17/opsmgr-2007-port-requirements-for-scom-agents-in-a-dmz.aspx">http://blogs.technet.com/operationsmgr/archive/2009/02/17/opsmgr-2007-port-requirements-for-scom-agents-in-a-dmz.aspx</a> which suggested opening ports 88 and 389 from the agent to the RMS. This did not make sense to us since some agents were working.  So we used Netmon 3.3 to trace the client while the HealthService starts.  It never used any port but 5723.</p>
<p>We even enabled verbose diagnostic tracing (<a href="http://support.microsoft.com/kb/942864">http://support.microsoft.com/kb/942864</a>) and reviewed the logs.  We saw where the 20070 event was being generated but not much interesting besides that:</p>
<p style="padding-left: 30px;">5412.5956::02/19/2010-10:46:56.978 [Common] [] [Verbose] :Common::EventLogUtil::LogEvent{EventLogUtil_cpp311}Logging error event 20070 with args &#8220;&lt;servername&gt;&#8221;, &#8220;NULL&#8221;,&#8221;NULL&#8221;, &#8220;NULL&#8221;, &#8220;NULL&#8221;, &#8220;NULL&#8221;, &#8220;NULL&#8221;, &#8220;NULL&#8221;, &#8220;NULL&#8221;</p>
<p style="padding-left: 30px;">5412.5956::02/19/2010-10:46:56.978 [Common] [] [Information] :Common::EventLogUtil::LogEvent{EventLogUtil_cpp397}Logging event 20070 from source &#8220;OpsMgr Connector&#8221; with severity Error and description &#8220;The OpsMgr Connector connected to &lt;GatewayServer&gt;, but the connection was closed immediately after authentication occurred.  The most likely cause of this error is that the agent is not authorized to communicate with the server, or the server has not received configuration.  Check the event log on the server for the presence of 20000 events, indicating that agents which are not approved are attempting to connect.&#8221;.</p>
<p><strong>Solution&#8230;</strong></p>
<p>We finally had to call Microsoft.  After about 30 minutes of troubleshooting the engineer saw that the <strong>OpsMgrConnector.Config.xml <span style="font-weight: normal;">file in the <strong><span style="font-weight: normal;">C:\Program Files\System Center Operations Manager 2007\Health Service State\Connector Configuration Cache\&lt;MgmtGrpName&gt; folder on the gateway server was last modified several weeks ago.  He had us <strong><span style="font-weight: normal;">rename the <strong>Health Service State</strong> folder under <strong>C:\Program Files\System Center Operations Manager 2007</strong> and restart the HealthService.  After this a new </span>Health Service State </strong>folder was created and the <strong>OpsMgrConnector.Config.xml </strong>had a much more current last modified date.  We then restarted the HealthService on the agents and they reported in to the gateway server correctly. </span></strong></span></strong></p>
]]></content:encoded>
			<wfw:commentRss>http://ross-family.org/blog/2010/02/19/opsmgr-2007-dmz-based-agents-fail-to-report-to-gateway-with-event-id-20070/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Extend System Center Configuration Manager 2007 to Collect Fibre Channel HBA Information &#8211; Revised</title>
		<link>http://ross-family.org/blog/2010/01/06/extend-system-center-configuration-manager-2007-to-collect-fibre-channel-hba-information/</link>
		<comments>http://ross-family.org/blog/2010/01/06/extend-system-center-configuration-manager-2007-to-collect-fibre-channel-hba-information/#comments</comments>
		<pubDate>Thu, 07 Jan 2010 00:19:17 +0000</pubDate>
		<dc:creator>Steve</dc:creator>
				<category><![CDATA[Technology]]></category>
		<category><![CDATA[ConfigMgr]]></category>
		<category><![CDATA[SCCM]]></category>

		<guid isPermaLink="false">http://ross-family.org/blog/?p=141</guid>
		<description><![CDATA[Version 2&#8230; In my original post on this subject I described how to set up ConfigMgr to grab data from the MSFC_FCAdapterHBAAttributes class under Root\wmi.   Later I found out that, as least in my environment, the data in this class was unreliable.  It would literally be there one day and the next it would [...]]]></description>
			<content:encoded><![CDATA[<p>Version 2&#8230;</p>
<p>In my original post on this subject I described how to set up ConfigMgr to grab data from the MSFC_FCAdapterHBAAttributes class under Root\wmi.   Later I found out that, as least in my environment, the data in this class was unreliable.  It would literally be there one day and the next it would have disappeared.  So I had to change my approach.  This new method of getting HBA info into ConfigMgr is not exactly elegant, but it is effective.  <strong><span style="text-decoration: underline;">Use it at your own risk!</span></strong> The process is as follows:</p>
<ol>
<li>Install <a title="Microsoft's FCInfo Utility" href="http://www.microsoft.com/downloads/details.aspx?FamilyID=73d7b879-55b2-4629-8734-b0698096d3b1&amp;displaylang=en" target="_blank">Microsoft&#8217;s FCInfo utility</a> on your machines with HBAs.  I packaged this up and deployed to a collection populated with these machines.  <strong>Note </strong>that the install will throw an error on Windows Server 2008 but the utility still works and it <strong>MUST </strong>be present for this process to work!</li>
<li>Update sms_def.mof to look for HBA info in a new class called Custom_HBA_Info (later steps actually create this class).  Add the below text to your sms_def.mof (always make a backup first!).</li>
</ol>
<p style="padding-left: 30px;">
<pre style="padding-left: 60px;">#pragma namespace ("\\\\.\\root\\CIMv2\\sms")</pre>
<pre style="padding-left: 60px;">[SMS_Report(TRUE),</pre>
<pre style="padding-left: 60px;">SMS_Group_Name("Custom_HBA_Info"),</pre>
<pre style="padding-left: 60px;">SMS_Class_ID("Microsoft|Custom_Frost_HBA_Info|1.0"),</pre>
<pre style="padding-left: 60px;">Namespace("\\\\\\\\.\\\\root\\\\CIMv2")]</pre>
<pre style="padding-left: 60px;">class Custom_HBA_Info : SMS_Class_Template</pre>
<pre style="padding-left: 60px;">{</pre>
<pre style="padding-left: 60px;">[SMS_Report(TRUE), key ]</pre>
<pre style="padding-left: 60px;">string	Adapter;</pre>
<pre style="padding-left: 60px;">[SMS_Report(TRUE)]</pre>
<pre style="padding-left: 60px;">string	NodeWWN;</pre>
<pre style="padding-left: 60px;">[SMS_Report(TRUE)]</pre>
<pre style="padding-left: 60px;">string	PortWWN;</pre>
<pre style="padding-left: 60px;">[SMS_Report(TRUE)]</pre>
<pre style="padding-left: 60px;">string	SerialNumber;</pre>
<pre style="padding-left: 60px;">[SMS_Report(TRUE)]</pre>
<pre style="padding-left: 60px;">string	DriverName;</pre>
<pre style="padding-left: 60px;">[SMS_Report(TRUE)]</pre>
<pre style="padding-left: 60px;">string	DriverVersion;</pre>
<pre style="padding-left: 60px;">[SMS_Report(TRUE)]</pre>
<pre style="padding-left: 60px;">string	FirmwareVersion;</pre>
<pre style="padding-left: 60px;">[SMS_Report(TRUE)]</pre>
<pre style="padding-left: 60px;">datetime DateCollected;</pre>
<pre style="padding-left: 60px;">};</pre>
<p style="padding-left: 30px;">Almost immediately after saving the sms_def.mof file ConfigMgr will compile it.  You can monitor the success/failure of this in the dataldr.log file on the ConfigMgr server (&lt;install_dir&gt;\Logs).</p>
<p style="padding-left: 30px;"><a href="http://ross-family.org/blog/wp-content/uploads/2010/01/dataldr.log.jpg"><img class="alignnone size-full wp-image-152" title="dataldr.log" src="http://ross-family.org/blog/wp-content/uploads/2010/01/dataldr.log.jpg" alt="" width="975" height="361" /></a></p>
<p style="padding-left: 30px;">3.  Download <a title="GetHBAInfo Script" href="http://files.ross-family.org/GetHBAInfo.txt" target="_blank">my script</a> (rename to GetHBAInfo.<strong>vbs</strong>)  to a share on your network.  The script creates the WMI class referenced above, runs fcinfo.exe, grabs the output, and populates it into Custom_HBA_Info.</p>
<p style="padding-left: 30px;">4.  Create a Software Distribution package for the script.  Create a Program for the package with the following command line: <strong>%systemroot%\system32\cscript.exe GetHBAInfo.vbs</strong></p>
<p style="padding-left: 30px;">5.  Schedule a recurring advertisement associated with a collection containing all your machines with HBAs.  My advertisement runs once per week.</p>
<p>Thats it.  Now, to be sure it is working:</p>
<p style="padding-left: 30px;">1.  Run your advertisement so that the script runs on your agents with HBAs.</p>
<p style="padding-left: 30px;">2.  On one of those computers use wmic to validate the presence of the namespace.  Command syntax:</p>
<p style="padding-left: 60px;">wmic path Custom_HBA_Info</p>
<p style="padding-left: 60px;">If an Invalid Class error is displayed then either the script has not run or it has an error.  The script logs it&#8217;s results under %windir%\Temp in a file that starts with GetHBAInfo_&lt;date&gt;_&lt;time&gt;.log.</p>
<p style="padding-left: 30px;">3.  Force a couple of agents to run their hardware inventory.  Monitor the dataldr.log on the site server.  You should see lots of data flying by as the agent updates it hardware info.  When complete search for the string &#8220;Custom_HBA_Info&#8221;.  If you find it then the data should have gotten put in your site database.  Look for a table in the database called dbo.Custom_HBA_Info_Data.  If it exists then you should be golden.</p>
<p style="padding-left: 30px;">4.  Use Resource Explorer to view one of your machines with HBAs.  Under Hardware you should see Custom_HBA_Info, and your data should be there.</p>
<p>Special thanks to my co-worker <a title="Jason Sandys' Blog" href="http://myitforum.com/cs2/blogs/jsandys/default.aspx" target="_blank">Jason Sandys</a>, a ConfigMgr MVP.  Without his assistance I would not have gotten this to work.</p>
]]></content:encoded>
			<wfw:commentRss>http://ross-family.org/blog/2010/01/06/extend-system-center-configuration-manager-2007-to-collect-fibre-channel-hba-information/feed/</wfw:commentRss>
		<slash:comments>11</slash:comments>
		</item>
		<item>
		<title>Return HBA World Wide Name from WMI</title>
		<link>http://ross-family.org/blog/2009/12/16/return-hba-world-wide-name-from-wmi/</link>
		<comments>http://ross-family.org/blog/2009/12/16/return-hba-world-wide-name-from-wmi/#comments</comments>
		<pubDate>Wed, 16 Dec 2009 22:23:06 +0000</pubDate>
		<dc:creator>Steve</dc:creator>
				<category><![CDATA[Technology]]></category>

		<guid isPermaLink="false">http://ross-family.org/blog/?p=133</guid>
		<description><![CDATA[I searched quite a bit looking for a way to get an FC card&#8217;s WWN from WMI.  I found some information indicating it might be in the root\WMI namespace so I used Scriptomatic 2.0 to look through the classes in that namespace until I finally found it.  It was in QL_FibrePortNPIVAttributes (I assume this classis [...]]]></description>
			<content:encoded><![CDATA[<p>I searched quite a bit looking for a way to get an FC card&#8217;s WWN from WMI.  I found some information indicating it <em>might</em> be in the root\WMI namespace so I used <a title="Download Scriptomatic 2.0 from Microsoft" href="http://www.microsoft.com/downloads/details.aspx?FamilyID=09dfc342-648b-4119-b7eb-783b0f7d1178&amp;displaylang=en" target="_blank">Scriptomatic 2.0</a> to look through the classes in that namespace until I finally found it.  It was in QL_FibrePortNPIVAttributes (I assume this classis added by the QLogic driver installation&#8230;yeah the QL gave it away&#8230;).</p>
<p>Unfortunately the numbers of the WWN are returned in decimal rather than in hex, the digit groups are returned separated by commas, and single digits are used when the number is below 10.  So it looks like this:</p>
<p>WWPN: 80,6,11,0,0,194,154,2</p>
<p>Well, we can&#8217;t have that!  So I wrote a script to grab the information and convert it hex, group digits with a colon and &#8220;pad&#8221; an extra zero if the decimal value was under 10.  Here is the script:</p>
<pre style="font-family: Andale Mono, Lucida Console, Monaco, fixed, monospace; color: #000000; background-color: #eee; font-size: 12px; border: 1px dashed #999999; line-height: 14px; padding: 5px; overflow: auto; width: 100%;"><code>On Error Resume Next

Const wbemFlagReturnImmediately = &amp;h10
Const wbemFlagForwardOnly = &amp;h20

arrComputers = Array(".")
For Each strComputer In arrComputers
	Set objWMIService = GetObject("winmgmts:\\" &amp; strComputer &amp; "\root\WMI")
	Set colItems = objWMIService.ExecQuery("SELECT * FROM QL_FibrePortNPIVAttributes", "WQL", _
                                          wbemFlagReturnImmediately + wbemFlagForwardOnly)
	For Each objItem In colItems
		var1 = objItem.WWPN
		For i = 0 To UBound(var1)
			If len(Hex(var1(i))) &lt; 2 then
				var2 = "0" + Hex(var1(i))
			Else
				var2 = Hex(var1(i))
			End If
			tmpVar1 = tmpVar1 &amp; ":" &amp; var2
			tmpVar2 = mid(tmpVar1, 2)
		Next
		wscript.echo tmpVar2
		tmpVar1 = ""
		tmpVar2 = ""
	Next
Next
</code></pre>
<p>This returns a beautifully formatted (yes I am a geek) WWN&#8230;observe:</p>
<p>50:06:0B:00:00:C2:9A:00</p>
]]></content:encoded>
			<wfw:commentRss>http://ross-family.org/blog/2009/12/16/return-hba-world-wide-name-from-wmi/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Printer Migration Client Script</title>
		<link>http://ross-family.org/blog/2009/11/03/printer-migration-client-script/</link>
		<comments>http://ross-family.org/blog/2009/11/03/printer-migration-client-script/#comments</comments>
		<pubDate>Tue, 03 Nov 2009 19:04:38 +0000</pubDate>
		<dc:creator>Steve</dc:creator>
				<category><![CDATA[Technology]]></category>
		<category><![CDATA[Printing]]></category>
		<category><![CDATA[scripting]]></category>
		<category><![CDATA[VBS]]></category>

		<guid isPermaLink="false">http://ross-family.org/blog/?p=124</guid>
		<description><![CDATA[If you have ever had to migrate all the printers from one Windows print server to another, the server side part is pretty easy.  Windows 2008 includes the Printer Migration Wizard which can migrate the queues.  Prior to Windows 2008 there was an outstanding utility called Print Migrator (PrintMig) which made it a snap. However [...]]]></description>
			<content:encoded><![CDATA[<p>If you have ever had to migrate all the printers from one Windows print server to another, the server side part is pretty easy.  Windows 2008 includes the Printer Migration Wizard which can migrate the queues.  Prior to Windows 2008 there was an outstanding utility called Print Migrator (<a title="Download PrintMig 3.1" href="http://www.microsoft.com/downloads/details.aspx?familyid=9b9f2925-cbc9-44da-b2c9-ffdbc46b0b17&amp;displaylang=en" target="_blank">PrintMig</a>) which made it a snap.</p>
<p>However the client side is a bit more tricky.  Since there is a different server name in the printer share path the clients will be broken after the migration.</p>
<p style="padding-left: 30px; ">Printer share  path on old server: \\OldPrnSrv\Printer1</p>
<p style="padding-left: 30px; ">Printer share path on new server: \\NewPrnSrv\Printer1</p>
<p>This problem can be further complicated if during the migration you took the opportunity to standardize Printer/Printer Share names.  I had this exact problem at a client.  I solved it with a GPO-based logon script and input file.  Before I go into how to implement this, first a little about the script.</p>
<ul>
<li>The script first checks for the existence of a &#8220;check&#8221; file.  If the check file exists then we assume the script already ran and we exit.</li>
<li>Then the script records the user&#8217;s default printer as it will need this info later to ensure the same device is set as default after the printer reconnect.</li>
<li>Next the script walks through the input file and attempts to disconnect each &#8220;old&#8221; printer connection and reconnect to the new.  If the printer share in the input file is not defined on the person&#8217;s machine then it skips that line and moves on to the next line/printer.</li>
<li>Once all the input file has been traversed the script resets the person&#8217;s default printer and creates the &#8220;check&#8221; file.</li>
</ul>
<p>Here is the script code.</p>
<pre style="font-family: Andale Mono, Lucida Console, Monaco, fixed, monospace; color: #000000; background-color: #eee; font-size: 12px; border: 1px dashed #999999; line-height: 14px; padding: 5px; overflow: auto; width: 100%;"><code>On Error Resume Next
Const ForReading = 1

Set WshNetwork = CreateObject("WScript.Network")
Set fso = CreateObject("Scripting.FileSystemObject")
If Not fso.FileExists("c:\PrinterReconnectFinished.txt") then
Set f1 = fso.OpenTextFile(GetPath() &amp; "input.txt", ForReading)

varDefault = GetDefaultPrinter()

tmpArr = Split(f1.readall, vbcrlf)
for i = 0 to UBOUND(tmpArr)
    If instr(1, tmpArr(i), varDefault, 1) then x = i
    err.clear
    tmpVar = split(tmpArr(i), "~")
    WshNetwork.RemovePrinterConnection tmpVar(0)
    If err.number = 0 then WshNetwork.AddWindowsPrinterConnection tmpVar(1)
next

var1 = split(tmpArr(x), "~")
ConfigDefaultPrinter(var1(1))
    Set f2 = fso.CreateTextFile("c:\PrinterReconnectFinished.txt", True)
    Set f3 = fso.Getfile("c:\PrinterReconnectFinished.txt")
    f3.attributes = f3.attributes + 2
End If

'*************************************************************************************************
Sub ConfigDefaultPrinter(name)
        '*****************************************************************************************
        '*****************************************************************************************
        ' Purpose:  This sub routine defines a default printer based on the printer name passed to
        ' it.
        ' Version 1.0
        ' Arguements:  None
        '*****************************************************************************************
        '*****************************************************************************************
    strComputer = "."
    Set objWMIService = GetObject("winmgmts:" &amp; "{impersonationLevel=impersonate}!\\" &amp; _
    strComputer &amp; "\root\cimv2")
    Set colInstalledPrinters =  objWMIService.ExecQuery _
    ("Select * from Win32_Printer Where Name = 'name'")
    For Each objPrinter in colInstalledPrinters
            objPrinter.SetDefaultPrinter()
    Next
End Sub
'*************************************************************************************************

'*************************************************************************************************
Function GetDefaultPrinter()
        '*****************************************************************************************
        '*****************************************************************************************
        ' Purpose:  This Function returns the default printer as configured on the client.
        ' Version 1.0
        ' Arguements:  None
        ' Returns:  Text string
        '*****************************************************************************************
        '*****************************************************************************************
    strComputer = "."
    Set objWMIService = GetObject("winmgmts:" &amp; "{impersonationLevel=impersonate}!\\" &amp; _
    strComputer &amp; "\root\cimv2")
    Set colInstalledPrinters =  objWMIService.ExecQuery("Select * from Win32_Printer")
    For Each objPrinter in colInstalledPrinters
        If objPrinter.Default then
            GetDefaultPrinter = objPrinter.Name
        End If
    Next
End Function
'*************************************************************************************************

'*************************************************************************************************
Function GetPath()
    '*********************************************************************************************
    '*********************************************************************************************
    ' Purpose:  This Function returns the path where the script is currently being executed.
    ' Version 1.0
    ' Arguements:  None
    ' Returns:  Text string
    '*********************************************************************************************
    '*********************************************************************************************
    Dim path
    path = WScript.ScriptFullName
    GetPath = Left(path, InStrRev(path, "\"))
End Function
'*************************************************************************************************
</code></pre>
<p>Here&#8217;s how you can implement this solution.</p>
<p>1. Create an input file and put each old printer share path and new share path on a new line separated by a &#8220;~&#8221;.  It should look like this:</p>
<pre style="padding-left: 60px; ">\\OldPrnSrv1\Printer1~\\NewPrnSrv1\Printer1</pre>
<pre style="padding-left: 60px; ">\\OldPrnSrv1\Printer2~\\NewPrnSrv1\Printer1</pre>
<pre style="padding-left: 60px; ">etc...</pre>
<p>2. When you have all the printer share paths entered in your input file save it as <strong>input.txt</strong>.</p>
<p>3. Next download the printer migration script <a title="PrinterReconnect script." href="http://files.ross-family.org/PrinterReconnect.vbs.txt" target="_blank">here</a>.  Strip the &#8220;.txt&#8221; off of the end of the name.</p>
<p>4. Save the input.txt and script files in the domain scripts share (\\mydomain.com\SYSVOL\mydomain.com\scripts).</p>
<p>5. Create a new Group Policy Object (GPO) called <strong>Printer Reconnect</strong>. <strong>NOTE</strong>: <strong>Don&#8217;t</strong> link it to any container yet.</p>
<p>6. Edit the GPO under<strong> User Configuration</strong>&gt;<strong>Windows Settings</strong>&gt;<strong>Scripts</strong> double-click <strong>Logon</strong>.</p>
<p>7. Click the <strong>Add</strong> button, then <strong>Browse</strong>.  Locate/select the <strong>PrinterReconnect.vbs</strong> script in the path you saved it to previously.</p>
<p>8. Click <strong>OK</strong> and make sure the script is displayed on the <strong>Logon Properties</strong> screen.  Click <strong>OK.</strong></p>
<p>Once all printers are migrated to the new server and well tested, you should be ready to have the clients reconnect to the migrated queues on the new server.  ONLY when ready to have clients reconnect, go to the next step.</p>
<p>9. Link the <strong>Printer Reconnect</strong> GPO to an appropriate container to apply the logon script to targeted users.</p>
<p>As always, use this at your own risk.  Let me know if you have any issues and I will help out as I can.</p>
]]></content:encoded>
			<wfw:commentRss>http://ross-family.org/blog/2009/11/03/printer-migration-client-script/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Desire = Entitlement?</title>
		<link>http://ross-family.org/blog/2009/09/04/115/</link>
		<comments>http://ross-family.org/blog/2009/09/04/115/#comments</comments>
		<pubDate>Fri, 04 Sep 2009 16:49:45 +0000</pubDate>
		<dc:creator>Steve</dc:creator>
				<category><![CDATA[Philosophy]]></category>
		<category><![CDATA[Theology]]></category>

		<guid isPermaLink="false">http://ross-family.org/blog/?p=115</guid>
		<description><![CDATA[As I was listening to NPR while driving home yesterday (A thing I recommend be done only sparingly and with great vigilance) I heard about the battle being waged in Maine over same-sex marriage.  You can read the story here.  As I listened I thought about the audacity of a group that would attempt to [...]]]></description>
			<content:encoded><![CDATA[<p>As I was listening to <a title="NPR: National Public Radio" href="http://www.npr.org/" target="_blank">NPR</a> while driving home yesterday (A thing I recommend be done only sparingly and with great vigilance) I heard about the battle being waged in Maine over same-sex marriage.  You can read the story <a title="Battle Lines Drawn In Maine Same-Sex Debate" href="http://www.npr.org/templates/story/story.php?storyId=112513826" target="_blank">here</a>.  As I listened I thought about the audacity of a group that would attempt to change the definition of an institution which has been established and unchanged for millennia.  I wondered at the mind set that thinks a &#8220;thing&#8221; can be redefined merely because of its observer&#8217;s wish.  It seemed to me (and still does) that such a person might equally state that a rock is now an eggplant and that it would be so just because they desire it to be.  It is not as though such people are insane, i.e. they do not look at a rock and see an eggplant.  It is that they believe the identity or meaning of a &#8220;thing&#8221; has no reference outside of <em>their </em>wish or desire.  It is not perception so much as it is will.  A thing may be a thing only if they allow it to be.  It has no &#8220;thing-ness&#8221; outside of their desire/will.</p>
<p>I also thought about the word &#8220;entitlement&#8221;.  I never cease to be amazed at the sense of entitlement people can have.  Those who would change the definition of marriage would do so because they feel entitled to &#8220;marry&#8221; their partner and gain all the benefits there of.  I tried to trace this thought pattern back to it&#8217;s source, and I came back to desire.  It is as though we believe that if we desire something strongly enough or have desired it for long enough that somehow we &#8220;deserve&#8221; it or we are &#8220;owed&#8221; it.  If we want it, it must be good and right.  We begin to feel antagonistic toward those who would presume to deny us this desire.  If someone disagrees they must be ignorant, bigoted, or worse.</p>
<p>So some questions I have include:</p>
<ul>
<li><strong>At what point did reality begin to depend on our will/desire?</strong> Reality is what it is.  Reason dictates that a thing is what it is whether I like/want/appreciate/agree with it or not.  Certainly a thing cannot be &#8220;A&#8221; and &#8220;non-A&#8221; at the same time and in the same relationship.  The essence of a thing is not affected one little bit by my perception of it, belief in it or desire concerning it.</li>
<li><strong>When was it established that desire would equate with entitlement? </strong>My desire for something does not equate to my being owed that thing&#8230;no matter how long I have wanted it nor how strongly I want it.  When I think about it clearly, I am owed precious little in life.</li>
</ul>
<p>Some may object that in the case of marriage, it is not an &#8220;absolute&#8221; reality but rather a &#8220;societal&#8221; reality, or that marriage has no meaning outside of what a society defines.  Such a belief is convenient for those in a society who would change the meaning of marriage.  If they can achieve change through whatever course allowed by their particular society then it will be altered in actuality.  However such a belief comes from somewhere.  All ideas do.  In this case, most likely the society gave themselves the right to define marriage.  They assumed ownership of the definition.  Such self-empowerment may be appropriate when setting arbitrary laws such as a speed limit but is marriage arbitrary?  Does the history of marriage extend from before such a society was in place?  Of course it does.  Marriage was created and given definition at creation&#8230;by the Creator.  When some religious leaders of His day asked Jesus about the permanence of marriage, to what point did He refer His answer?  Did He quote Roman law?  No, He quoted Genesis:</p>
<p style="padding-left: 30px; ">And Pharisees came up to him and tested him by asking, “Is it lawful to divorce one’s wife for any cause?” <a id="Mt 19:4" style="color: #34448b; cursor: pointer; outline-style: none; outline-width: initial; outline-color: initial; text-decoration: none; margin: 0px;" title="Matthew 19:4" rel="verse"> </a>He answered, <span style="color: #ee1f25;">“Have you not read that he who created them from the beginning made them male and female, </span><span style="color: #ee1f25;">and said, &#8216;</span><span style="color: #ee1f25;">Therefore a man shall leave his father and his mother and hold fast to his wife, and </span><span style="color: #ee1f25;">the two shall become one flesh’? </span><span style="color: #ee1f25;">So they are no longer two but one flesh. </span><span style="color: #ee1f25;">What therefore God has joined together, let not man separate.” </span>They said to him, “Why then did Moses command one to give a certificate of divorce and to send her away?” <a id="Mt 19:8" style="color: #34448b; cursor: pointer; outline-style: none; outline-width: initial; outline-color: initial; text-decoration: none; margin: 0px;" title="Matthew 19:8" rel="verse"> </a>He said to them, <span style="color: #ee1f25;">“Because of your </span><span style="color: #ee1f25;">hardness of heart Moses allowed you to divorce your wives, but <em><strong>f</strong></em><em><strong>rom the beginning</strong></em> it was not so.</span><a id="Mt 19:9" style="color: #34448b; cursor: pointer; outline-style: none; outline-width: initial; outline-color: initial; text-decoration: none; margin: 0px;" title="Matthew 19:9" rel="verse"> </a><span style="color: #ee1f25;">And I say to you: whoever divorces his wife, except for sexual immorality, and marries another, commits adultery.” <a title="Matthew 19:3-9" href="http://ref.ly/Mt19.3-9" target="_blank">Matthew 19:3-9</a></span></p>
<p><span style="color: #333333;">So, concerning the definition of marriage, we would do well remember its origin, respect its creator and subjugate our own desires to His decree.</span></p>
]]></content:encoded>
			<wfw:commentRss>http://ross-family.org/blog/2009/09/04/115/feed/</wfw:commentRss>
		<slash:comments>7</slash:comments>
		</item>
		<item>
		<title>Server Inventory Script</title>
		<link>http://ross-family.org/blog/2009/08/05/server-inventory-script/</link>
		<comments>http://ross-family.org/blog/2009/08/05/server-inventory-script/#comments</comments>
		<pubDate>Wed, 05 Aug 2009 22:08:39 +0000</pubDate>
		<dc:creator>Steve</dc:creator>
				<category><![CDATA[Technology]]></category>
		<category><![CDATA[Inventory]]></category>
		<category><![CDATA[Server]]></category>
		<category><![CDATA[VBS rename]]></category>
		<category><![CDATA[WSH]]></category>

		<guid isPermaLink="false">http://ross-family.org/blog/?p=98</guid>
		<description><![CDATA[As a consultant, many times I need to quickly gain information about the Windows servers in an environment. I&#8217;ve finally put something together to try and make my life easier. It is a script that opens Microsoft Excel, sets column definitions that seem useful to me, then populates the spreadsheet with a bunch of data.  [...]]]></description>
			<content:encoded><![CDATA[<p>As a consultant, many times I need to quickly gain information about the Windows servers in an environment. I&#8217;ve finally put something together to try and make my life easier. It is a script that opens Microsoft Excel, sets column definitions that seem useful to me, then populates the spreadsheet with a bunch of data.  The data is gathered from every Windows server that is a member of the Active Directory domain you specify.  Specifically, it gathers:</p>
<ol>
<li>Server Name</li>
<li>Whether the server is online (ping&#8217;able) or not</li>
<li>OS</li>
<li>Service Pack</li>
<li>Manufacturer</li>
<li>Model</li>
<li>Serial Number</li>
<li>Whether it is a domain controller</li>
<li>Whether it is a DNS server</li>
<li>Whether it is a DHCP server</li>
<li>Whether it is a WINS server (yes there are still a few of those)</li>
<li>Whether it is a MSCS cluster node</li>
<li>Whether it is an Exchange server</li>
<li>What applications are installed (excluding Security Updates and Hotfixes)</li>
<li>Whether WMI could be connected to</li>
</ol>
<h2>Dependencies</h2>
<ul>
<li>Microsoft Excel (any later version is fine)</li>
<li>Sysinternals PSTools</li>
<li>Admin rights on every server in the domain (Domain Admin rights would be easiest)</li>
</ul>
<p>I wanted to use WMI exclusively but unfortunately it is very unreliable, therefore the script heavily depends on 2 PSTools (PSInfo and PSService).  You will need to <a title="Download PSTools" href="http://download.sysinternals.com/Files/PsTools.zip" target="_blank">download those</a> and place them in a directory on the PC you run the script from.</p>
<h2>Edits</h2>
<p>The only lines you need to edit are 15 and 16, where you enter in your domain name (follow the format example!) and the path to your PSTools directory.</p>
<pre>'your domain below
strDom = "DC=ACME,DC=COM"
pstoolsPath = "c:\Tools\pstools"</pre>
<p>You can download the text of the script <a title="FindServers Script" href="http://files.ross-family.org/FindServers.txt" target="_blank">here</a> or a zip file with the script <a title="Download FindServers.zip" href="http://files.ross-family.org/FindServers.zip" target="_blank">here</a>.  I hope others find it helpful.  As always, use this solution <strong>at your own risk</strong>.  If you have problems with the script, comment on the post and I will help when I have time.</p>
]]></content:encoded>
			<wfw:commentRss>http://ross-family.org/blog/2009/08/05/server-inventory-script/feed/</wfw:commentRss>
		<slash:comments>3</slash:comments>
		</item>
		<item>
		<title>How To Use Windows 2008 to Host Storage for ESX</title>
		<link>http://ross-family.org/blog/2009/07/08/how-to-use-windows-2008-to-host-storage-for-esx/</link>
		<comments>http://ross-family.org/blog/2009/07/08/how-to-use-windows-2008-to-host-storage-for-esx/#comments</comments>
		<pubDate>Thu, 09 Jul 2009 02:15:38 +0000</pubDate>
		<dc:creator>Steve</dc:creator>
				<category><![CDATA[Technology]]></category>
		<category><![CDATA[ESX]]></category>
		<category><![CDATA[Virtualization]]></category>

		<guid isPermaLink="false">http://ross-family.org/blog/?p=83</guid>
		<description><![CDATA[Disclaimer Let me stress before I begin that the below configuration is for testing only.  It involves insecure settings on the Windows 2008 server so do not use this information for a production solution. Background In an effort to learn about ESX 4.0, or vSphere, I set up 4 VMs within VMWare Workstation 6.5.2 using the below [...]]]></description>
			<content:encoded><![CDATA[<p><strong>Disclaimer</strong></p>
<p>Let me stress before I begin that the below configuration <strong>is for testing only</strong>.  It involves insecure settings on the Windows 2008 server so <strong>do not</strong> use this information for a production solution.</p>
<p><strong>Background</strong></p>
<p>In an effort to learn about ESX 4.0, or vSphere, I set up 4 VMs within VMWare Workstation 6.5.2 using the below configuration:</p>
<ul>
<li>2 VMs to run ESX      4.0.  I used the instructions at xtravirt.com (get them <a title="How to Install VMware ESX 4.0 on Workstation 6.5.2 as a VM" href="http://xtravirt.com/xd10089" target="_blank">here</a>) to create      the VMs.</li>
<li>1 VM to run      vCenter server.</li>
<li>1 VM to serve as      a domain controller.  vCenter cannot be installed on a domain      controller, hence the need for another VM.  By the way, you don&#8217;t      need a domain environment for vSphere, but I wanted one to test with.</li>
</ul>
<p>All my installs went fine.  However problems arose when attempting to use the vCenter server (OS: Windows 2008) as my NFS server.  I had used Windows 2003 in the past with no issue for a similar set up so I was stuck for awhile. Google searches revealed others with the same issue but no solutions (that I could find).  I&#8217;m happy to report I did finally get it working&#8230;steps below.  The following assumptions apply:</p>
<ol>
<li>You have already      added the <strong>File Server</strong> role with the <strong>Services      for Network File System (NFS)</strong> role service and that you have an      NFS share created.  For a walk-thru of this go <a title="Services for NFS Step-by-Step Guide for Windows Server 2008" href="http://technet.microsoft.com/en-us/library/cc753302(WS.10).aspx" target="_blank">here</a>.</li>
<li>Your ESX host&#8217;s      have a VMKernel port properly configured to allow access to the NFS      server.  Confirm the configuration is correct by vmkping&#8217;ing the NFS      server from the host itself.</li>
</ol>
<p><img class="alignnone size-full wp-image-88" title="VMKPing" src="http://ross-family.org/blog/wp-content/uploads/2009/07/VMKPing.jpg" alt="VMKPing" width="558" height="84" /></p>
<p><strong>Steps to enable ESX hosts to access NFS share on Windows 2008</strong>.</p>
<ol>
<li>Edit the NTFS      permissions of the shared folder to allow the <strong>ANONYMOUS LOGON</strong> group <strong>Full      Control</strong>.
<ol>
<li><img class="alignnone size-medium wp-image-96" title="AnonymousPermission" src="http://ross-family.org/blog/wp-content/uploads/2009/07/AnonymousPermission-224x300.jpg" alt="AnonymousPermission" width="224" height="300" /></li>
</ol>
</li>
<li>On the <strong>NFS Sharing</strong> tab click the <strong>Manage NFS Sharing</strong> button.  Check the <strong>Allow anonymous access</strong> box.
<ol>
<li><img class="alignnone size-medium wp-image-85" title="NFSTab" src="http://ross-family.org/blog/wp-content/uploads/2009/07/NFSTab-223x300.jpg" alt="NFSTab" width="223" height="300" /><img class="alignnone size-medium wp-image-86" title="NFSAdvancedSharing" src="http://ross-family.org/blog/wp-content/uploads/2009/07/NFSAdvancedSharing-300x276.jpg" alt="NFSAdvancedSharing" width="300" height="276" /></li>
</ol>
</li>
<li>Click the <strong>Permissions</strong> button.  In the <strong>NFS Permissions</strong> dialog click <strong>Add</strong>.  Select <strong>Host </strong>and enter the IP address of your first ESX host.  Set the permissions to <strong>Read/Write</strong> and select the <strong>Allow root access</strong> box and click <strong>OK</strong>.  Repeat the proceedure for your other ESX host.
<ol>
<li><img class="alignnone size-medium wp-image-87" title="NFSPermissions" src="http://ross-family.org/blog/wp-content/uploads/2009/07/NFSPermissions-300x240.jpg" alt="NFSPermissions" width="300" height="240" /><img class="alignnone size-medium wp-image-89" title="AddHost" src="http://ross-family.org/blog/wp-content/uploads/2009/07/AddHost-288x300.jpg" alt="AddHost" width="288" height="300" /></li>
</ol>
</li>
<li>Click <strong>OK</strong> three times then <strong>Close</strong>.  If a warning pops up about how insecure this configuration is, click<strong>Yes</strong>.  Remember, this is for testing only.</li>
<li>Open the <strong>Local Security Policy</strong>editor (Start&gt;Administrative tools&gt;Local Security Policy), expand <strong>Local Policies</strong>, and click <strong>Security Options</strong>.</li>
<li>Locate the <strong>Network Access: Let Everyone permissions apply to anonymous users</strong>policy and make sure it is set to <strong>Enabled</strong>.</li>
<li>Reboot the NFS server.  When it comes back up you should be able to mount the NFS share from the ESX host(s) within vCenter.</li>
</ol>
]]></content:encoded>
			<wfw:commentRss>http://ross-family.org/blog/2009/07/08/how-to-use-windows-2008-to-host-storage-for-esx/feed/</wfw:commentRss>
		<slash:comments>8</slash:comments>
		</item>
	</channel>
</rss>
