<?xml version='1.0' encoding='UTF-8'?><?xml-stylesheet href="http://www.blogger.com/styles/atom.css" type="text/css"?><feed xmlns='http://www.w3.org/2005/Atom' xmlns:openSearch='http://a9.com/-/spec/opensearchrss/1.0/' xmlns:georss='http://www.georss.org/georss' xmlns:gd='http://schemas.google.com/g/2005' xmlns:thr='http://purl.org/syndication/thread/1.0'><id>tag:blogger.com,1999:blog-151789648433871658</id><updated>2011-10-26T20:15:42.012-04:00</updated><category term='sql connection sharepoint'/><title type='text'>Tecumseh IT Consulting - Christopher Plunkett</title><subtitle type='html'>My IT Ramblings</subtitle><link rel='http://schemas.google.com/g/2005#feed' type='application/atom+xml' href='http://chrplunk.blogspot.com/feeds/posts/default'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/151789648433871658/posts/default?max-results=100'/><link rel='alternate' type='text/html' href='http://chrplunk.blogspot.com/'/><link rel='hub' href='http://pubsubhubbub.appspot.com/'/><author><name>chrplunk</name><uri>http://www.blogger.com/profile/16009472756469833389</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://3.bp.blogspot.com/_8WReXMmzvS0/SrzSTPr0DVI/AAAAAAAAOJc/Ai5Q1IPV978/S220/me.jpg'/></author><generator version='7.00' uri='http://www.blogger.com'>Blogger</generator><openSearch:totalResults>20</openSearch:totalResults><openSearch:startIndex>1</openSearch:startIndex><openSearch:itemsPerPage>100</openSearch:itemsPerPage><entry><id>tag:blogger.com,1999:blog-151789648433871658.post-2768623797517853948</id><published>2011-10-26T20:15:00.000-04:00</published><updated>2011-10-26T20:15:42.028-04:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='sql connection sharepoint'/><title type='text'>Ever wonder if an "old" database is still being used?  Here's how to find out in SQL</title><content type='html'>Ever wonder if an "old" database is still being used? &amp;nbsp;Here's how to find out in SQL 2005. &amp;nbsp;This will tell you any active connections. &amp;nbsp;In SharePoint I first spun up all known web apps and then ran this:&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;b&gt;DECLARE @retTable TABLE (&lt;/b&gt;&lt;br /&gt;&lt;b&gt;&amp;nbsp; SPID int not null&lt;/b&gt;&lt;br /&gt;&lt;b&gt;&amp;nbsp; , Status varchar (255) not null&lt;/b&gt;&lt;br /&gt;&lt;b&gt;&amp;nbsp; , Login varchar (255) not null&lt;/b&gt;&lt;br /&gt;&lt;b&gt;&amp;nbsp; , HostName varchar (255) not null&lt;/b&gt;&lt;br /&gt;&lt;b&gt;&amp;nbsp; , BlkBy varchar(10) not null&lt;/b&gt;&lt;br /&gt;&lt;b&gt;&amp;nbsp; , DBName varchar (255) null&lt;/b&gt;&lt;br /&gt;&lt;b&gt;&amp;nbsp; , Command varchar (255) not null&lt;/b&gt;&lt;br /&gt;&lt;b&gt;&amp;nbsp; , CPUTime int not null&lt;/b&gt;&lt;br /&gt;&lt;b&gt;&amp;nbsp; , DiskIO int not null&lt;/b&gt;&lt;br /&gt;&lt;b&gt;&amp;nbsp; , LastBatch varchar (255) not null&lt;/b&gt;&lt;br /&gt;&lt;b&gt;&amp;nbsp; , ProgramName varchar (255) null&lt;/b&gt;&lt;br /&gt;&lt;b&gt;&amp;nbsp; , SPID2 int not null&lt;/b&gt;&lt;br /&gt;&lt;b&gt;&amp;nbsp; , REQUESTID INT&lt;/b&gt;&lt;br /&gt;&lt;b&gt;) &amp;nbsp;&lt;/b&gt;&lt;br /&gt;&lt;b&gt;INSERT INTO @retTable EXEC sp_who2 &amp;nbsp;&lt;/b&gt;&lt;br /&gt;&lt;b&gt;SELECT Status, Login, HostName, DBName, Command,&lt;/b&gt;&lt;br /&gt;&lt;b&gt;&amp;nbsp; CPUTime, ProgramName, BlkBy AS [Last CMD Time] -- *&lt;/b&gt;&lt;br /&gt;&lt;b&gt;&amp;nbsp; FROM @retTable&lt;/b&gt;&lt;br /&gt;&lt;b&gt;&amp;nbsp; --WHERE Login not like 'sa%'&amp;nbsp;&lt;/b&gt;&lt;br /&gt;&lt;b&gt;&amp;nbsp; ORDER BY DBName;&lt;/b&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/151789648433871658-2768623797517853948?l=chrplunk.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://chrplunk.blogspot.com/feeds/2768623797517853948/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=151789648433871658&amp;postID=2768623797517853948' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/151789648433871658/posts/default/2768623797517853948'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/151789648433871658/posts/default/2768623797517853948'/><link rel='alternate' type='text/html' href='http://chrplunk.blogspot.com/2011/10/ever-wonder-if-old-database-is-still.html' title='Ever wonder if an &quot;old&quot; database is still being used?  Here&apos;s how to find out in SQL'/><author><name>chrplunk</name><uri>http://www.blogger.com/profile/16009472756469833389</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://3.bp.blogspot.com/_8WReXMmzvS0/SrzSTPr0DVI/AAAAAAAAOJc/Ai5Q1IPV978/S220/me.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-151789648433871658.post-2608958098155917432</id><published>2010-12-17T12:46:00.002-05:00</published><updated>2010-12-17T12:54:56.075-05:00</updated><title type='text'>Ever Wonder How Many Documents Are In Your SharePoint Document Libraries?</title><content type='html'>&lt;span class="Apple-style-span" style="color: blue;"&gt;using &lt;/span&gt;System;&lt;br /&gt;&lt;span class="Apple-style-span" style="color: blue;"&gt;using &lt;/span&gt;System.Collections.Generic;&lt;br /&gt;&lt;span class="Apple-style-span" style="color: blue;"&gt;using &lt;/span&gt;System.Linq;&lt;br /&gt;&lt;span class="Apple-style-span" style="color: blue;"&gt;using &lt;/span&gt;System.Text;&lt;br /&gt;&lt;span class="Apple-style-span" style="color: blue;"&gt;using &lt;/span&gt;Microsoft.SharePoint;&lt;br /&gt;&lt;span class="Apple-style-span" style="background-color: white;"&gt;&lt;span class="Apple-style-span" style="color: blue;"&gt;using &lt;/span&gt;&lt;/span&gt;Microsoft.SharePoint.Utilities;&lt;br /&gt;&lt;span class="Apple-style-span" style="color: blue;"&gt;using &lt;/span&gt;Microsoft.SharePoint.Administration;&lt;br /&gt;&lt;span class="Apple-style-span" style="color: blue;"&gt;using &lt;/span&gt;System.Configuration;&lt;br /&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="color: #6aa84f;"&gt;/* *********************************************************************************&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="color: #6aa84f;"&gt;PURPOSE: to answer the question "How many total documents do I have in the document&amp;nbsp;libraries in my web application?"&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="color: #6aa84f;"&gt;Given a SharePoint web application, my code iterates through each site collection of&amp;nbsp;the webapp, then each subweb of the site collection to get a collection of document&amp;nbsp;library objects, and then counts the number of documents in each. &amp;nbsp;It then pushes this&amp;nbsp;information to a custom list on an adminsite, one per web app.&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="color: #6aa84f;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="color: #6aa84f;"&gt;Christopher Plunkett&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="color: #6aa84f;"&gt;December 2010&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="color: #6aa84f;"&gt;chris.plunkett @ gmail.com&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="color: #6aa84f;"&gt;********************************************************************************&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="color: #6aa84f;"&gt;*/&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="background-color: white;"&gt;&lt;span class="Apple-style-span" style="color: blue;"&gt;namespace &lt;/span&gt;&lt;/span&gt;HowManyDocuments&lt;br /&gt;{&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&lt;span class="Apple-style-span" style="color: blue;"&gt;class &lt;/span&gt;CountDocuments&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;{&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;static void Main(string[] args)&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;{ &lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &lt;span class="Apple-style-span" style="color: #6aa84f;"&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;// Read variables from app.config. &amp;nbsp;You need to pass in the adminwebsite&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="color: #6aa84f;"&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;// that will store your custom list of information you want to capture&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="color: #6aa84f;"&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;// and also the Web Application in question&lt;/span&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;string adminWebsite = ConfigurationSettings.AppSettings["adminwebsite"];&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;string siteToCheck = ConfigurationSettings.AppSettings["sitetocheck"];&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&lt;span class="Apple-style-span" style="color: #6aa84f;"&gt;// First, create the list on the adminsite&lt;/span&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;CreateList(adminWebsite, siteToCheck);&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;int number = 0;&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;List&lt;spwebsiteinfo&gt; spwebinfos = new List&lt;spwebsiteinfo&gt;();&lt;/spwebsiteinfo&gt;&lt;/spwebsiteinfo&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;try&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;{&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&lt;span class="Apple-style-span" style="color: #6aa84f;"&gt;// SPWebApplication.Sites --&amp;gt; SPSiteCollection&lt;/span&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;SPWebApplication webApplication = SPWebApplication.Lookup(new Uri(siteToCheck));&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;SPSiteCollection siteCollections = webApplication.Sites;&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&lt;span class="Apple-style-span" style="color: #6aa84f;"&gt;// For each SPSite in SPSiteCollection...&lt;/span&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;foreach (SPSite siteCollection in siteCollections)&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;{&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;SPWebsiteInfo spwebinfo = new SPWebsiteInfo() { Documents = new List&lt;doclib&gt;() };&lt;/doclib&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;spwebinfo.Documents = new List&lt;doclib&gt;();&lt;/doclib&gt;&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&lt;span class="Apple-style-span" style="color: #6aa84f;"&gt;// SPSite.AllWebs --&amp;gt;; SPWebCollection&lt;/span&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;SPWebCollection collWebsite = siteCollection.AllWebs;&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&lt;span class="Apple-style-span" style="color: #6aa84f;"&gt;// For each SPWeb's in SPWebCollection&lt;/span&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;foreach (SPWeb subSite in collWebsite)&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;{&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;spwebinfo.WebsiteName = subSite.Name;&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;span class="Apple-style-span" style="color: #6aa84f;"&gt;&amp;nbsp;// SPWeb.GetListsOfType --&amp;gt; SPListCollection&lt;/span&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;SPListCollection docliblistcollection = subSite.GetListsOfType(SPBaseType.DocumentLibrary);&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&lt;span class="Apple-style-span" style="color: #6aa84f;"&gt;// For each SPList in SPListCollection&lt;/span&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;foreach (SPList list in docliblistcollection)&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;{&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;spwebinfo.Documents.Add(&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;new DocLib()&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;{&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;DocumentCnt = list.ItemCount,&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;Title = list.Title&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;}&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;);&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;string adminSite = adminWebsite;&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;string theTargetSite = siteToCheck;&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;string parentSite = list.ParentWeb.ToString();&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;string docLibName = list.Title.ToString();&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;int numOfDocs = list.ItemCount;&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&lt;span class="Apple-style-span" style="color: #6aa84f;"&gt;// Now go Update the custom list&lt;/span&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;UpdateList(adminSite, theTargetSite, parentSite, docLibName, numOfDocs);&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;span class="Apple-style-span" style="color: #6aa84f;"&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;// Writing to the console is redundant and unecessary. &amp;nbsp;I originally&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="color: #6aa84f;"&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;// did it for debuging of course but decided to leave it&lt;/span&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;Console.WriteLine("On site: " + parentSite);&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;Console.WriteLine("Doc Lib Name: " + docLibName);&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;Console.WriteLine("Number of Docs: " + numOfDocs);&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;span class="Apple-style-span" style="color: #6aa84f;"&gt;&amp;nbsp; &amp;nbsp;// Running totals...&lt;/span&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;int tempNumber = list.ItemCount;&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;number = number + tempNumber;&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;Console.WriteLine("Total Docs in " + parentSite + "= " + number); &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;}&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;subSite.Close();&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;}&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;siteCollection.Close();&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;spwebinfos.Add(spwebinfo);&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;}&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;Console.WriteLine("YOU CAN NOW LOOK AT YOUR DATA HERE: " + adminWebsite + "/Document Library Count List for " + siteToCheck);&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;//Console.Read();&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;}&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;catch(System.Exception e)&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;{&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;Console.WriteLine("An Error has occurred! " + e.Message, e.InnerException, e.Source, e.StackTrace.ToString());&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;Console.Read();&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;}&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;}&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;private static bool listExists(SPListCollection collection, string title)&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;{&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&lt;span class="Apple-style-span" style="color: #6aa84f;"&gt;// Check to see if the list exists. &amp;nbsp;If it does we will destroy it soon...&lt;/span&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;foreach (SPList list in collection)&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;{&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; if (list.Title == title)&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;{&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;return true;&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;}&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;}&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;return false;&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;}&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;static void CreateList(string adminWebSite, string siteToCheck)&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;{&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&lt;span class="Apple-style-span" style="color: #6aa84f;"&gt;// This creates the custom list in the given admin website&lt;/span&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;SPSite site = new SPSite(adminWebSite);&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;SPWeb web = site.OpenWeb();&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;SPListCollection lists = web.Lists;&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;if (listExists(web.Lists, "Document Library Count List for " + siteToCheck ))&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;{&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&lt;span class="Apple-style-span" style="color: #6aa84f;"&gt; &amp;nbsp;// If the list exists, delete it&lt;/span&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;SPList deleteThisList = web.Lists["Document Library Count List for " + siteToCheck ];&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;deleteThisList.Delete();&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;}&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;{&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;span class="Apple-style-span" style="color: #6aa84f;"&gt;&amp;nbsp;// Create new Generic list called "Document Library Count List for NAMEOFSITE"&lt;/span&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;lists.Add("Document Library Count List for " + siteToCheck, "", SPListTemplateType.GenericList);&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;SPList list = web.Lists["Document Library Count List for " + siteToCheck];&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;span class="Apple-style-span" style="color: #6aa84f;"&gt;&amp;nbsp;// Rename default Title column and then create the other columns&lt;/span&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;web.AllowUnsafeUpdates = true;&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&lt;span class="Apple-style-span" style="color: #6aa84f;"&gt;// Here we rename Title column, which is created by default by SharePoint&lt;/span&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;list.Fields["Title"].Title = "Subweb";&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;list.Fields["Title"].Description = "From this website";&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;list.Fields["Title"].Update();&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;span class="Apple-style-span" style="color: #6aa84f;"&gt;&amp;nbsp;// Now add the other two&lt;/span&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;list.Fields.Add("DocLib Name", SPFieldType.Text, true);&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;list.Fields.Add("Number of Documents", SPFieldType.Integer, true);&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&lt;span class="Apple-style-span" style="color: #6aa84f;"&gt;// Next we make new column visible in default view&lt;/span&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;SPView view = list.DefaultView;&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;view.ViewFields.Add("Number of Documents");&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;view.ViewFields.Add("DocLib Name");&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&lt;span class="Apple-style-span" style="color: #6aa84f;"&gt; &amp;nbsp; &amp;nbsp;// Finally, group by Title column (original name still applies)&lt;/span&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;string viewQuery = "&lt;groupby collapse="\&amp;quot;TRUE\&amp;quot;" grouplimit="\&amp;quot;100\&amp;quot;"&gt;&lt;fieldref name="\&amp;quot;Title\&amp;quot;"&gt;&lt;/fieldref&gt;&lt;/groupby&gt;&lt;orderby&gt;&lt;fieldref name="\&amp;quot;ID\&amp;quot;"&gt;&lt;/fieldref&gt;&lt;/orderby&gt;";&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;view.Query = viewQuery;&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;view.Update();&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;web.AllowUnsafeUpdates = false;&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;}&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;web.Close();&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;site.Close();&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;}&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;static void UpdateList(string adminWebsite, string theTargetSite, string parentSite, string docLibName, int numOfDocs)&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;{&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&lt;span class="Apple-style-span" style="color: #6aa84f;"&gt;// This function simply updates the admin SharePoint list with the information you are trying to capture&lt;/span&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;SPSite site = new SPSite(adminWebsite);&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;SPWeb web = site.OpenWeb();&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;SPList theList = web.Lists["Document Library Count List for " + theTargetSite];&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;SPListItem listItem = theList.Items.Add();&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;listItem["Subweb"] = parentSite;&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;listItem["Number of Documents"] = numOfDocs;&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;listItem["DocLib Name"] = docLibName;&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;listItem.Update(); &lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;}&lt;br /&gt;&amp;nbsp;&amp;nbsp; }&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;public class SPWebsiteInfo&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;{&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;public string WebsiteName { get; set; }&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;public List&lt;doclib&gt; Documents { get; set; }&lt;/doclib&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;public int DocumentCnt&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;{&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;get&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;{&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;return this.Documents.Count;&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;}&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;}&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;}&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;public class DocLib&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;{&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;public string Title { get; set; }&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;public int DocumentCnt { get; set; }&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;public override string ToString()&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;{&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;return String.Format("{0}\t{1}", this.Title, this.DocumentCnt);&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;}&lt;br /&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;}&lt;br /&gt;}&lt;br /&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/151789648433871658-2608958098155917432?l=chrplunk.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://chrplunk.blogspot.com/feeds/2608958098155917432/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=151789648433871658&amp;postID=2608958098155917432' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/151789648433871658/posts/default/2608958098155917432'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/151789648433871658/posts/default/2608958098155917432'/><link rel='alternate' type='text/html' href='http://chrplunk.blogspot.com/2010/12/ever-wonder-how-many-documents-are-in.html' title='Ever Wonder How Many Documents Are In Your SharePoint Document Libraries?'/><author><name>chrplunk</name><uri>http://www.blogger.com/profile/16009472756469833389</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://3.bp.blogspot.com/_8WReXMmzvS0/SrzSTPr0DVI/AAAAAAAAOJc/Ai5Q1IPV978/S220/me.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-151789648433871658.post-6373159747374416158</id><published>2010-04-07T15:03:00.001-04:00</published><updated>2010-04-07T15:06:54.205-04:00</updated><title type='text'>Enable Cascading Menus in SharePoint QuickLaunch</title><content type='html'>&lt;ul&gt;&lt;li&gt;&lt;span class="Apple-style-span" style="font-family: Arial, Helvetica, sans-serif;"&gt;Use SharePoint Designer and navigate to the root. &amp;nbsp;&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span class="Apple-style-span" style="font-family: Arial, Helvetica, sans-serif;"&gt;Drill-down to &lt;b&gt;_catalogs/masterpage&lt;/b&gt; (Master Page Gallery)&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span class="Apple-style-span" style="font-family: Arial, Helvetica, sans-serif;"&gt;Open up your .master page you want to edit&lt;/span&gt;&lt;/li&gt;&lt;/ul&gt;&lt;span class="Apple-style-span" style="font-family: Arial, Helvetica, sans-serif;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;span class="Apple-style-span" style="font-family: Arial, Helvetica, sans-serif;"&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;Look for this section:&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="font-family: Arial, Helvetica, sans-serif;"&gt;&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="font-family: Arial, Helvetica, sans-serif;"&gt;&lt;span class="Apple-style-span" style="color: blue;"&gt;&lt;span class="Apple-style-span" style="color: black;"&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&lt;/span&gt;&lt;sharepoint:aspmenu&gt;&lt;/sharepoint:aspmenu&gt;&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-tab-span" style="white-space: pre;"&gt;&lt;span class="Apple-style-span" style="color: blue;"&gt;&lt;span class="Apple-style-span" style="color: black; white-space: normal;"&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&lt;/span&gt; &lt;/span&gt;&lt;/span&gt;&lt;span class="Apple-style-span" style="color: blue;"&gt;id="QuickLaunchMenu"&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-tab-span" style="white-space: pre;"&gt;&lt;span class="Apple-style-span" style="color: blue;"&gt;&lt;span class="Apple-style-span" style="color: black; white-space: normal;"&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&lt;/span&gt; &lt;/span&gt;&lt;/span&gt;&lt;span class="Apple-style-span" style="color: blue;"&gt;DataSourceId="QuickLaunchSiteMap"&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-tab-span" style="white-space: pre;"&gt;&lt;span class="Apple-style-span" style="color: blue;"&gt;&lt;span class="Apple-style-span" style="color: black; white-space: normal;"&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&lt;/span&gt; &lt;/span&gt;&lt;/span&gt;&lt;span class="Apple-style-span" style="color: blue;"&gt;runat="server"&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-tab-span" style="white-space: pre;"&gt;&lt;span class="Apple-style-span" style="color: blue;"&gt;&lt;span class="Apple-style-span" style="color: black; white-space: normal;"&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&lt;/span&gt; &lt;/span&gt;&lt;/span&gt;&lt;span class="Apple-style-span" style="color: blue;"&gt;Orientation="Vertical"&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-tab-span" style="white-space: pre;"&gt;&lt;span class="Apple-style-span" style="color: blue;"&gt;&lt;span class="Apple-style-span" style="color: black; white-space: normal;"&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&lt;/span&gt; &lt;/span&gt;&lt;/span&gt;&lt;span class="Apple-style-span" style="color: blue;"&gt;&lt;b&gt;StaticDisplayLevels&lt;/b&gt;="2"&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-tab-span" style="white-space: pre;"&gt;&lt;span class="Apple-style-span" style="color: blue;"&gt;&lt;span class="Apple-style-span" style="color: black; white-space: normal;"&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&lt;/span&gt; &lt;/span&gt;&lt;/span&gt;&lt;span class="Apple-style-span" style="color: blue;"&gt;ItemWrap="true"&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-tab-span" style="white-space: pre;"&gt;&lt;span class="Apple-style-span" style="color: blue;"&gt;&lt;span class="Apple-style-span" style="color: black; white-space: normal;"&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&lt;/span&gt; &lt;/span&gt;&lt;/span&gt;&lt;span class="Apple-style-span" style="color: blue;"&gt;&lt;b&gt;MaximumDynamicDisplayLevels&lt;/b&gt;="0"&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-tab-span" style="white-space: pre;"&gt;&lt;span class="Apple-style-span" style="color: blue;"&gt;&lt;span class="Apple-style-span" style="color: black; white-space: normal;"&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&lt;/span&gt; &lt;/span&gt;&lt;/span&gt;&lt;span class="Apple-style-span" style="color: blue;"&gt;StaticSubMenuIndent="0"&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-tab-span" style="white-space: pre;"&gt;&lt;span class="Apple-style-span" style="color: blue;"&gt;&lt;span class="Apple-style-span" style="color: black; white-space: normal;"&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&lt;/span&gt; &lt;/span&gt;&lt;/span&gt;&lt;span class="Apple-style-span" style="color: blue;"&gt;SkipLinkText=""&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="color: blue;"&gt;&lt;span class="Apple-style-span" style="color: black;"&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&lt;/span&gt;&amp;gt;&lt;/span&gt;&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="font-family: Arial, Helvetica, sans-serif;"&gt;&lt;div&gt;&lt;a name='more'&gt;&lt;/a&gt;&lt;ul&gt;&lt;li&gt;Change&amp;nbsp;&lt;span class="Apple-style-span" style="color: blue;"&gt;&lt;b&gt;StaticDisplayLevels&lt;/b&gt;&lt;/span&gt; to "&lt;b&gt;1&lt;/b&gt;" from "2"&lt;/li&gt;&lt;li&gt;Change&amp;nbsp;&lt;b&gt;&lt;span class="Apple-style-span" style="color: blue;"&gt;MaximumDynamicDisplayLevels&lt;/span&gt;&lt;/b&gt; to "&lt;b&gt;1&lt;/b&gt;" from "0"&lt;/li&gt;&lt;/ul&gt;To use this Master Page serverwide, after checking in and approving, copy to the &lt;b&gt;12 hive\TEMPLATE\FEATURES\PublishingLayouts\MasterPages&lt;/b&gt;&lt;ul&gt;&lt;/ul&gt;&lt;/div&gt;&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/151789648433871658-6373159747374416158?l=chrplunk.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://chrplunk.blogspot.com/feeds/6373159747374416158/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=151789648433871658&amp;postID=6373159747374416158' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/151789648433871658/posts/default/6373159747374416158'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/151789648433871658/posts/default/6373159747374416158'/><link rel='alternate' type='text/html' href='http://chrplunk.blogspot.com/2010/04/enable-cascading-menus-in-sharepoint.html' title='Enable Cascading Menus in SharePoint QuickLaunch'/><author><name>chrplunk</name><uri>http://www.blogger.com/profile/16009472756469833389</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://3.bp.blogspot.com/_8WReXMmzvS0/SrzSTPr0DVI/AAAAAAAAOJc/Ai5Q1IPV978/S220/me.jpg'/></author><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-151789648433871658.post-4274593962030013306</id><published>2009-10-26T12:34:00.003-04:00</published><updated>2009-10-26T12:36:59.704-04:00</updated><title type='text'>Using Scheduled Tasks to run a powershell script with a file parameter</title><content type='html'>&lt;div style="font-family: Verdana,sans-serif;"&gt;While having no problem running my scripts from a cmd line, I had a heck of a time getting my PowerShell script to work from Scheduled Tasks.&amp;nbsp; My script takes a config filename as a parameter.&amp;nbsp; Then, I discovered that if I push the current working path on the stack using &lt;b&gt;pushd&lt;/b&gt; and pipe that to the command it works.&amp;nbsp; Like so:&lt;br /&gt;&lt;/div&gt;&lt;div style="font-family: Verdana,sans-serif;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="font-family: Verdana,sans-serif;"&gt;(&lt;b&gt;Start in&lt;/b&gt;: C:\PowershellScripts)&lt;br /&gt;&lt;/div&gt;&lt;div style="font-family: Verdana,sans-serif;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="font-family: Verdana,sans-serif;"&gt;Then, in the run field in Scheduled Tasks:&lt;br /&gt;&lt;/div&gt;&lt;div style="font-family: Verdana,sans-serif;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="font-family: Verdana,sans-serif;"&gt;&lt;b&gt;PowerShell -command "pushd C:\PowershellScripts | &amp;amp; C:\PowershellScripts\MOSSBackup.ps1 MOSSBackupConfigDEV.xml"&lt;/b&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/151789648433871658-4274593962030013306?l=chrplunk.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://chrplunk.blogspot.com/feeds/4274593962030013306/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=151789648433871658&amp;postID=4274593962030013306' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/151789648433871658/posts/default/4274593962030013306'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/151789648433871658/posts/default/4274593962030013306'/><link rel='alternate' type='text/html' href='http://chrplunk.blogspot.com/2009/10/using-scheduled-tasks-to-run-powershell.html' title='Using Scheduled Tasks to run a powershell script with a file parameter'/><author><name>chrplunk</name><uri>http://www.blogger.com/profile/16009472756469833389</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://3.bp.blogspot.com/_8WReXMmzvS0/SrzSTPr0DVI/AAAAAAAAOJc/Ai5Q1IPV978/S220/me.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-151789648433871658.post-4868475486500709703</id><published>2009-10-02T15:51:00.004-04:00</published><updated>2009-10-02T16:00:30.846-04:00</updated><title type='text'>PowerShell script to fully back up a MOSS Farm (Supported)</title><content type='html'>&lt;div style="font-family: Arial,Helvetica,sans-serif;"&gt;In a &lt;a href="http://chrplunk.blogspot.com/2009/09/disaster-recovery-of-moss-2007-farm.html"&gt;previous post&lt;/a&gt;, I outlined Microsoft's article that &lt;b&gt;restoring a MOSS FARM is not supported&lt;/b&gt; &lt;i&gt;unless &lt;/i&gt;one used either DPM or a manual method.&amp;nbsp; I don't have access to DPM in my current position so I created the following PowerShell 1.0 script which serves to work-around the problem of being able to restore a MOSS Farm from backup - without DPM - stated in &lt;a href="http://technet.microsoft.com/en-us/library/cc262129.aspx%20"&gt;this whitepaper&lt;/a&gt;.&lt;br /&gt;&lt;/div&gt;&lt;div style="font-family: Arial,Helvetica,sans-serif;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="font-family: Arial,Helvetica,sans-serif;"&gt;&lt;b&gt;Overview&lt;/b&gt;:&lt;br /&gt;&lt;/div&gt;&lt;div style="font-family: Arial,Helvetica,sans-serif;"&gt;1.&amp;nbsp; Reads the XML config file to assign variables&lt;br /&gt;&lt;/div&gt;&lt;div style="font-family: Arial,Helvetica,sans-serif;"&gt;2.&amp;nbsp; Calls stsadm to backup top-level items, not including CA items.&lt;br /&gt;&lt;/div&gt;&lt;div style="font-family: Arial,Helvetica,sans-serif;"&gt;3.&amp;nbsp; Stops all MOSS services on all WFEs&lt;br /&gt;&lt;/div&gt;&lt;div style="font-family: Arial,Helvetica,sans-serif;"&gt;4.&amp;nbsp; Calls a SQL script to backup using osql the two CA databases&lt;br /&gt;&lt;/div&gt;&lt;div style="font-family: Arial,Helvetica,sans-serif;"&gt;5.&amp;nbsp; Zips up the 12 hive&lt;br /&gt;&lt;/div&gt;&lt;div style="font-family: Arial,Helvetica,sans-serif;"&gt;6.&amp;nbsp; Starts all MOSS services&lt;br /&gt;&lt;/div&gt;&lt;div style="font-family: Arial,Helvetica,sans-serif;"&gt;7.&amp;nbsp; Backups up all metabases&lt;br /&gt;&lt;/div&gt;&lt;div style="font-family: Arial,Helvetica,sans-serif;"&gt;8.&amp;nbsp; Emails the results&lt;br /&gt;&lt;/div&gt;&lt;div style="font-family: Arial,Helvetica,sans-serif;"&gt;&lt;br /&gt;&lt;span style="font-size: xx-small;"&gt;Please Note: you will need the PowerShell Community Extenstions for "write-zip" cmdlet to work correctly: http://www.codeplex.com/Pscx&lt;/span&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="font-family: Arial,Helvetica,sans-serif;"&gt;&lt;br /&gt;Save this as *.ps1.&amp;nbsp; I've posted the script first and a sample XML doc below the script-&lt;br /&gt;&lt;/div&gt;&lt;div style="font-family: Arial,Helvetica,sans-serif;"&gt;&lt;br /&gt;&lt;b&gt;MOSSBackup.ps1&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="font-family: Arial,Helvetica,sans-serif;"&gt;# ************************************&lt;br /&gt;# Author: Christopher Plunkett&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;br /&gt;&lt;/div&gt;&lt;div style="font-family: Arial,Helvetica,sans-serif;"&gt;# Email = chris.plunkett @ gmail.com&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;br /&gt;&lt;/div&gt;&lt;div style="font-family: Arial,Helvetica,sans-serif;"&gt;# ************************************&lt;br /&gt;&lt;/div&gt;&lt;div style="font-family: Arial,Helvetica,sans-serif;"&gt;&lt;br /&gt;param([string]$configFileName)&lt;br /&gt;&lt;br /&gt;if ( $configFileName.Length -eq 0 )&lt;br /&gt;{&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; $ErrorActionPreference = "Stop"&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; Write-Host "Please supply the XML configuration file name..." &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; Start-Sleep -Seconds 5&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; exit&lt;br /&gt;}&lt;br /&gt;else&lt;br /&gt;{&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; [xml]$cfgFile = Get-Content .\$configFileName&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;#[xml]$cfgFile = Get-Content .\MOSSBackupConfig.xml&lt;br /&gt;&lt;br /&gt;$BackupDestination = $cfgFile.CONFIG.BackupDestination&lt;br /&gt;$CAServer = $cfgFile.CONFIG.CAServer&lt;br /&gt;$DBServer = $cfgFile.CONFIG.DBServer&lt;br /&gt;$MetabasePassword = $cfgFile.CONFIG.MetabasePassword&lt;br /&gt;$smtpServer = $cfgFile.CONFIG.SMTPServer&lt;br /&gt;$EmailFrom = $cfgFile.CONFIG.EMAILFrom&lt;br /&gt;$Remote_OSQL_BackupScriptName = $cfgFile.CONFIG.Remote_OSQL_BackupScriptName&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;# ******************************************************************************&lt;br /&gt;# First, use stsadm.exe to backup the items in the farm MINUS the CA databases.&amp;nbsp; &lt;br /&gt;# I manually created this list of items using "stsadm -o backup -showtree" and &lt;br /&gt;# entered into the XML doc.&amp;nbsp; The name of the items are obviously going to be &lt;br /&gt;# different in your environment.&lt;br /&gt;# ******************************************************************************&lt;br /&gt;&lt;br /&gt;" ::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::" &amp;gt;&amp;gt; "$BackupDestination\backuplog.txt" &lt;br /&gt;&lt;br /&gt;foreach ( $i in $cfgFile.CONFIG.items.item )&lt;br /&gt;{&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; $stsbackupcmd = "stsadm.exe -o backup -directory " + ([char]34) + "$BackupDestination" + ([char]34) +&amp;nbsp; " -backupmethod Full -item " + ([char]34) +&amp;nbsp; $i + ([char]34) &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; psexec \\$CAServer cmd /c $stsbackupcmd &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; if ( $LASTEXITCODE -eq 0 )&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; [DateTime]::Now.ToString() +&amp;nbsp; ": Backup completed of -item $i. Backupmethod was 'Full'" &amp;gt;&amp;gt; "$BackupDestination\backuplog.txt" &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; else&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; [DateTime]::Now.ToString() +&amp;nbsp; ": ERROR! Backup NOT completed of -item $i!" &amp;gt;&amp;gt; "$BackupDestination\backuplog.txt" &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;# **********************************************************************************&lt;br /&gt;# Stop all MOSS Services locally and remotely.&amp;nbsp; This is REQUIRED as a pre-req to&lt;br /&gt;# backing up your CA databases.&amp;nbsp; Grabs all your farm's servers from the config xml.&lt;br /&gt;# **********************************************************************************&lt;br /&gt;&lt;br /&gt;foreach ( $s in $cfgFile.CONFIG.Servers.Server )&lt;br /&gt;{&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; foreach ( $ServiceName in $cfgFile.CONFIG.Services.Service )&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; $expression = "Stop-Service $ServiceName -Force"&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; $commandBytes = [System.Text.Encoding]::Unicode.GetBytes( $expression )&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; $encodedCommand = [Convert]::ToBase64String( $commandBytes )&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; psexec \\$s cmd /c "echo . | powershell -EncodedCommand $encodedCommand"&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; if ( $LASTEXITCODE -eq 0 )&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; [DateTime]::Now.ToString() +&amp;nbsp; ": Services were stopped successfully on $s" &amp;gt;&amp;gt; "$BackupDestination\backuplog.txt" &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; else&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; [DateTime]::Now.ToString() +&amp;nbsp; " &amp;gt;&amp;gt;&amp;gt;&amp;gt;ERROR!&amp;nbsp; There was a problem stopping services on $s" &amp;gt;&amp;gt; "$BackupDestination\backuplog.txt" &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;Start-Sleep -Seconds 15&lt;br /&gt;&lt;br /&gt;# ***********************************************************************************************************************************************&lt;br /&gt;# Next, call the wmi class Win32_Process on the SQL Server, invoking the Create method to&amp;nbsp; &lt;br /&gt;# spin up a remote shell, then pass it instructions for running the .sql backup script locally:&lt;br /&gt;# ***********************************************************************************************************************************************&lt;br /&gt;#( [WMIClass]"\\$DBServer\ROOT\CIMV2:Win32_Process" ).create( "cmd.exe /c " + "osql -S localhost -E -i $Remote_OSQL_BackupScriptName") | Out-Null&lt;br /&gt;&lt;br /&gt;# ***********************************************************************************************************************************************&lt;br /&gt;# Scratch that... it worked but I could not figure out how to make it wait for the&lt;br /&gt;# command to finish before the script moved on, so I ended up using psexec.&lt;br /&gt;# You need to have a sql script written on the remote SQL Server for this to work.&lt;br /&gt;# ***********************************************************************************************************************************************&lt;br /&gt;&lt;br /&gt;$osqlstatement = "osql -S localhost -E -i $Remote_OSQL_BackupScriptName"&lt;br /&gt;psexec -i \\$DBServer cmd /c "echo . | $osqlstatement"&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; if ( $LASTEXITCODE -eq 0 )&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; [DateTime]::Now.ToString() +&amp;nbsp; ": Backup completed for CA Databases!" &amp;gt;&amp;gt; "$BackupDestination\backuplog.txt"&amp;nbsp; &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; else&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; [DateTime]::Now.ToString() +&amp;nbsp; " &amp;gt;&amp;gt;&amp;gt;&amp;gt;ERROR!&amp;nbsp; There was a problem backing up the CA Databases on $DBServer" &amp;gt;&amp;gt; "$BackupDestination\backuplog.txt" &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;br /&gt;&lt;br /&gt;Start-Sleep -Seconds 10&lt;br /&gt;&lt;br /&gt;# ***************************************************************************&lt;br /&gt;# Backup the 12 hive on all servers.&amp;nbsp; Again, you'll need the&amp;nbsp; &lt;br /&gt;# PowerShell Community Extenstions for "write-zip" cmdlet to work correctly:&lt;br /&gt;# http://www.codeplex.com/Pscx &lt;br /&gt;# ***************************************************************************&lt;br /&gt;&lt;br /&gt;$12HivesExistence = Test-Path $BackupDestination\12Hives&lt;br /&gt;if ( $12HivesExistence -match "False" )&lt;br /&gt;{&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; mkdir "$BackupDestination\12Hives"&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;foreach ( $s in $cfgFile.CONFIG.Servers.Server )&lt;br /&gt;{&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; $12Hive = Get-ChildItem "\\$s\c$\Program Files\Common Files\Microsoft Shared\web server extensions\12" -Exclude "LOGS" &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; write-zip -level 9 -IncludeEmptyDirectories $12Hive "$BackupDestination\12Hives\$s.zip"&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; if ( $? -match "True" )&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; [DateTime]::Now.ToString() +&amp;nbsp; ": 12 Hive backed up successfully on $s" &amp;gt;&amp;gt; "$BackupDestination\backuplog.txt" &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; else&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; [DateTime]::Now.ToString() +&amp;nbsp; " &amp;gt;&amp;gt;&amp;gt;&amp;gt;ERROR!! There was a problem backing up the 12 Hive on $s" &amp;gt;&amp;gt; "$BackupDestination\backuplog.txt" &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;# ****************************************************&lt;br /&gt;# Now, start all services on all farm machines.&amp;nbsp; &lt;br /&gt;# ****************************************************&lt;br /&gt;&lt;br /&gt;foreach ($s in $cfgFile.CONFIG.Servers.Server)&lt;br /&gt;{&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; foreach ( $ServiceName in $cfgFile.CONFIG.Services.Service )&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; $expression2 = "Start-Service $ServiceName"&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; $commandBytes2 = [System.Text.Encoding]::Unicode.GetBytes($expression2)&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; $encodedCommand2 = [Convert]::ToBase64String($commandBytes2)&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; psexec \\$s cmd /c "echo . | powershell -EncodedCommand $encodedCommand2"&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; if ( $LASTEXITCODE -eq 0 )&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; [DateTime]::Now.ToString() +&amp;nbsp; ": Services successfully started on $s" &amp;gt;&amp;gt; "$BackupDestination\backuplog.txt" &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; else&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; [DateTime]::Now.ToString() +&amp;nbsp; " &amp;gt;&amp;gt;&amp;gt;&amp;gt;ERROR!&amp;nbsp; There was a problem starting services on $s" &amp;gt;&amp;gt; "$BackupDestination\backuplog.txt" &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;Start-Sleep -Seconds 15&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;# *****************************************************&lt;br /&gt;# Backup the metabases locally and remotely&lt;br /&gt;# and save them to the Backup Destination&lt;br /&gt;# *****************************************************&lt;br /&gt;&lt;br /&gt;$MetabaseBackupsExistence = Test-Path "$BackupDestination\MetabaseBackups"&lt;br /&gt;if ( $MetabaseBackupsExistence -match "False" )&lt;br /&gt;{&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; mkdir $BackupDestination\MetabaseBackups&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;foreach ($s in $cfgFile.CONFIG.Servers.Server)&lt;br /&gt;{&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; $expression = "cscript.exe C:\WINDOWS\system32\iisback.vbs /backup /e " + ([char]34) + $MetabasePassword + ([char]34) +&amp;nbsp; " /b " + ([char]34) + $s + ([char]34) + " /overwrite"&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; psexec \\$s cmd /c $expression&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; Copy-Item "\\$s\C$\WINDOWS\system32\inetsrv\MetaBack\*.*" -Destination "$BackupDestination\MetabaseBackups\" -Recurse -Force&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; if ( $LASTEXITCODE -eq 0 )&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; [DateTime]::Now.ToString() +&amp;nbsp; ": Metabase successfully backed up on $s" &amp;gt;&amp;gt; "$BackupDestination\backuplog.txt"&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; else&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; [DateTime]::Now.ToString() +&amp;nbsp; " &amp;gt;&amp;gt;&amp;gt;&amp;gt;ERROR!&amp;nbsp; There was a problem backing up the metabase on $s" &amp;gt;&amp;gt; "$BackupDestination\backuplog.txt" &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;# Kill metabase backup files older than five days:&lt;br /&gt;Get-Childitem $BackupDestination\MetabaseBackups -recurse | ?{!$_.PSIsContainer -and ($_.LastWriteTime -lt (get-Date).adddays(-5))} | remove-item -force&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;# *************************************************************************&lt;br /&gt;# Now email the log file!&lt;br /&gt;# *************************************************************************&lt;br /&gt;&lt;br /&gt;foreach ( $recipient in $cfgFile.CONFIG.EMAILTo.recipient ) &lt;br /&gt;{&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; $backuplogfilename = “$BackupDestination\backuplog.txt”&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; $msg = new-object Net.Mail.MailMessage&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; $att = new-object Net.Mail.Attachment( $backuplogfilename )&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; $smtp = new-object Net.Mail.SmtpClient( $smtpServer )&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; $msg.From = $EmailFrom&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; $msg.To.Add( $recipient )&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; $msg.Subject = “Nightly MOSS Backsup Log File - $BackupDestination”&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; $msg.Body = “The nightly MOSS Backup log file is attached from $BackupDestination”&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; $msg.Attachments.Add( $att )&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; $smtp.Send( $msg )&lt;br /&gt;}&lt;br /&gt;&lt;/div&gt;&lt;div style="font-family: Arial,Helvetica,sans-serif;"&gt;&lt;br /&gt;&lt;br /&gt;And here is a sample XML config file, which you will pass to the PS1 script above as a parameter.&lt;br /&gt;&lt;b&gt;MOSSBackupConfigDEV.xml&lt;/b&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="font-family: Arial,Helvetica,sans-serif;"&gt;OK the formatting on this post doesn't want to take XML.&amp;nbsp; Email me if you want it.&lt;br /&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/151789648433871658-4868475486500709703?l=chrplunk.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://chrplunk.blogspot.com/feeds/4868475486500709703/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=151789648433871658&amp;postID=4868475486500709703' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/151789648433871658/posts/default/4868475486500709703'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/151789648433871658/posts/default/4868475486500709703'/><link rel='alternate' type='text/html' href='http://chrplunk.blogspot.com/2009/10/powershell-script-to-fully-back-up-moss.html' title='PowerShell script to fully back up a MOSS Farm (Supported)'/><author><name>chrplunk</name><uri>http://www.blogger.com/profile/16009472756469833389</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://3.bp.blogspot.com/_8WReXMmzvS0/SrzSTPr0DVI/AAAAAAAAOJc/Ai5Q1IPV978/S220/me.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-151789648433871658.post-999557463944161070</id><published>2009-09-29T23:29:00.003-04:00</published><updated>2009-09-29T23:43:01.488-04:00</updated><title type='text'>Perfmon Counters Can Not Be Trusted On A Guest VM</title><content type='html'>&lt;div style="font-family: Arial,Helvetica,sans-serif;"&gt;&lt;a href="http://blog.dynatrace.com/2009/09/23/the-problem-with-sla-monitoring-in-virtualized-environments/"&gt;This&lt;/a&gt; is a well written article on why perf counters can't be trusted in VMware virtual environments, and here is the same problem &lt;a href="http://blogs.msdn.com/tvoellm/archive/2008/03/20/hyper-v-clocks-lie.aspx"&gt;explained&lt;/a&gt; in Hyper-V.&lt;br /&gt;&lt;a href="http://blog.dynatrace.com/2009/09/23/the-problem-with-sla-monitoring-in-virtualized-environments/" moz-do-not-send="true" target="_blank"&gt;&lt;br /&gt;&lt;/a&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="font-family: Arial,Helvetica,sans-serif;"&gt;VMware, being aware of this problem, has added &lt;a href="http://www.boche.net/blog/?p=1519"&gt;additional perfmon counters&lt;/a&gt; for single vCPU (only) Windows guests (no Linux) in an ESX 4 environment.&amp;nbsp; It's a step forward.&lt;br /&gt;&lt;/div&gt;&lt;div style="font-family: Arial,Helvetica,sans-serif;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="font-family: Arial,Helvetica,sans-serif;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/151789648433871658-999557463944161070?l=chrplunk.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://chrplunk.blogspot.com/feeds/999557463944161070/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=151789648433871658&amp;postID=999557463944161070' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/151789648433871658/posts/default/999557463944161070'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/151789648433871658/posts/default/999557463944161070'/><link rel='alternate' type='text/html' href='http://chrplunk.blogspot.com/2009/09/perfmon-counters-can-not-be-trusted-on.html' title='Perfmon Counters Can Not Be Trusted On A Guest VM'/><author><name>chrplunk</name><uri>http://www.blogger.com/profile/16009472756469833389</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://3.bp.blogspot.com/_8WReXMmzvS0/SrzSTPr0DVI/AAAAAAAAOJc/Ai5Q1IPV978/S220/me.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-151789648433871658.post-1986168200413462898</id><published>2009-09-09T13:38:00.007-04:00</published><updated>2009-10-06T10:29:57.166-04:00</updated><title type='text'>Disaster Recovery of a MOSS 2007 Farm</title><content type='html'>&lt;div class="ms-wikicontent" style="font-family: verdana;"&gt;&lt;div class="ExternalClassCB19C2C82FF040699D81EF592EDB82FC"&gt;&lt;span style="color: blue; font-size: 85%;"&gt;&lt;b&gt;Backup, Recovery, and Disaster Recovery of a MOSS 2007  Farm&lt;/b&gt;&lt;/span&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="ExternalClassCB19C2C82FF040699D81EF592EDB82FC"&gt;&lt;/div&gt;&lt;div class="ExternalClassCB19C2C82FF040699D81EF592EDB82FC"&gt;&lt;span style="font-size: 85%;"&gt;Let's start out with an  alarming and important notice from Microsoft:&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="font-size: 85%;"&gt;"Important: Although the configuration database and Central Administration content database can be backed up, &lt;span style="font-style: italic;"&gt;restoring backups of the configuration database and Central Administration content database taken from a running farm by using the tools built in to SharePoint Products and Technologies or SQL Server &lt;span style="font-weight: bold;"&gt;is not supported&lt;/span&gt;."&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="ExternalClassCB19C2C82FF040699D81EF592EDB82FC"&gt;&lt;/div&gt;&lt;div class="ExternalClassCB19C2C82FF040699D81EF592EDB82FC"&gt;&lt;/div&gt;&lt;div class="ExternalClassCB19C2C82FF040699D81EF592EDB82FC"&gt;&lt;span style="font-size: 85%;"&gt;You can recover a farm,  including the configuration database and Central Administration content  database, in the following two ways:&lt;br /&gt;&lt;br /&gt;1.  You can use farm-level backups of a  running farm taken with &lt;b&gt;System Center Data Protection Manager  &lt;/b&gt;to recover an entire farm, including the configuration database and  Central Administration content database. For more information, see How to  Recover a Windows SharePoint Services Farm (&lt;a href="http://go.microsoft.com/fwlink/?LinkId=102831"&gt;http://go.microsoft.com/fwlink/?LinkId=102831&lt;/a&gt;). &lt;i&gt;This is not currently an option for me&lt;/i&gt;.&lt;br /&gt;&lt;br /&gt;2.  You can restore a  backup of the configuration database and Central Administration content database  taken from a fully stopped farm. For more information, see Move all databases to  a new server (&lt;a href="http://go.microsoft.com/fwlink/?LinkId=118325"&gt;http://go.microsoft.com/fwlink/?LinkId=118325&lt;/a&gt;).&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="ExternalClassCB19C2C82FF040699D81EF592EDB82FC"&gt;&lt;/div&gt;&lt;div class="ExternalClassCB19C2C82FF040699D81EF592EDB82FC"&gt;&lt;span style="font-size: 85%;"&gt;&lt;u&gt;This Wiki serves to  outline my experiences with number 2 above.&lt;/u&gt;&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="ExternalClassCB19C2C82FF040699D81EF592EDB82FC"&gt;&lt;/div&gt;&lt;div class="ExternalClassCB19C2C82FF040699D81EF592EDB82FC"&gt;&lt;span style="font-size: 85%;"&gt;&lt;b&gt;&lt;span style="color: #3366ff;"&gt;&lt;br /&gt;&lt;br /&gt;Backing up the Farm&lt;/span&gt;&lt;/b&gt;&lt;/span&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="ExternalClassCB19C2C82FF040699D81EF592EDB82FC"&gt;&lt;ul&gt;&lt;li&gt;&lt;span style="font-size: 85%;"&gt;Clone all virtual machines in the farm (minus the databse) if virtual, P2V  if physical.  &lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span style="font-size: 85%;"&gt;Make sure you have the following minimum rights:  &lt;/span&gt;&lt;br /&gt;&lt;ul&gt;&lt;li&gt;&lt;span style="font-size: 85%;"&gt;You must be a member of the Farm Administrators SharePoint group  &lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span style="font-size: 85%;"&gt;On the computer that is running the SharePoint Central Administration Web  site, you must be a member of the Administrators group  &lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span style="font-size: 85%;"&gt;On the database server  &lt;/span&gt;&lt;br /&gt;&lt;ul&gt;&lt;li&gt;&lt;span style="font-size: 85%;"&gt;Member of Adminstrators Group  &lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span style="font-size: 85%;"&gt;Member of the db_backupoperator fixed database  role&lt;/span&gt;&lt;/li&gt;&lt;/ul&gt;&lt;br /&gt;&lt;/li&gt;&lt;/ul&gt;&lt;br /&gt;&lt;/li&gt;&lt;/ul&gt;&lt;/div&gt;&lt;ul&gt;&lt;li&gt;&lt;span style="font-size: 85%;"&gt;First you must use the built-in tools to backup the SSP and it's associated  databases.  Using SQL Backups are not supported in the SSP because of sync  issues.  &lt;/span&gt;&lt;br /&gt;&lt;ul&gt;&lt;li&gt;&lt;span style="font-size: 85%;"&gt;&lt;b&gt;stsadm.exe -o backup -showtree&lt;/b&gt;&lt;/span&gt;  &lt;br /&gt;&lt;ul&gt;&lt;li&gt;&lt;span style="font-size: 85%;"&gt;This will show you what SSP's can be backed up.&lt;/span&gt;&lt;/li&gt;&lt;/ul&gt;&lt;br /&gt;&lt;/li&gt;&lt;li&gt;&lt;span style="font-size: 85%;"&gt;CA / Application Mgmt / Office SharePoint Server Shared Services / Create or  configure this farm's shared services: Take note of SSP's and associated Web  Applications  &lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span style="font-size: 85%;"&gt;&lt;b&gt;stsadm.exe -o backup -directory &lt;/b&gt;&lt;a href="file:///MOSSBackup"&gt;&lt;b&gt;\\&lt;servername&gt;\MOSSBackup&lt;/servername&gt;&lt;/b&gt;&lt;/a&gt;&lt;b&gt;  -backupmethod Full -item portaltestssp&lt;/b&gt;&lt;/span&gt;  &lt;/li&gt;&lt;li&gt;&lt;span style="font-size: 85%;"&gt;Stop the following services:  &lt;/span&gt;&lt;br /&gt;&lt;ul&gt;&lt;li&gt;&lt;span style="font-size: 85%;"&gt;Microsoft Single Sign-On service&lt;br /&gt;Office Document Conversions Launcher  service&lt;br /&gt;Office Document Conversions Load Balancer service&lt;br /&gt;Office  SharePoint Server Search service&lt;br /&gt;Windows SharePoint Services Administration  service&lt;br /&gt;Windows SharePoint Services Search service&lt;br /&gt;Windows SharePoint  Services Timer service&lt;br /&gt;Windows SharePoint Services Tracing service&lt;br /&gt;Windows  SharePoint Services VSS Writer service&lt;/span&gt;&lt;/li&gt;&lt;/ul&gt;&lt;br /&gt;&lt;/li&gt;&lt;li&gt;&lt;span style="font-size: 85%;"&gt;&lt;b&gt;iisreset /STOP&lt;/b&gt;&lt;/span&gt;  &lt;/li&gt;&lt;li&gt;&lt;span style="font-size: 85%;"&gt;Use SQL Mgmt Studio to then backup all the remaining databases by  hand&lt;/span&gt;&lt;/li&gt;&lt;/ul&gt;&lt;br /&gt;&lt;/li&gt;&lt;li&gt;&lt;span style="font-size: 85%;"&gt;Once databases are backed up, do the following:  &lt;/span&gt;&lt;br /&gt;&lt;ul&gt;&lt;li&gt;&lt;span style="font-size: 85%;"&gt;&lt;b&gt;iisreset /START&lt;/b&gt;&lt;/span&gt;  &lt;/li&gt;&lt;li&gt;&lt;span style="font-size: 85%;"&gt;restart the services you previously stopped  &lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span style="font-size: 85%;"&gt;un-quiesce farm&lt;/span&gt;&lt;/li&gt;&lt;/ul&gt;&lt;br /&gt;&lt;/li&gt;&lt;/ul&gt;&lt;span style="font-size: 85%;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/151789648433871658-1986168200413462898?l=chrplunk.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://chrplunk.blogspot.com/feeds/1986168200413462898/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=151789648433871658&amp;postID=1986168200413462898' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/151789648433871658/posts/default/1986168200413462898'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/151789648433871658/posts/default/1986168200413462898'/><link rel='alternate' type='text/html' href='http://chrplunk.blogspot.com/2009/09/disaster-recovery-of-moss-2007-farm.html' title='Disaster Recovery of a MOSS 2007 Farm'/><author><name>chrplunk</name><uri>http://www.blogger.com/profile/16009472756469833389</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://3.bp.blogspot.com/_8WReXMmzvS0/SrzSTPr0DVI/AAAAAAAAOJc/Ai5Q1IPV978/S220/me.jpg'/></author><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-151789648433871658.post-7339293007316208212</id><published>2009-09-03T09:50:00.002-04:00</published><updated>2009-09-03T09:56:45.641-04:00</updated><title type='text'>Browsing local website in IIS causes a 401.1 Acces Denied error</title><content type='html'>&lt;span style="font-family: verdana;"&gt;&lt;br /&gt;This issue occurs when the Web site uses Integrated Authentication and has a name that is mapped to the local loopback address.&lt;br /&gt;&lt;br /&gt;You must either disable the loopback check or add the host names that are mapped to the loopback address; the latter is the preferred method.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold; color: rgb(51, 102, 255);"&gt;Method 1: Specify host names&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;Note Microsoft recommends that you use this method.&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;To specify the host names that are mapped to the loopback address and can connect to Web sites on your computer, follow these steps:&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;&lt;ul&gt;&lt;li&gt;&lt;span style="font-family: verdana;"&gt;   HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Lsa\MSV1_0&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span style="font-family: verdana;"&gt;   Right-click MSV1_0, point to New, and then click Multi-String Value.&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span style="font-family: verdana;"&gt;   Type BackConnectionHostNames, and then press ENTER.&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span style="font-family: verdana;"&gt;   Right-click BackConnectionHostNames, and then click Modify.&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span style="font-family: verdana;"&gt;   In the Value data box, type the host name or the host names for the sites that are on the local computer, and then click OK.&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span style="font-family: verdana;"&gt;   Quit Regedit and restart the IISAdmin service.&lt;/span&gt;&lt;/li&gt;&lt;/ul&gt;&lt;span style="font-family: verdana;"&gt;&lt;br /&gt;&lt;span style="font-weight: bold; color: rgb(51, 102, 255);"&gt;Method 2: Disable the loopback check&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;ul&gt;&lt;li&gt;&lt;span style="font-family: verdana;"&gt;   HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Lsa&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span style="font-family: verdana;"&gt;   Right-click Lsa, point to New, and then click DWORD Value.&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span style="font-family: verdana;"&gt;   Type DisableLoopbackCheck, and then press ENTER.&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span style="font-family: verdana;"&gt;   Right-click DisableLoopbackCheck, and then click Modify.&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span style="font-family: verdana;"&gt;   In the Value data box, type 1, and then click OK.&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span style="font-family: verdana;"&gt;   Quit Regedit and then restart your computer.&lt;/span&gt;&lt;/li&gt;&lt;/ul&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/151789648433871658-7339293007316208212?l=chrplunk.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://chrplunk.blogspot.com/feeds/7339293007316208212/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=151789648433871658&amp;postID=7339293007316208212' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/151789648433871658/posts/default/7339293007316208212'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/151789648433871658/posts/default/7339293007316208212'/><link rel='alternate' type='text/html' href='http://chrplunk.blogspot.com/2009/09/browsing-local-website-in-iis-causes.html' title='Browsing local website in IIS causes a 401.1 Acces Denied error'/><author><name>chrplunk</name><uri>http://www.blogger.com/profile/16009472756469833389</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://3.bp.blogspot.com/_8WReXMmzvS0/SrzSTPr0DVI/AAAAAAAAOJc/Ai5Q1IPV978/S220/me.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-151789648433871658.post-7681441990055096671</id><published>2009-08-28T10:44:00.005-04:00</published><updated>2009-09-28T10:47:45.401-04:00</updated><title type='text'>MOSS 2007 - One content database per site collection HOW TO</title><content type='html'>&lt;span style="font-family: verdana;"&gt;Did you know that you can create a site collection with one content database per site collection?&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family: verdana;"&gt;In MOSS 2007, it all starts with a web application. The web app is truly an IIS web app and provides the namespace "service" among many other things that aren't important to this discussion. It has an associated &lt;span style="font-weight: bold;"&gt;WSS_Content&lt;/span&gt; database but it's useless without at least one site collection.&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family: verdana;"&gt;So, we create  a site collections because by default, no new site collections are created at the time of the the Web application creation.&lt;br /&gt;&lt;br /&gt;This first site collection essentially takes the root ( &lt;span style="font-weight: bold;"&gt;/&lt;/span&gt; ) application space and becomes a new empty top-level site collection. The database for this site collection is still the &lt;span style="font-weight: bold;"&gt;*WSS_Content&lt;/span&gt; db we created a moment ago.&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family: verdana;"&gt;Now, in this single default site collection ( defined at either the path: &lt;span style="font-weight: bold;"&gt;/&lt;/span&gt; or &lt;b&gt;/sites&lt;/b&gt; if you have not set up managed paths), we can  have many subwebs. But if you run the command &lt;span style="font-weight: bold;"&gt;stsadm.exe -o enumsites -url&lt;/span&gt; you'll see &lt;span style="font-style: italic;"&gt;Site Count="1"&lt;/span&gt; bc Microsoft calls Sites and site collections the same thing (in this case) and should not be confused with sub-sites or subwebs. (It's confusing I know)&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family: verdana;"&gt;For each new site collection (and of course subweb) we create, &lt;span style="font-style: italic; font-weight: bold;"&gt;they all are associated with this single first site collection database&lt;/span&gt;.&amp;nbsp; &lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family: verdana;"&gt;So, instead of having up to 15,000 top-level sites/site collections per web application &lt;span style="font-weight: bold;"&gt;and its single associated content db&lt;/span&gt;, you can split them up &lt;span style="font-weight: bold;"&gt;per site collection&lt;/span&gt;.&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family: verdana;"&gt;This should ease restores and sort of organize more intuitively but also places administrative burden on the DBA group and the Admin group, not to mention top link navigation will have to be customized.&amp;nbsp; Never-the-less, you can do it and here's how:&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: #3366ff; font-family: verdana; font-size: 100%; font-weight: bold;"&gt;Using stsadm cmd line tool to create site collections&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family: verdana;"&gt;In this scenario, I'm creating site collections but creating new databases per collection rather than using the default that comes with the first web app.&amp;nbsp; They are site collections instead and therefore can have their own database (sites/subwebs can't have their own databases while site collections can IF you do this; they normally do not)&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family: verdana; font-size: 85%; font-weight: bold;"&gt;stsadm -o createsiteinnewdb -url http://myinfodev -owneremail EMAIL -ownerlogin DOMAIN\cplunkett -ownername CPlunkett -sitetemplate sts#0 -ds DATABASESERVER -dn MOSS_MYINFODEV_ROOT_WSS_CONTENT&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family: verdana;"&gt;Before continuing you must define a managed path. In this example, /departments:&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: verdana;"&gt;&lt;span style="font-size: 85%; font-weight: bold;"&gt;stsadm -o addpath -utl http://myinfodev/departments -type Wildcardinclusion&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family: verdana;"&gt;Now go ahead and create these new site collections under the myinfodev/departments namespace and enjoy as you have now one database per site collection!&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family: verdana; font-size: 85%; font-weight: bold;"&gt;stsadm -o createsiteinnewdb -url http://myinfodev/departments/EnterpriseApplications -owneremail -ownerlogin \cplunkett -ownername EMAIL DOMAIN\CPlunkett -ds &lt;/span&gt;&lt;span style="font-family: verdana; font-size: 85%; font-weight: bold;"&gt;DATABASESERVER&lt;/span&gt;&lt;span style="font-family: verdana; font-size: 85%; font-weight: bold;"&gt; -dn MOSS_MYINFODEV_slash_departments_slash_EntApp_WSS_CONTENT&lt;/span&gt;&lt;span style="font-size: 85%; font-weight: bold;"&gt;&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="font-family: verdana; font-size: 85%; font-weight: bold;"&gt;stsadm -o createsiteinnewdb -url http://myinfodev/departments/EnterpriseArchitecture -owneremail -ownerlogin \cplunkett -ownername EMAIL DOMAIN\CPlunkett -ds &lt;/span&gt;&lt;span style="font-family: verdana; font-size: 85%; font-weight: bold;"&gt;DATABASESERVER&lt;/span&gt;&lt;span style="font-family: verdana; font-size: 85%; font-weight: bold;"&gt; -dn MOSS_MYINFODEV_slash_departments_slash_EntArch_WSS_CONTENT&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family: verdana;"&gt;- Then you should limit in CA each new db you just created for the site collection to one site (set "Maximum number of sites that can be created in this database" to 1)&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/151789648433871658-7681441990055096671?l=chrplunk.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://chrplunk.blogspot.com/feeds/7681441990055096671/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=151789648433871658&amp;postID=7681441990055096671' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/151789648433871658/posts/default/7681441990055096671'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/151789648433871658/posts/default/7681441990055096671'/><link rel='alternate' type='text/html' href='http://chrplunk.blogspot.com/2009/08/moss-2007-one-content-database-per-site.html' title='MOSS 2007 - One content database per site collection HOW TO'/><author><name>chrplunk</name><uri>http://www.blogger.com/profile/16009472756469833389</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://3.bp.blogspot.com/_8WReXMmzvS0/SrzSTPr0DVI/AAAAAAAAOJc/Ai5Q1IPV978/S220/me.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-151789648433871658.post-4090333545552088544</id><published>2009-08-13T10:02:00.000-04:00</published><updated>2009-08-13T10:04:08.580-04:00</updated><title type='text'>How to ReSID the IIS 6.0 Metabase</title><content type='html'>&lt;span style="font-weight: bold; font-family: arial;"&gt;How to ReSID the IIS 6.0 Metabase&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family: arial;font-size:85%;" &gt;(Note: This process is not required for an IIS 7.0 server)&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family: arial;"&gt;When a server is created via Ghost image or Virtual clone, the server must go through a reSID process by running NewSID  or sysprep run on the server. If this is an IIS 6.0 server, in order for IIS to function properly, the IIS metabase must also be updated to reflect the new machine SID.  This is done by either uninstalling and reinstalling IIS or running a utility called MetabaseACL on the server. &lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family: arial;"&gt;MetabaseACL can be used to identify the orphaned SID in the IIS metabase for the local IIS_WPG group. Then when the new SID for the local IIS_WPG group is retrieved, it can then be used by the MetabaseACL utility to ReSID the metabase.&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family: arial;"&gt;Below is the process to ReSID the IIS 6.0 metabase.&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family: arial;"&gt;1.  Download MetabaseACL from http://www.bluewire-technologies.com/downloads/blog/MetabaseACL.zip then unzip the files to a local drive.&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: arial;"&gt;2.  Download PsGetSID from http://download.sysinternals.com/Files/PsTools.zip then unzip the tool to a local drive.&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: arial;"&gt;3.  Retrieve orphaned SID for local IIS_WPG group from IIS 6.0 metabase.&lt;/span&gt;&lt;span style="font-family: arial;"&gt;&lt;br /&gt;     a.  Open a command prompt and run the command metabaseacl “IIS://servername” &lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: arial;"&gt;     b.  Look for the orphaned SID for the IIS_WPG group. This will be on the next line below where IIS_WPG appears in the output of the command. This orphaned SID will be referred to as “Old SID.”&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: arial;"&gt;4.    Retrieve new SID for local IIS_WPG group from the server.&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: arial;"&gt;     a.  Open a command prompt and run the command PsGetSID \\servername IIS_WPG&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: arial;"&gt;     b.  This will show the SID for the local IIS_WPG group from the server. This new SID will be referred to as “New SID.”&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: arial;"&gt;5. Set New SID in the IIS 6.0 metabase.&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: arial;"&gt;     a.  Open a command prompt and run the following command metabaseacl IIS://servername fixup &lt;old&gt; &lt;new&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: arial;"&gt;     b.  Run the following command to verify that the process worked properly metabaseacl IIS://servername&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: arial;"&gt;    c.  In the output, verify that there are no orphaned SID’s.&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/151789648433871658-4090333545552088544?l=chrplunk.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://chrplunk.blogspot.com/feeds/4090333545552088544/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=151789648433871658&amp;postID=4090333545552088544' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/151789648433871658/posts/default/4090333545552088544'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/151789648433871658/posts/default/4090333545552088544'/><link rel='alternate' type='text/html' href='http://chrplunk.blogspot.com/2009/08/how-to-resid-iis-60-metabase.html' title='How to ReSID the IIS 6.0 Metabase'/><author><name>chrplunk</name><uri>http://www.blogger.com/profile/16009472756469833389</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://3.bp.blogspot.com/_8WReXMmzvS0/SrzSTPr0DVI/AAAAAAAAOJc/Ai5Q1IPV978/S220/me.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-151789648433871658.post-34272813817643432</id><published>2009-08-05T10:03:00.002-04:00</published><updated>2009-08-05T10:15:11.212-04:00</updated><title type='text'>Setting up a multicast NLB Cluster in a Virtual Environment</title><content type='html'>&lt;p&gt;&lt;br /&gt;&lt;span style="font-family:verdana;"&gt;&lt;strong&gt;&lt;span style="font-size:130%;"&gt;Setting up a multicast NLB Cluster in a Virtual Environment&lt;/span&gt;&lt;/strong&gt;  &lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;span style="font-family:verdana;"&gt;&lt;span style="font-size:78%;"&gt;It should be noted here that this is only done once per cluster creation, not every time a host is added to the cluster.&lt;/span&gt;  &lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;span style="font-family:verdana;"&gt;The first step is to shut down the new vm, either before or after the IIS install, and add a second virtual nic card.    &lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="font-family:verdana;"&gt;Create a new cluster by adding a new IP address and cluster name.  Once this is done, go to the properties of the NLB Cluster and note the mac address.  For example, the mac address might be 03-bf-ac-11-09-66  &lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="font-family:verdana;"&gt;Next we need to log into the datacenter Cisco router to add a static arp entry to the IOS.  This is required because multicasting is disabled by default for security.  This is how to do it:&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="font-family:verdana;"&gt;1.  PuTTY to the router (example 172.17.1.1 is the Peak10 router)&lt;br /&gt;2.  login&lt;br /&gt;          user: admin&lt;br /&gt;          password in KeePass&lt;br /&gt;3.  type &lt;strong&gt;en&lt;/strong&gt;&lt;br /&gt;4.  enter the enable password (find in KeePass by searching for 'Cisco')&lt;br /&gt;5.  type &lt;strong&gt;show run&lt;/strong&gt; and page down to see the static arp entries.  You should see the following:&lt;br /&gt;          arp ipaddress macaddress (must be in 48 bit octet format as shown below) ARPA&lt;br /&gt;          example: arp 172.17.9.x 03bf.ac11.0943 ARPA&lt;br /&gt;6.  type &lt;strong&gt;config t&lt;br /&gt;&lt;/strong&gt;7.  add the IP of the new cluster with the new mac address exactly as shown:&lt;br /&gt;          &lt;strong&gt;arp 172.17.9.102 03bf.ac11.0966 ARPA&lt;/strong&gt;&lt;br /&gt;          the last ARPA must be capitalized&lt;br /&gt;8.  now you can test your new cluster&lt;br /&gt;9.  if it works, type &lt;strong&gt;exit&lt;/strong&gt; to get out of config mode&lt;br /&gt;10. the last step is to save the current config from DRAM to NVRAM:&lt;br /&gt;11. &lt;strong&gt;copy running-config startup-config&lt;br /&gt;&lt;/strong&gt;12. chose the default location&lt;/span&gt;&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/151789648433871658-34272813817643432?l=chrplunk.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://chrplunk.blogspot.com/feeds/34272813817643432/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=151789648433871658&amp;postID=34272813817643432' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/151789648433871658/posts/default/34272813817643432'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/151789648433871658/posts/default/34272813817643432'/><link rel='alternate' type='text/html' href='http://chrplunk.blogspot.com/2009/08/setting-up-multicast-nlb-cluster-in.html' title='Setting up a multicast NLB Cluster in a Virtual Environment'/><author><name>chrplunk</name><uri>http://www.blogger.com/profile/16009472756469833389</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://3.bp.blogspot.com/_8WReXMmzvS0/SrzSTPr0DVI/AAAAAAAAOJc/Ai5Q1IPV978/S220/me.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-151789648433871658.post-539013105831539196</id><published>2009-02-06T13:26:00.002-05:00</published><updated>2009-02-06T13:28:45.932-05:00</updated><title type='text'>How to examine minidumps</title><content type='html'>First, download and install the Windows debugging tools, visit the following Microsoft Web site:&lt;a href="http://www.microsoft.com/whdc/devtools/debugging/default.mspx"&gt;http://www.microsoft.com/whdc/devtools/debugging/default.mspx&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Create a folder called "symbols" on C:&lt;br /&gt;&lt;br /&gt;Go to cmd prompt&lt;br /&gt;&lt;br /&gt;cd to C:\Program Files\Debugging Tools For Windows (x86)&lt;br /&gt;&lt;br /&gt;windbg -y srv*c:\symbols*http://msdl.microsoft.com/download/symbols -z c:\windows\minidump\minidump.dmp&lt;br /&gt;&lt;br /&gt;This command grabs the latest symbols and dumps them to C:\symbols and then opens the debugger where you can run various commands. See below.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;From &lt;a href="http://support.microsoft.com/kb/315263"&gt;MS website&lt;/a&gt;:&lt;br /&gt;Examine the dump fileThere are several commands that you can use to gather information in the dump file, including the following commands:&lt;br /&gt;&lt;br /&gt;The &lt;strong&gt;!analyze -show&lt;/strong&gt; command displays the Stop error code and its parameters. The Stop error code is also known as the bug check code.&lt;br /&gt;&lt;br /&gt;The &lt;strong&gt;!analyze -v&lt;/strong&gt; command displays verbose output.&lt;br /&gt;&lt;br /&gt;The &lt;strong&gt;lm N T&lt;/strong&gt; command lists the specified loaded modules. The output includes the status and the path of the module.Note&lt;br /&gt;&lt;br /&gt;The &lt;strong&gt;!drivers&lt;/strong&gt; extension command displays a list of all drivers that are loaded on the destination computer, together with summary information about their memory use. The !drivers extension is obsolete in Windows XP and later.&lt;br /&gt;&lt;br /&gt;To display information about loaded drivers and other modules, use the lm command. The lm N T command displays information in a format that is similar to the old !drivers extension.For help with other commands and for complete command syntax, see the debugging tools Help documentation. The debugging tools Help documentation can be found in the following location:&lt;br /&gt;C:\Program Files\Debugging Tools for Windows\Debugger.chmNote If you have symbol-related issues, use the Symchk utility to verify that the correct symbols are loaded correctly. For additional information about using Symchk, click the following article number to view the article in the Microsoft Knowledge Base:&lt;br /&gt;&lt;a class="KBlink" href="http://support.microsoft.com/kb/311503/"&gt;311503&lt;/a&gt; (http://support.microsoft.com/kb/311503/ ) Use the Microsoft Symbol Server to obtain debug symbol files&lt;br /&gt;Simplify the commands by using a batch fileAfter you identify the command that you must have to load memory dumps, you can create a batch file to examine a dump file. For example, create a batch file and name it Dump.bat. Save it in the folder where the debugging tools are installed. Type the following text in the batch file:&lt;br /&gt;cd "c:\program files\debugging tools for windows"kd -y srv*c:\symbols*http://msdl.microsoft.com/download/symbols -i c:\windows\i386 -z %1When you want to examine a dump file, type the following command to pass the dump file path to the batch file:&lt;br /&gt;dump c:\windows\minidump\minidump.dmp&lt;br /&gt;&lt;br /&gt;&lt;a href="http://support.microsoft.com/kb/254649/"&gt;Overview of memory dump file options for Windows Server 2003, Windows XP, and Windows 2000&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/151789648433871658-539013105831539196?l=chrplunk.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://chrplunk.blogspot.com/feeds/539013105831539196/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=151789648433871658&amp;postID=539013105831539196' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/151789648433871658/posts/default/539013105831539196'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/151789648433871658/posts/default/539013105831539196'/><link rel='alternate' type='text/html' href='http://chrplunk.blogspot.com/2009/02/how-to-examine-minidumps.html' title='How to examine minidumps'/><author><name>chrplunk</name><uri>http://www.blogger.com/profile/16009472756469833389</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://3.bp.blogspot.com/_8WReXMmzvS0/SrzSTPr0DVI/AAAAAAAAOJc/Ai5Q1IPV978/S220/me.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-151789648433871658.post-7396911365671884764</id><published>2008-11-26T23:48:00.001-05:00</published><updated>2008-12-02T14:19:37.350-05:00</updated><title type='text'>Linux Open-iSCSI and MPIO to a SAN</title><content type='html'>&lt;div class="ms-wikicontent"&gt;&lt;div class="ExternalClass74A7AB7B57544A9D8853326C8F5AC4DE"&gt;&lt;strong&gt;&lt;span style="font-size:130%;color:#0000ff;"&gt;Linux Open-iSCSI &lt;/span&gt;&lt;/strong&gt;&lt;/div&gt;&lt;div class="ExternalClass74A7AB7B57544A9D8853326C8F5AC4DE"&gt;&lt;/div&gt;&lt;div class="ExternalClass74A7AB7B57544A9D8853326C8F5AC4DE"&gt;"Open-iSCSI project is a high-performance, transport independent, multi-platform implementation of &lt;a href="http://www.ietf.org/rfc/rfc3720.txt"&gt;RFC3720&lt;/a&gt;."&lt;/div&gt;&lt;div class="ExternalClass74A7AB7B57544A9D8853326C8F5AC4DE"&gt;&lt;br /&gt;Once you install the package, there is a command line tool called &lt;strong&gt;iscsiadm&lt;/strong&gt; that one uses to manage your connections to the SAN. Open-iSCSI persistent configuration is implemented as a DBM database. Technically, this &lt;strong&gt;iscsiadm&lt;/strong&gt; tool manages (updates, deletes, inserts, queries) the persistent database. The utility presents a set of operations that a user can perform on iSCSI nodes, sessions, connections, and discovery records.&lt;/div&gt;&lt;div class="ExternalClass74A7AB7B57544A9D8853326C8F5AC4DE"&gt;&lt;/div&gt;&lt;div class="ExternalClass74A7AB7B57544A9D8853326C8F5AC4DE"&gt;The database contains two tables:&lt;br /&gt;- Discovery table (/etc/iscsi/send_targets);&lt;br /&gt;- Node table (/etc/iscsi/nodes).&lt;br /&gt;&lt;/div&gt;&lt;div class="ExternalClass74A7AB7B57544A9D8853326C8F5AC4DE"&gt;The usual place for iSCSI database files: /etc/iscsi/nodes&lt;br /&gt;&lt;br /&gt;These tables correspond to what they call the "operational mode" of &lt;strong&gt;iscsiadm&lt;/strong&gt;. You will notice each command starts out with one or the other of the operational modes:&lt;br /&gt;&lt;br /&gt;--mode &lt;op&gt;specify operational mode op = &lt;discoverynode&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="ExternalClass74A7AB7B57544A9D8853326C8F5AC4DE"&gt;&lt;table style="DISPLAY: inline; BORDER-COLLAPSE: collapse" border="1" size="1em"&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td class="ms-rtetablecells" style="VERTICAL-ALIGN: top"&gt;&lt;div&gt;&lt;em&gt;From the MAN page:&lt;/em&gt;&lt;/div&gt;&lt;div&gt;&lt;span style="font-size:78%;"&gt;Open-iscsi does not use the term node as defined by the iSCSI RFC, where a node is a single iSCSI initiator or target. Open-iscsi uses the term node to refer to a portal on a target, so tools like iscsiadm require that &lt;strong&gt;--targetname &lt;/strong&gt;and &lt;strong&gt;--portal &lt;/strong&gt;argument be used when in node mode. For session mode, a session id (sid) is used. The sid of a session can be found by running &lt;strong&gt;iscsiadm -m session&lt;/strong&gt;. The session id is not currently persistent and is partially determined by when the session is setup.&lt;/span&gt;&lt;/div&gt;&lt;br /&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;/div&gt;&lt;div class="ExternalClass74A7AB7B57544A9D8853326C8F5AC4DE"&gt;&lt;/div&gt;&lt;div class="ExternalClass74A7AB7B57544A9D8853326C8F5AC4DE"&gt;&lt;strong&gt;&lt;span style="font-size:100%;color:#ff0000;"&gt;How to:&lt;/span&gt;&lt;/strong&gt;&lt;/div&gt;&lt;div class="ExternalClass74A7AB7B57544A9D8853326C8F5AC4DE"&gt;&lt;strong&gt;&lt;/strong&gt;&lt;/div&gt;&lt;div class="ExternalClass74A7AB7B57544A9D8853326C8F5AC4DE"&gt;&lt;strong&gt;Install open-iscsi&lt;/strong&gt;&lt;/div&gt;&lt;div class="ExternalClass74A7AB7B57544A9D8853326C8F5AC4DE"&gt;aptitude install open-iscsi&lt;/div&gt;&lt;div class="ExternalClass74A7AB7B57544A9D8853326C8F5AC4DE"&gt;&lt;/div&gt;&lt;div class="ExternalClass74A7AB7B57544A9D8853326C8F5AC4DE"&gt;&lt;strong&gt;Change IQN in /etc/initiatorname.iscsi &lt;em&gt;(optional)&lt;/em&gt;&lt;/strong&gt;&lt;/div&gt;&lt;div class="ExternalClass74A7AB7B57544A9D8853326C8F5AC4DE"&gt;vi /etc/iscsi/initiatorname.iscsi&lt;/div&gt;&lt;div class="ExternalClass74A7AB7B57544A9D8853326C8F5AC4DE"&gt;InitiatorName=&lt;server&gt;&lt;/div&gt;&lt;div class="ExternalClass74A7AB7B57544A9D8853326C8F5AC4DE"&gt;&lt;/div&gt;&lt;div class="ExternalClass74A7AB7B57544A9D8853326C8F5AC4DE"&gt;&lt;strong&gt;Restart open-iscsi daemon&lt;/strong&gt;&lt;/div&gt;&lt;div class="ExternalClass74A7AB7B57544A9D8853326C8F5AC4DE"&gt;/etc/init.d/open-iscsi restart&lt;/div&gt;&lt;div class="ExternalClass74A7AB7B57544A9D8853326C8F5AC4DE"&gt;&lt;/div&gt;&lt;div class="ExternalClass74A7AB7B57544A9D8853326C8F5AC4DE"&gt;&lt;strong&gt;Discover Targets&lt;/strong&gt;&lt;/div&gt;&lt;div class="ExternalClass74A7AB7B57544A9D8853326C8F5AC4DE"&gt;iscsiadm -m discovery -t st -p &lt;storage&gt;:3260&lt;br /&gt;iscsiadm -m discovery -t st -p &lt;storage&gt;:3260&lt;/div&gt;&lt;div class="ExternalClass74A7AB7B57544A9D8853326C8F5AC4DE"&gt;&lt;em&gt;&lt;u&gt;example&lt;/u&gt;:&lt;/em&gt;&lt;/div&gt;&lt;div class="ExternalClass74A7AB7B57544A9D8853326C8F5AC4DE"&gt;iscsiadm -m discovery -t st -p 192.168.11.1&lt;/div&gt;&lt;div class="ExternalClass74A7AB7B57544A9D8853326C8F5AC4DE"&gt;iscsiadm -m discovery -t st -p 192.168.11.2&lt;/div&gt;&lt;div class="ExternalClass74A7AB7B57544A9D8853326C8F5AC4DE"&gt;&lt;/div&gt;&lt;div class="ExternalClass74A7AB7B57544A9D8853326C8F5AC4DE"&gt;&lt;strong&gt;See what has been discovered&lt;/strong&gt;&lt;/div&gt;&lt;div class="ExternalClass74A7AB7B57544A9D8853326C8F5AC4DE"&gt;&lt;strong&gt;&lt;/strong&gt;iscsiadm -m node&lt;/div&gt;&lt;div class="ExternalClass74A7AB7B57544A9D8853326C8F5AC4DE"&gt;&lt;em&gt;&lt;u&gt;should see something like&lt;/u&gt;:&lt;/em&gt;&lt;/div&gt;&lt;div class="ExternalClass74A7AB7B57544A9D8853326C8F5AC4DE"&gt;192.168.11.1:3260,1 iqn.2000-08.com.datacore:psan01-2&lt;br /&gt;192.168.11.2:3260,1 iqn.2000-08.com.datacore:psan02-2&lt;/div&gt;&lt;div class="ExternalClass74A7AB7B57544A9D8853326C8F5AC4DE"&gt;&lt;/div&gt;&lt;div class="ExternalClass74A7AB7B57544A9D8853326C8F5AC4DE"&gt;&lt;strong&gt;Check Configuration of the Connection&lt;/strong&gt;&lt;/div&gt;&lt;div class="ExternalClass74A7AB7B57544A9D8853326C8F5AC4DE"&gt;iscsiadm --mode node --targetname &lt;storage&gt;&lt;/div&gt;&lt;div class="ExternalClass74A7AB7B57544A9D8853326C8F5AC4DE"&gt;&lt;em&gt;&lt;u&gt;example&lt;/u&gt;:&lt;/em&gt;&lt;/div&gt;&lt;div class="ExternalClass74A7AB7B57544A9D8853326C8F5AC4DE"&gt;&lt;em&gt;&lt;/em&gt;iscsiadm --mode node --targetname iqn.2000-08.com.datacore:psan02-2&lt;br /&gt;&lt;span style="font-size:78%;"&gt;&lt;strong&gt;* note the node.conn[0].startup property is set to manual&lt;/strong&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="ExternalClass74A7AB7B57544A9D8853326C8F5AC4DE"&gt;&lt;/div&gt;&lt;div class="ExternalClass74A7AB7B57544A9D8853326C8F5AC4DE"&gt;&lt;strong&gt;Change to Auto Login to Storage&lt;/strong&gt;&lt;/div&gt;&lt;div class="ExternalClass74A7AB7B57544A9D8853326C8F5AC4DE"&gt;iscsiadm -m node -T &lt;storage&gt;-p &lt;storage&gt;:3260 -o update -n node.conn[0].startup -v automatic&lt;br /&gt;iscsiadm -m node -T &lt;storage&gt;-p &lt;storage&gt;:3260 -o update -n node.conn[0].startup -v automatic&lt;/div&gt;&lt;div class="ExternalClass74A7AB7B57544A9D8853326C8F5AC4DE"&gt;&lt;em&gt;&lt;u&gt;example&lt;/u&gt;:&lt;/em&gt;&lt;/div&gt;&lt;div class="ExternalClass74A7AB7B57544A9D8853326C8F5AC4DE"&gt;iscsiadm -m node -T iqn.2000-08.com.datacore:psan02-2 -p 192.168.11.2:3260 -o update -n node.conn[0].startup -v automatic&lt;/div&gt;&lt;div class="ExternalClass74A7AB7B57544A9D8853326C8F5AC4DE"&gt;&lt;span style="font-size:78%;"&gt;&lt;/span&gt;&lt;strong&gt;&lt;span style="font-size:78%;"&gt;* note - if you run the command again from "Check Configuration of the Connection" section (above), you should now see node.conn[0].startup = automatic now&lt;/span&gt;&lt;/strong&gt;&lt;/div&gt;&lt;div class="ExternalClass74A7AB7B57544A9D8853326C8F5AC4DE"&gt;&lt;strong&gt;&lt;br /&gt;&lt;/strong&gt;&lt;/div&gt;&lt;strong&gt;&lt;/strong&gt;&lt;div class="ExternalClass74A7AB7B57544A9D8853326C8F5AC4DE"&gt;&lt;strong&gt;Set All Additional Discoveries to Auto-Login&lt;/strong&gt;&lt;/div&gt;&lt;div class="ExternalClass74A7AB7B57544A9D8853326C8F5AC4DE"&gt;vi /etc/iscsi/iscsid.conf&lt;/div&gt;&lt;div class="ExternalClass74A7AB7B57544A9D8853326C8F5AC4DE"&gt;node.startup = Automatic&lt;/div&gt;&lt;div class="ExternalClass74A7AB7B57544A9D8853326C8F5AC4DE"&gt;&lt;/div&gt;&lt;div class="ExternalClass74A7AB7B57544A9D8853326C8F5AC4DE"&gt;&lt;strong&gt;Check if Sessions Started&lt;/strong&gt;&lt;/div&gt;&lt;div class="ExternalClass74A7AB7B57544A9D8853326C8F5AC4DE"&gt;iscsiadm -m session&lt;/div&gt;&lt;div class="ExternalClass74A7AB7B57544A9D8853326C8F5AC4DE"&gt;&lt;em&gt;&lt;u&gt;should see&lt;/u&gt;:&lt;/em&gt;&lt;/div&gt;&lt;div class="ExternalClass74A7AB7B57544A9D8853326C8F5AC4DE"&gt;tcp: [1] 192.168.11.2:3260,1 iqn.2000-08.com.datacore:psan02-2&lt;br /&gt;tcp: [2] 192.168.11.1:3260,1 iqn.2000-08.com.datacore:psan01-2&lt;/div&gt;&lt;div class="ExternalClass74A7AB7B57544A9D8853326C8F5AC4DE"&gt;&lt;/div&gt;&lt;div class="ExternalClass74A7AB7B57544A9D8853326C8F5AC4DE"&gt;To see a more verbose output, add a -P 1&lt;/div&gt;&lt;div class="ExternalClass74A7AB7B57544A9D8853326C8F5AC4DE"&gt;&lt;u&gt;&lt;em&gt;example&lt;/em&gt;&lt;/u&gt;:&lt;/div&gt;&lt;div class="ExternalClass74A7AB7B57544A9D8853326C8F5AC4DE"&gt;iscsiadm -m session -P 1&lt;/div&gt;&lt;div class="ExternalClass74A7AB7B57544A9D8853326C8F5AC4DE"&gt;&lt;/div&gt;&lt;strong&gt;DO NOT Reboot!!&lt;/strong&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-size:130%;color:#ff0000;"&gt;&lt;span style="font-size:100%;color:#000000;"&gt;&lt;/span&gt;&lt;strong&gt;Multi-Pathing ( MPIO )&lt;/strong&gt;&lt;/span&gt;&lt;br /&gt;Multipathing allows redundency so that if one of the paths goes out, we still have access to the SAN.&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;Aptitude install multipath-tools&lt;/strong&gt;&lt;br /&gt;&lt;strong&gt;&lt;/strong&gt;&lt;br /&gt;&lt;table style="DISPLAY: inline; FONT-SIZE: 1em; BORDER-COLLAPSE: collapse" border="1"&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td class="ms-rtetablecells" style="VERTICAL-ALIGN: top"&gt;&lt;div&gt;Devices using the software initiators do not have a persistent naming scheme, &lt;em&gt;and do not guarantee that a device (i.e. /dev/sdc) will always have the same device node&lt;/em&gt;. Persistent Naming describes mechanisms where the system identifies devices without relying on the /dev node, &lt;span style="BACKGROUND-COLOR: rgb(255,255,0)"&gt;and provides a reference point for it that does not change at reboot&lt;/span&gt;.&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;br /&gt;&lt;strong&gt;&lt;/strong&gt;&lt;br /&gt;&lt;strong&gt;First you have to comment out the 'Blacklist all devices' section in /etc/multipath.conf file&lt;/strong&gt;&lt;br /&gt;&lt;em&gt;&lt;u&gt;Note: the first time the file will not be in /etc. You must copy it from the examples directory as follows&lt;/u&gt;:&lt;/em&gt;&lt;br /&gt;cp /usr/share/doc/multipath-tools/examples/multipath.conf.synthetic /etc/multipath.conf&lt;br /&gt;&lt;strong&gt;&lt;/strong&gt;&lt;br /&gt;&lt;strong&gt;Now edit /etc/multipath.conf&lt;/strong&gt;&lt;br /&gt;&lt;strong&gt;&lt;/strong&gt;Make sure the blacklist section is commented out with #&lt;br /&gt;It should look like this:&lt;br /&gt;&lt;table style="DISPLAY: inline; FONT-SIZE: 1em; BORDER-COLLAPSE: collapse" border="1"&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td class="ms-rtetablecells" style="VERTICAL-ALIGN: top"&gt;&lt;div&gt;&lt;strong&gt;#&lt;/strong&gt;blacklist {&lt;br /&gt;&lt;strong&gt;#&lt;/strong&gt; devnode "*"&lt;br /&gt;&lt;strong&gt;#&lt;/strong&gt;}&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;br /&gt;&lt;strong&gt;&lt;/strong&gt;&lt;br /&gt;&lt;strong&gt;Restart the multipathd daemon&lt;/strong&gt;&lt;br /&gt;&lt;strong&gt;&lt;/strong&gt;/etc/init.d/multipath-tools restart&lt;br /&gt;&lt;strong&gt;&lt;/strong&gt;&lt;br /&gt;&lt;strong&gt;Now check that the dev-mapper has configured the volume:&lt;/strong&gt;&lt;br /&gt;multipath -v2&lt;br /&gt;multipath -ll&lt;br /&gt;&lt;em&gt;You should see something like the following. Take note of the UUID (shown in Red below):&lt;/em&gt;&lt;br /&gt;&lt;em&gt;&lt;table style="DISPLAY: inline; FONT-SIZE: 1em; BORDER-COLLAPSE: collapse" border="1"&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td class="ms-rtetablecells" style="VERTICAL-ALIGN: top"&gt;&lt;div&gt;&lt;a href="mailto:root@pmon02:/dev/mapper"&gt;root@pmon02:/dev/mapper&lt;/a&gt;# &lt;strong&gt;multipath -ll&lt;br /&gt;&lt;/strong&gt;DataCoreSAN (&lt;span style="color:#ff0000;"&gt;&lt;strong&gt;360030d90504d4f4e30325f56766f6c31&lt;/strong&gt;&lt;/span&gt;) dm-0 DataCore,SANmelody&lt;br /&gt;[size=150G][features=1 queue_if_no_path][hwhandler=0]&lt;br /&gt;\_ round-robin 0 [prio=2][active]&lt;br /&gt;\_ 3:0:0:0 sdb 8:16 [active][ready]&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;/em&gt;&lt;br /&gt;&lt;em&gt;&lt;/em&gt;&lt;br /&gt;&lt;strong&gt;Now we must again edit the /etc/multipath.conf file:&lt;/strong&gt;&lt;br /&gt;&lt;strong&gt;&lt;/strong&gt;You will see a section called "multipath&lt;strong&gt;s&lt;/strong&gt;". You will need to change the UUID from the previous step and enter it into the wwid parameter. Enter a "friendly name" for your SAN with the &lt;span style="color:#000080;"&gt;alias paramenter (shown in blue below). &lt;/span&gt;&lt;span style="color:#000000;"&gt;Make sure all other parameters are set as below, esp the rr_min_io&lt;/span&gt;:&lt;br /&gt;&lt;table style="DISPLAY: inline; FONT-SIZE: 1em; BORDER-COLLAPSE: collapse" border="1"&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td class="ms-rtetablecells" style="VERTICAL-ALIGN: top"&gt;&lt;div&gt;multipaths {&lt;br /&gt;multipath {&lt;br /&gt;wwid &lt;span style="color:#ff0000;"&gt;&lt;strong&gt;360030d90504d4f4e30325f56766f6c31&lt;/strong&gt;&lt;/span&gt;&lt;br /&gt;alias &lt;span style="color:#000080;"&gt;&lt;strong&gt;DataCoreSAN&lt;/strong&gt;&lt;/span&gt;&lt;br /&gt;path_grouping_policy multibus&lt;br /&gt;path_checker directio&lt;br /&gt;path_selector "round-robin 0"&lt;br /&gt;failback manual&lt;br /&gt;rr_weight priorities&lt;br /&gt;no_path_retry 5&lt;br /&gt;rr_min_io &lt;span style="BACKGROUND-COLOR: rgb(255,255,153)"&gt;10&lt;/span&gt;&lt;br /&gt;}&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;br /&gt;&lt;strong&gt;&lt;/strong&gt;&lt;br /&gt;&lt;strong&gt;Save the file, then run:&lt;/strong&gt;&lt;br /&gt;&lt;strong&gt;&lt;/strong&gt;multipath -v2&lt;br /&gt;multipath -ll&lt;br /&gt;&lt;table style="DISPLAY: inline; FONT-SIZE: 1em; BORDER-COLLAPSE: collapse" border="1"&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td class="ms-rtetablecells" style="VERTICAL-ALIGN: top"&gt;&lt;div&gt;&lt;div&gt;&lt;a href="mailto:root@pmon02:/dev/mapper"&gt;root@pmon02:/dev/mapper&lt;/a&gt;# &lt;strong&gt;multipath -ll&lt;br /&gt;&lt;/strong&gt;DataCoreSAN (&lt;span style="color:#ff0000;"&gt;&lt;strong&gt;360030d90504d4f4e30325f56766f6c31&lt;/strong&gt;&lt;/span&gt;) dm-0 DataCore,SANmelody&lt;br /&gt;[size=150G][features=1 queue_if_no_path][hwhandler=0]&lt;br /&gt;\_ round-robin 0 [prio=2][active]&lt;br /&gt;\_ 4:0:0:0 sdc 8:32 [active][ready]&lt;br /&gt;\_ 3:0:0:0 sdb 8:16 [active][ready]&lt;/div&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;br /&gt;&lt;strong&gt;&lt;/strong&gt;&lt;br /&gt;&lt;strong&gt;Confirm that you now have persistent names to access the volume:&lt;/strong&gt;&lt;br /&gt;cd /dev/mapper&lt;br /&gt;ls -l&lt;br /&gt;&lt;table style="DISPLAY: inline; FONT-SIZE: 1em; BORDER-COLLAPSE: collapse" border="1"&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td class="ms-rtetablecells" style="VERTICAL-ALIGN: top"&gt;&lt;div&gt;&lt;a href="mailto:root@pmon02:/dev/mapper"&gt;root@pmon02:/dev/mapper&lt;/a&gt;# &lt;strong&gt;ls -l&lt;/strong&gt;&lt;br /&gt;total 0&lt;br /&gt;crw-rw---- 1 root root 10, 63 2008-11-24 15:14 control&lt;br /&gt;brw-rw---- 1 root disk 254, 0 2008-11-24 15:14 &lt;span style="BACKGROUND-COLOR: rgb(0,0,0)"&gt;DataCoreSAN&lt;/span&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;&lt;/strong&gt;&lt;br /&gt;&lt;strong&gt;Next we shall create a filesystem on the iSCSI volume:&lt;/strong&gt;&lt;br /&gt;mkfs.ext3 /dev/mapper/DataCoreSAN&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;Make sure the iSCSI filesystem mounts at Boot time:&lt;/strong&gt;&lt;br /&gt;&lt;table style="DISPLAY: inline; FONT-SIZE: 1em; BORDER-COLLAPSE: collapse" border="1"&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td class="ms-rtetablecells" style="VERTICAL-ALIGN: top"&gt;&lt;div&gt;&lt;em&gt;In order to mount a filesystem that exists on an iSCSI Volume connected through the open-iSCSI Software initiator, you need to add a line to the &lt;strong&gt;/etc/fstab &lt;/strong&gt;file. The format of this line is the same as any other device and filesystem with &lt;span style="BACKGROUND-COLOR: rgb(255,255,0)"&gt;the exception being that you need to specify the _netdev mount option, and you want to have the last two numbers set to 0&lt;/span&gt; (first is a dump parameter and the second is the fsck pass). &lt;/em&gt;&lt;/div&gt;&lt;div&gt;&lt;em&gt;&lt;/em&gt;&lt;/div&gt;&lt;div&gt;&lt;em&gt;&lt;span style="color:#99cc00;"&gt;The _netdev option delays the mounting of the filesystem on the device listed until after the network has been started and also ensures that the filesystem is unmounted before stopping the network subsystem at shutdown.&lt;/span&gt;&lt;/em&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;br /&gt;&lt;br /&gt;&lt;em&gt;&lt;u&gt;example&lt;/u&gt;&lt;/em&gt;:&lt;br /&gt;&lt;br /&gt;/dev/mapper/360030d90504d4f4e30325f56766f6c31 /mnt/DataCoreSAN ext3 _netdev,defaults 0 0&lt;br /&gt;&lt;strong&gt;&lt;/strong&gt;&lt;br /&gt;&lt;strong&gt;Now you must configure the multipath connections:&lt;/strong&gt;&lt;br /&gt;&lt;strong&gt;&lt;table style="DISPLAY: inline; FONT-SIZE: 1em; BORDER-COLLAPSE: collapse" border="1"&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td class="ms-rtetablecells" style="VERTICAL-ALIGN: top"&gt;&lt;div&gt;To create the multiple logins needed for Linux dev-mapper to work you need to create an ‘interface’ file for each GbE interface you wish to use to connect to the array.&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;/strong&gt;&lt;br /&gt;&lt;ul&gt;&lt;li&gt;First, get the MAC address: &lt;strong&gt;ifconfig eth2  grep HW &lt;/strong&gt;(in my case eth2 is the configured ethernet port that connects to the SAN) &lt;/li&gt;&lt;li&gt;&lt;strong&gt;&lt;em&gt;eth2 Link encap:Ethernet HWaddr 00:10:18:40:14:66&lt;/em&gt;&lt;/strong&gt; &lt;/li&gt;&lt;li&gt;This is the MAC address. Next create a blank iface.eth2 file in /etc/iscsi/ifaces &lt;/li&gt;&lt;li&gt;&lt;strong&gt;touch /etc/iscsi/ifaces/iface.eth2&lt;/strong&gt; &lt;/li&gt;&lt;li&gt;&lt;strong&gt;&lt;/strong&gt;add the line with the MAC address you discovered above. Example: &lt;/li&gt;&lt;li&gt;&lt;strong&gt;iface.hwaddress = 00:10:18:40:14:66&lt;/strong&gt; &lt;/li&gt;&lt;li&gt;Do this for each card on the iscsi LAN, if there is more than one.&lt;/li&gt;&lt;/ul&gt;&lt;p&gt;&lt;strong&gt;Rediscover the targets:&lt;/strong&gt;&lt;/p&gt;&lt;p&gt;iscsiadm –m discovery –t st –p &lt;group&gt;:3260&lt;/p&gt;&lt;p&gt;You should see an entry for each interface you specified. In my case, it is only one.&lt;/p&gt;&lt;p&gt;&lt;strong&gt;Next, log into the volumes:&lt;/strong&gt;&lt;/p&gt;&lt;p&gt;&lt;table style="DISPLAY: inline; FONT-SIZE: 1em; BORDER-COLLAPSE: collapse" border="1"&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td class="ms-rtetablecells" style="VERTICAL-ALIGN: top"&gt;&lt;strong&gt;&lt;/strong&gt;iscsiadm -m node -l -T iqn.2000-08.com.datacore:psan02-2 -p 192.168.11.2:3260&lt;br /&gt;&lt;strong&gt;&lt;/strong&gt;iscsiadm -m node -l -T iqn.2000-08.com.datacore:psan01-2 -p 192.168.11.1:3260&lt;br /&gt;iscsiadm -m session&lt;br /&gt;&lt;em&gt;This last command will show that both adapters have connected to the array&lt;/em&gt;&lt;br /&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;/p&gt;&lt;p&gt;&lt;strong&gt;Next, if the interfaces are on different networks (11 vs 12 like we have here) you have to remove the pointers to the interfaces so that it will work:&lt;br /&gt;&lt;/strong&gt;        &lt;em&gt;example&lt;/em&gt;&lt;strong&gt;:&lt;br /&gt;&lt;/strong&gt;        rm /etc/iscsi/nodes/iqn.2000-08.com.datacore:psan01-2/192.168.11.1,3260,1/iface.eth3&lt;br /&gt;        rm /etc/iscsi/nodes/iqn.2000-08.com.datacore:psan02-2/192.168.12.1,3260,1/iface.eth2&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;strong&gt;Do exactly the same thing for /isci/send_targets&lt;/strong&gt;&lt;/p&gt;&lt;p&gt;&lt;strong&gt;Reboot:&lt;/strong&gt;&lt;/p&gt;&lt;p&gt;Shutdown -r now&lt;/p&gt;&lt;p&gt;&lt;strong&gt;&lt;em&gt;Optional&lt;/em&gt;:&lt;/strong&gt;&lt;/p&gt;&lt;p&gt;&lt;strong&gt;Edit /etc/iscsi/iscsi.conf with the following:&lt;/strong&gt;&lt;/p&gt;node.conn[0].timeo.noop_out_interval = 5&lt;br /&gt;node.conn[0].timeo.noop_out_timeout = 10&lt;br /&gt;&lt;span style="font-size:78%;"&gt;&lt;em&gt;&lt;u&gt;note&lt;/u&gt;:&lt;/em&gt; &lt;/span&gt;&lt;em&gt;&lt;span style="font-size:78%;"&gt;If there are a lot of IO error messages, then the above values may be too&lt;br /&gt;aggresive and you may need to increase the values for your network conditions&lt;br /&gt;and workload, or you may need to check your network for possible problems.&lt;br /&gt;&lt;/span&gt;&lt;/em&gt;&lt;br /&gt;&lt;p&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/151789648433871658-7396911365671884764?l=chrplunk.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://chrplunk.blogspot.com/feeds/7396911365671884764/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=151789648433871658&amp;postID=7396911365671884764' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/151789648433871658/posts/default/7396911365671884764'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/151789648433871658/posts/default/7396911365671884764'/><link rel='alternate' type='text/html' href='http://chrplunk.blogspot.com/2008/11/linux-open-iscsi-and-mpio-to-san.html' title='Linux Open-iSCSI and MPIO to a SAN'/><author><name>chrplunk</name><uri>http://www.blogger.com/profile/16009472756469833389</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://3.bp.blogspot.com/_8WReXMmzvS0/SrzSTPr0DVI/AAAAAAAAOJc/Ai5Q1IPV978/S220/me.jpg'/></author><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-151789648433871658.post-5958808660935227395</id><published>2008-08-11T14:26:00.002-04:00</published><updated>2008-08-11T14:41:33.917-04:00</updated><title type='text'></title><content type='html'>&lt;span style="font-family:verdana;font-size:78%;"&gt;&lt;strong&gt;&lt;span style="font-size:85%;"&gt;System State Backups on Domain Controllers: Behind the Scenes&lt;/span&gt;&lt;/strong&gt;&lt;br /&gt;Here is the process in a nutshell:&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family:verdana;font-size:78%;"&gt;1.  An AT job runs C:\WINDOWS\system32\sysstatebackup\sysstatebackup.cmd four times per day.  This backs up the System State to local C:\SysStateBackups_LocalTemp, appending a date and time string for uniqueness. &lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:verdana;font-size:78%;"&gt;&lt;br /&gt;SET computername=%computername%FOR /F "TOKENS=1* DELIMS= " %%A IN ('DATE/T') DO SET CDATE=%%BFOR /F "TOKENS=1,2 eol=/ DELIMS=/ " %%A IN ('DATE/T') DO SET mm=%%BFOR /F "TOKENS=1,2 DELIMS=/ eol=/" %%A IN ('echo %CDATE%') DO SET dd=%%BFOR /F "TOKENS=2,3 DELIMS=/ " %%A IN ('echo %CDATE%') DO SET yyyy=%%BSET date=%mm%%dd%%yyyy%SET hourstring=%time:~0,2%SET minutestring=%time:~3,2%SET secondsstring=%time:~6,2%SET thetime=%hourstring%%minutestring%%secondsstring%SET datetime=%date%%thetime%REM ECHO %datetime%C:\WINDOWS\system32\ntbackup.exe backup "@C:\Documents and Settings\ScheduledTasks\Local Settings\Application Data\Microsoft\Windows NT\NTBackup\data\%computername%_SYSTEMSTATEOnly_FULL.bks" /n "%computername%_SYSTEMSTATEOnly_FULL_%datetime%.bkf created %datetime%" /d "Set created %datetime%" /v:yes /r:yes /rs:no /hc:off /m normal /j "%computername%_SYSTEMSTATEOnly_FULL" /l:s /f "C:\SysStateBackups_LocalTemp\%computername%_SYSTEMSTATEOnly_FULL_%datetime%.bkf"&lt;br /&gt;&lt;br /&gt;2.   The next step in the batch file is to run File Replicator.  File replicator will move these .BFK's from C:\SysStateBackups_LocalTemp a remote locations for backup.  We used to move them to the NAS units but due to space limitations, the current locations are now &lt;/span&gt;&lt;a href="file://pbackup01/NTBACKUP"&gt;&lt;span style="font-family:verdana;font-size:78%;"&gt;\\pbackup01\NTBACKUP&lt;/span&gt;&lt;/a&gt;&lt;span style="font-family:verdana;font-size:78%;"&gt; and &lt;/span&gt;&lt;a href="file://pbackup02/NTBACKUP"&gt;&lt;span style="font-family:verdana;font-size:78%;"&gt;\\pbackup02\NTBACKUP&lt;/span&gt;&lt;/a&gt;&lt;span style="font-family:verdana;font-size:78%;"&gt;.  We have double backups, so all DC SysState backups replicate to BOTH backup servers in the following job:&lt;br /&gt;C:\WINDOWS\system32\FileReplicator\FileReplicator.exe /source "C:\SysStateBackups_LocalTemp" /destination "&lt;/span&gt;&lt;a href="file://pbackup01/NTBACKUP"&gt;&lt;span style="font-family:verdana;font-size:78%;"&gt;\\pbackup01\NTBACKUP&lt;/span&gt;&lt;/a&gt;&lt;span style="font-family:verdana;font-size:78%;"&gt;" /destination "&lt;/span&gt;&lt;a href="file://pbackup02/NTBACKUP"&gt;&lt;span style="font-family:verdana;font-size:78%;"&gt;\\pbackup02\NTBACKUP&lt;/span&gt;&lt;/a&gt;&lt;span style="font-family:verdana;font-size:78%;"&gt;" /archivedays "1"&lt;br /&gt;&lt;br /&gt;3.  Regarding the issue of clean-up on source and destination: the source is taken care of by Step #2, passing in the parameter /archivedays, while the destination needs to be cleaned up with a different method.  &lt;/span&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="font-family:verdana;font-size:78%;"&gt;&lt;br /&gt;So, the final step is run automatically by at AT job on both Backup servers.  This AT job is run once per day and is called DeleteAged.  It simply calls Arthur Penn's Python script, which is located in C:\scripts\DeleteAged.PY.  The first parameter tells it which folder to look in while the second tells it how many days of backups to keep.&lt;br /&gt;&lt;br /&gt;RUN: python C:\scripts\DeleteAged.py F:\NTBACKUP 2&lt;br /&gt;Start In: C:\Python25&lt;br /&gt;&lt;br /&gt;*special note*  All jobs were created by logging in locally as ScheduledTasks.  Therefore any maintenance that needs to be done should be done logged in as this user, not your account&lt;/span&gt;&lt;br /&gt;&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/151789648433871658-5958808660935227395?l=chrplunk.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://chrplunk.blogspot.com/feeds/5958808660935227395/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=151789648433871658&amp;postID=5958808660935227395' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/151789648433871658/posts/default/5958808660935227395'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/151789648433871658/posts/default/5958808660935227395'/><link rel='alternate' type='text/html' href='http://chrplunk.blogspot.com/2008/08/system-state-backups-on-domain.html' title=''/><author><name>chrplunk</name><uri>http://www.blogger.com/profile/16009472756469833389</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://3.bp.blogspot.com/_8WReXMmzvS0/SrzSTPr0DVI/AAAAAAAAOJc/Ai5Q1IPV978/S220/me.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-151789648433871658.post-4314013146401506636</id><published>2008-06-24T14:47:00.008-04:00</published><updated>2008-06-25T14:51:46.181-04:00</updated><title type='text'>Allow Windows Clients in Active Directory Domain Groups to Access Samba Shares Using Likewise-open:</title><content type='html'>Allow Windows Clients in Domain Groups to Access Samba Shares:&lt;br /&gt;&lt;br /&gt;Pre-reqs: Likewise has been installed and the system already joined to your Active Directory Domain. &lt;a href="http://devarthur.blogspot.com/2008_05_01_archive.html"&gt;See Mr. Penn's great post about this&lt;/a&gt;:&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Next, we need to install Samba on the Linux system:&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;su&lt;br /&gt;&lt;br /&gt;aptitude install samba winbind&lt;/strong&gt;&lt;br /&gt;&lt;br /&gt;Create a directory named 'idmap' under /usr/lib/samba. Create a symbolic link from /usr/lib/samba/idmap/lwicompat_v2.so to /usr/centeris/lib/idmap/lwicompat_v2.so. Do this for version 4 as well:&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;su&lt;br /&gt;cd /usr/lib/samba&lt;br /&gt;mkdir idmap&lt;br /&gt;cd idmap&lt;br /&gt;ln -s /usr/centeris/lib/idmap/lwicompat_v2.so&lt;br /&gt;ln -s /usr/centeris/lib/idmap/lwicompat_v4.so&lt;/strong&gt;&lt;br /&gt;&lt;br /&gt;Next, confirm the version of Samba you have installed. I have Ubuntu Hardy Heron 8.04 and my version is Version 3.0.28a&lt;br /&gt;&lt;strong&gt;smbd -V&lt;br /&gt;Version 3.0.28a&lt;/strong&gt;&lt;br /&gt;&lt;br /&gt;Now we have to edit the Samba configuration file to set the following parameters. If the parameters are not included, add them.&lt;br /&gt;&lt;strong&gt;security = ads&lt;br /&gt;workgroup = enter workgroup from /etc/samba/lwiauthd.conf here&lt;br /&gt;realm = enter realm from /etc/samba/lwiauthd.conf here&lt;br /&gt;# use lwicompat_v2 for Samba 3.0.0 to 3.0.24&lt;br /&gt;# idmap backend = lwicompat_v2&lt;br /&gt;#&lt;br /&gt;# use lwicompat_v4 for Samba 3.0.25 and later&lt;br /&gt;idmap backend = lwicompat_v4&lt;br /&gt;idmap uid = 50-9999999999&lt;br /&gt;idmap gid = 50-9999999999&lt;/strong&gt;&lt;br /&gt;Create a userPrincipalName value for the machine in it's Active Directory account object using the command lwinet:&lt;br /&gt;&lt;strong&gt;lwinet ads setmachineupn -U Administrator&lt;/strong&gt;&lt;br /&gt;&lt;br /&gt;should get:&lt;br /&gt;&lt;strong&gt;&lt;em&gt;Added userPrincipalName value of host/SAMBA@YOURDOMAIN.LOCAL&lt;/em&gt;&lt;/strong&gt;&lt;br /&gt;&lt;br /&gt;On the likewise site I found this special note:&lt;br /&gt;Special note for Ubuntu and Debian only: Ubuntu and Debian store&lt;br /&gt;secrets.tdb in /var/lib/samba so you will need to create a symlink back&lt;br /&gt;to /etc/samba/secrets.tdb.&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;$ mv /var/lib/samba/secrets.tdb /var/lib/samba/secrets.tdb.orig&lt;br /&gt;$ ln –s /etc/samba/secrets.tdb /var/lib/samba/secrets.tdb&lt;/strong&gt;&lt;br /&gt;&lt;br /&gt;To verify:&lt;br /&gt;Start the Samba winbind daemon winbindd&lt;br /&gt;&lt;strong&gt;/etc/init.d/winbind start&lt;/strong&gt;&lt;br /&gt;&lt;br /&gt;Use the wbinfo tool to verify various pieces of information. Start by&lt;br /&gt;ensuring that winbindd is honoring the machine trust account&lt;br /&gt;settings:&lt;br /&gt;&lt;strong&gt;$ wbinfo -t&lt;br /&gt;&lt;em&gt;checking the trust secret via RPC calls succeeded&lt;/strong&gt;&lt;/em&gt;&lt;br /&gt;&lt;br /&gt;Next resolve a name to a SID and that SID to a uid&lt;br /&gt;&lt;strong&gt;$ wbinfo -n "DOMAIN\user"&lt;br /&gt;&lt;em&gt;S-1-5-21-1866663475-11234234241-1563435624-1103 User (1)&lt;br /&gt;$ wbinfo -S S-1-5-21-1862675975-116998903123-1366135624-1103&lt;br /&gt;200000&lt;/strong&gt;&lt;/em&gt;&lt;br /&gt;&lt;br /&gt;This should match the information returned from getent which is&lt;br /&gt;sent through Likewise Authentication daemon:&lt;br /&gt;&lt;strong&gt;$ getent passwd "HCHB\cplunkett"&lt;br /&gt;&lt;em&gt;DOMAIN\&lt;user&gt;:*:39854560:33456401::/home/DOMAIN/&lt;user&gt;:/bin/bash&lt;/strong&gt;&lt;/em&gt;&lt;br /&gt;&lt;br /&gt;Next, start up Samba and after you have shared out a folder, try to access a share from smbclient or&lt;br /&gt;a Windows client.&lt;br /&gt;&lt;strong&gt;/etc/init.d/samba start&lt;/strong&gt;&lt;br /&gt;&lt;br /&gt;Go to a Windows machine:&lt;br /&gt;\\{name of your linux server}\{name of share}&lt;br /&gt;example: &lt;strong&gt;\\samba\test&lt;/strong&gt;&lt;br /&gt;&lt;br /&gt;You can verify the connected user’s using the smbstatus command.&lt;br /&gt;&lt;strong&gt;$ smbstatus&lt;/strong&gt;&lt;br /&gt;&lt;strong&gt;&lt;/strong&gt;&lt;br /&gt;&lt;strong&gt;Finally, see Mr. Penn's post on &lt;a href="http://devarthur.blogspot.com/2008_05_01_archive.html"&gt;how to set up shares&lt;/a&gt;&lt;/strong&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/151789648433871658-4314013146401506636?l=chrplunk.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://chrplunk.blogspot.com/feeds/4314013146401506636/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=151789648433871658&amp;postID=4314013146401506636' title='8 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/151789648433871658/posts/default/4314013146401506636'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/151789648433871658/posts/default/4314013146401506636'/><link rel='alternate' type='text/html' href='http://chrplunk.blogspot.com/2008/06/allow-windows-clients-in-active.html' title='Allow Windows Clients in Active Directory Domain Groups to Access Samba Shares Using Likewise-open:'/><author><name>chrplunk</name><uri>http://www.blogger.com/profile/16009472756469833389</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://3.bp.blogspot.com/_8WReXMmzvS0/SrzSTPr0DVI/AAAAAAAAOJc/Ai5Q1IPV978/S220/me.jpg'/></author><thr:total>8</thr:total></entry><entry><id>tag:blogger.com,1999:blog-151789648433871658.post-1880513339844608165</id><published>2008-05-27T15:34:00.000-04:00</published><updated>2008-05-27T15:35:26.867-04:00</updated><title type='text'>Finding what is using all your diskspace in Linux (root partition fills up)</title><content type='html'>&lt;span style="font-size:85%;"&gt;&lt;span style="font-family: verdana;"&gt;&lt;span style="color: rgb(51, 51, 255);font-size:130%;" &gt;Finding what is using all your diskspace in Linux (root partition fills up)&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;To find file of size greater than 100MB (= 1024*1024*100 bytes), use the following command (as root):&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: verdana;"&gt; &lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: verdana; font-weight: bold;"&gt;find / -xdev -size +104857600c&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: verdana;"&gt; &lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: verdana;"&gt;This will look for files &gt;100MB in size on your root (/) partition without decending into other partitions.&lt;/span&gt;&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/151789648433871658-1880513339844608165?l=chrplunk.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://chrplunk.blogspot.com/feeds/1880513339844608165/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=151789648433871658&amp;postID=1880513339844608165' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/151789648433871658/posts/default/1880513339844608165'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/151789648433871658/posts/default/1880513339844608165'/><link rel='alternate' type='text/html' href='http://chrplunk.blogspot.com/2008/05/finding-what-is-using-all-your.html' title='Finding what is using all your diskspace in Linux (root partition fills up)'/><author><name>chrplunk</name><uri>http://www.blogger.com/profile/16009472756469833389</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://3.bp.blogspot.com/_8WReXMmzvS0/SrzSTPr0DVI/AAAAAAAAOJc/Ai5Q1IPV978/S220/me.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-151789648433871658.post-4921109661376772551</id><published>2008-03-19T14:56:00.005-04:00</published><updated>2008-06-24T14:47:39.129-04:00</updated><title type='text'>Building 8.04 Hardy Heron from Scratch</title><content type='html'>&lt;div class="ExternalClassC1B247A882324C3BAD37F58EE1756A67"  style="font-family:trebuchet ms;"&gt;&lt;span style="COLOR: rgb(51,102,255);font-size:85%;" &gt;Building Ubuntu Server 8.04 (Hardy Heron) from Scratch on ESX 3.x Host&lt;/span&gt;&lt;span style="font-size:85%;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size:85%;"&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size:85%;"&gt;First, change root password&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size:85%;"&gt;&lt;strong&gt;sudo passwd root&lt;/strong&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size:85%;"&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size:85%;"&gt;Next, install an improved text editor: &lt;/span&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="ExternalClassC1B247A882324C3BAD37F58EE1756A67"  style="font-family:trebuchet ms;"&gt;&lt;span style="font-size:85%;"&gt;&lt;strong&gt;sudo aptitude install vim-gnome &lt;/strong&gt;&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size:85%;"&gt;Next, edit sources.list&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size:85%;"&gt;&lt;strong&gt;sudo gvim /etc/apt/sources.list &lt;/strong&gt;&lt;/span&gt;&lt;br /&gt;&lt;div&gt;&lt;span style="font-size:85%;"&gt;Update the Ubuntu source list by uncommenting Canonical's partner repositories (four lines)&lt;/span&gt;&lt;/div&gt;&lt;br /&gt;&lt;span style="font-size:85%;"&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size:85%;"&gt;Update and Upgrade:&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size:85%;"&gt;&lt;strong&gt;sudo aptitude update&lt;/strong&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size:85%;"&gt;&lt;strong&gt;sudo aptitude upgrade&lt;/strong&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size:85%;"&gt;&lt;strong&gt;sudo aptitude dist-upgrade&lt;/strong&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size:85%;"&gt;&lt;strong&gt;&lt;/strong&gt;&lt;br /&gt;Install SSH to be able to Putty remotely: &lt;/span&gt;&lt;br /&gt;&lt;span style="font-size:85%;"&gt;&lt;strong&gt;sudo aptitude install openssh-server&lt;br /&gt;&lt;/strong&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size:85%;"&gt;&lt;strong&gt;sudo aptitude install ntp ntpdate&lt;br /&gt;&lt;/strong&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size:85%;"&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size:85%;"&gt;At the console (as root), permit root login via SSH if necessary: &lt;/span&gt;&lt;br /&gt;&lt;span style="font-size:85%;"&gt;&lt;strong&gt;vi /etc/ssh/sshd_config &lt;/strong&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size:85%;"&gt;change:&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size:85%;"&gt;&lt;strong&gt;permitrootlogin = yes &lt;/strong&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size:85%;"&gt;&lt;strong&gt;:qw &lt;/strong&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size:85%;"&gt;&lt;strong&gt;/etc/init.d/sshd restart&lt;/strong&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size:85%;"&gt;&lt;strong&gt;&lt;/strong&gt;&lt;/span&gt;&lt;br /&gt;&lt;div&gt;&lt;span style="COLOR: rgb(51,102,255);font-size:85%;" &gt;&lt;strong&gt;&lt;/strong&gt;&lt;/span&gt;&lt;span style="font-size:85%;"&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span style="COLOR: rgb(51,102,255);font-size:85%;" &gt;&lt;strong&gt;NFS Server&lt;/strong&gt;&lt;/span&gt;&lt;/div&gt;&lt;br /&gt;&lt;span style="font-size:85%;"&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size:85%;"&gt;&lt;strong&gt;sudo aptitude -P install nfs-kernel-server nfs-common portmap&lt;/strong&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size:85%;"&gt;&lt;strong&gt;sudo dpkg-reconfigure portmap &lt;/strong&gt;(Do not bind to loopback!)&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size:85%;"&gt;&lt;strong&gt;sudo /etc/init.d/portmap restart&lt;/strong&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size:85%;"&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size:85%;"&gt;Link the Installs folder under /var/data to the root:&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size:85%;"&gt;&lt;strong&gt;cd / &amp;amp;&amp;amp; ln -s /var/data/Installs Installs&lt;/strong&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size:85%;"&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size:85%;"&gt;To specify a folder you will need to edit /etc/exports, which can be done like (replace vi for your favorite editor):&lt;br /&gt;&lt;strong&gt;sudo vi /etc/exports&lt;/strong&gt;&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size:85%;"&gt;For an example I will share, with full read/write and privileges, my temporary directory. This directory will be broadcasted to every local IP from 192.168.1.1 through 192.168.1.255.&lt;br /&gt;&lt;strong&gt;/home/folder/tmp 192.168.1.1/24(rw,no_root_squash,async)&lt;/strong&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size:85%;"&gt;&lt;strong&gt;&lt;/strong&gt;&lt;/span&gt;&lt;span style="font-size:85%;"&gt;&lt;br /&gt;To share a read only drive for Installs, I did the following:&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size:85%;"&gt;&lt;strong&gt;/Installs 172.0.0.0/8(ro,async,root_squash)&lt;/strong&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size:85%;"&gt;&lt;strong&gt;&lt;br /&gt;sudo /etc/init.d/nfs-kernel-server restart&lt;/strong&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size:85%;"&gt;&lt;strong&gt;&lt;/strong&gt;&lt;br /&gt;After making changes to /etc/export you can make the shares effect by issuing the:&lt;br /&gt;&lt;strong&gt;sudo exportfs -a&lt;/strong&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size:85%;"&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size:85%;"&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size:85%;"&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size:85%;"&gt;&lt;strong&gt;&lt;span style="COLOR: rgb(51,102,255)"&gt;VMTOOLS&lt;/span&gt;&lt;/strong&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="COLOR: rgb(0,0,0);font-size:85%;" &gt;[Assume running as root so I will not display 'sudo' here]&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size:85%;"&gt;&lt;strong&gt;aptitude install linux-headers-server&lt;/strong&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size:85%;"&gt;&lt;strong&gt;aptitude install make gcc&lt;/strong&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size:85%;"&gt;&lt;strong&gt;aptitude install build-essential linux-headers-`uname -r`&lt;/strong&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size:85%;"&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="COLOR: rgb(0,0,0);font-size:85%;" &gt;From VI Client, right click the machine, choose "Install VM Tools". This will mount a virtual CD.&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size:85%;"&gt;&lt;strong&gt;mkdir /mnt/cdrom&lt;/strong&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size:85%;"&gt;&lt;strong&gt;mount /dev/cdrom /mnt/cdrom&lt;/strong&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size:85%;"&gt;&lt;strong&gt;cd /tmp&lt;/strong&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size:85%;"&gt;&lt;strong&gt;tar zxf /mnt/cdrom/VMwareTools-3.0.2-&lt;&lt;/strong&gt;&lt;em&gt;xxxx&lt;/em&gt;&lt;strong&gt;&gt;.tar.gz&lt;/strong&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size:85%;"&gt;&lt;strong&gt;umount /dev/cdrom&lt;/strong&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size:85%;"&gt;&lt;strong&gt;cd vmware-tools-distrib&lt;/strong&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size:85%;"&gt;&lt;strong&gt;./vmware-install.pl&lt;/strong&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size:85%;"&gt;&lt;strong&gt;exit&lt;/strong&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size:85%;"&gt;&lt;strong&gt;&lt;/strong&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size:85%;"&gt;&lt;strong&gt;&lt;p&gt;&lt;span style="COLOR: rgb(51,102,255)"&gt;&lt;strong&gt;&lt;/strong&gt;&lt;/span&gt; &lt;/p&gt;&lt;p&gt;&lt;strong&gt;&lt;u&gt;&lt;span style="COLOR: rgb(255,0,0)"&gt;&lt;/span&gt;&lt;/u&gt;&lt;/strong&gt;&lt;/strong&gt;&lt;/span&gt;&lt;/p&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/151789648433871658-4921109661376772551?l=chrplunk.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://chrplunk.blogspot.com/feeds/4921109661376772551/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=151789648433871658&amp;postID=4921109661376772551' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/151789648433871658/posts/default/4921109661376772551'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/151789648433871658/posts/default/4921109661376772551'/><link rel='alternate' type='text/html' href='http://chrplunk.blogspot.com/2008/03/building-804-hardy-heron-from-scratch.html' title='Building 8.04 Hardy Heron from Scratch'/><author><name>chrplunk</name><uri>http://www.blogger.com/profile/16009472756469833389</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://3.bp.blogspot.com/_8WReXMmzvS0/SrzSTPr0DVI/AAAAAAAAOJc/Ai5Q1IPV978/S220/me.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-151789648433871658.post-2610267000373493773</id><published>2008-03-19T14:53:00.000-04:00</published><updated>2008-03-19T14:55:30.353-04:00</updated><title type='text'>Adding new internal SCSI HD in Linux</title><content type='html'>&lt;p&gt;&lt;span style="font-family:verdana;font-size:85%;"&gt;&lt;strong&gt;&lt;span style="font-size:130%;color:#3366ff;"&gt;Adding new internal SCSI HD&lt;/span&gt;&lt;/strong&gt;&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;fdisk -lfdisk /dev/sdb&lt;/strong&gt;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="font-family:verdana;font-size:85%;"&gt;choose 'n' for make new&lt;br /&gt;&lt;strong&gt;mkfs.ext3 /dev/sdb1&lt;/strong&gt;&lt;br /&gt;&lt;br /&gt;You now need the UUID:&lt;br /&gt;&lt;strong&gt;blkid /dev/sdb1&lt;/strong&gt;&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;cp /etc/fstab /etc/fstab.backup&lt;br /&gt;gvim /etc/fstab&lt;/strong&gt;&lt;br /&gt;&lt;em&gt;example&lt;/em&gt;:&lt;br /&gt;UUID=2fc204f-a3d22-23423-88fa-2342632432     /var/data       ext3    defaults    0    0&lt;/span&gt;&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/151789648433871658-2610267000373493773?l=chrplunk.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://chrplunk.blogspot.com/feeds/2610267000373493773/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=151789648433871658&amp;postID=2610267000373493773' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/151789648433871658/posts/default/2610267000373493773'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/151789648433871658/posts/default/2610267000373493773'/><link rel='alternate' type='text/html' href='http://chrplunk.blogspot.com/2008/03/adding-new-internal-scsi-hd-in-linux.html' title='Adding new internal SCSI HD in Linux'/><author><name>chrplunk</name><uri>http://www.blogger.com/profile/16009472756469833389</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://3.bp.blogspot.com/_8WReXMmzvS0/SrzSTPr0DVI/AAAAAAAAOJc/Ai5Q1IPV978/S220/me.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-151789648433871658.post-2999392678890065845</id><published>2008-01-25T14:12:00.000-05:00</published><updated>2008-02-06T21:43:30.659-05:00</updated><title type='text'>Starting a stuck virtual machine in ESX 3</title><content type='html'>&lt;div class="ExternalClassFDDC08EB3C904519A729C645A1B7A3A0"&gt;&lt;strong&gt;&lt;span style="font-size:130%;"&gt;Starting a stuck virtual machine&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;/strong&gt;&lt;/div&gt; &lt;div class="ExternalClassFDDC08EB3C904519A729C645A1B7A3A0"&gt;&lt;strong&gt;&lt;/strong&gt; &lt;/div&gt; &lt;div class="ExternalClassFDDC08EB3C904519A729C645A1B7A3A0"&gt;&lt;span style="font-size:85%;"&gt;&lt;strong&gt;Problem&lt;/strong&gt;: You have a virtual machine that when you power  on in VI Client, it appears to power up with no erros and yet never starts.   Typically no errors are reported.  Restarting the ESX host will fix the problem-  however- that is not always an option on production machines during the  day.  This problem might also manifest itself as "A file was not found" or "unable to access a file since it is locked"&lt;br /&gt;&lt;/span&gt;&lt;/div&gt; &lt;div class="ExternalClassFDDC08EB3C904519A729C645A1B7A3A0"&gt; &lt;/div&gt; &lt;div class="ExternalClassFDDC08EB3C904519A729C645A1B7A3A0"&gt;&lt;span style="font-size:85%;"&gt;&lt;strong&gt;Solution&lt;/strong&gt;:&lt;/span&gt;&lt;/div&gt; &lt;ul&gt;&lt;li&gt;&lt;span style="font-size:85%;"&gt;PuTTy to the ESX host as root&lt;/span&gt;  &lt;/li&gt;&lt;li&gt;&lt;span style="font-size:85%;"&gt;Check the VM state by typing the following command:&lt;/span&gt;  &lt;ul&gt;&lt;li&gt;&lt;span style="font-size:85%;"&gt;&lt;strong&gt;vmware-cmd  /vmfs/volumes/path-to-vm-directory/server.vmx getstate&lt;/strong&gt;&lt;/span&gt;&lt;/li&gt;&lt;/ul&gt; &lt;/li&gt;&lt;li&gt;&lt;span style="font-size:85%;"&gt;Try to start the machine with the following command:&lt;/span&gt;  &lt;ul&gt;&lt;li&gt;&lt;span style="font-size:85%;"&gt;&lt;strong&gt;vmware-cmd  /vmfs/volumes/path-to-vm-directory/server.vmx start&lt;/strong&gt;&lt;/span&gt;  &lt;/li&gt;&lt;li&gt;&lt;span style="font-size:85%;"&gt;run the &lt;strong&gt;getstate&lt;/strong&gt; command again (above); if  getstate() = off, then go to the next step.  If if's on, you are  done.&lt;/span&gt;&lt;/li&gt;&lt;/ul&gt; &lt;/li&gt;&lt;li&gt;&lt;span style="font-size:85%;"&gt;There is an undocumented switch in the vmkfstools -D, that  destroys (supposedly) any locks on vmdk's.  It did not work but vmware support  recommened trying it:&lt;/span&gt;  &lt;ul&gt;&lt;li&gt;&lt;span style="font-size:85%;"&gt;&lt;strong&gt;vmkfstools -D PMON01.vmdk&lt;/strong&gt;&lt;/span&gt;  &lt;/li&gt;&lt;li&gt;&lt;span style="font-size:85%;"&gt;we also tried it on the flat file, to no avail:  &lt;strong&gt;vmkfstools -D PMON01-flat.vmdk&lt;/strong&gt;&lt;/span&gt;&lt;/li&gt;&lt;/ul&gt; &lt;/li&gt;&lt;li&gt;&lt;span style="font-size:85%;"&gt;We need to confirm that this ESX host has control of this VM if  it's on a SAN.  So, once this command is run, &lt;strong&gt;tail -f  /var/log/vmkernel&lt;/strong&gt;.  Look for a long number that is the mac address of  vmnic1&lt;/span&gt;  &lt;/li&gt;&lt;li&gt;&lt;span style="font-size:85%;"&gt;confirm this with ifconfig&lt;/span&gt;  &lt;/li&gt;&lt;li&gt;&lt;span style="font-size:85%;"&gt;You can try via Linux to kill the offending process but this  also did not work: &lt;/span&gt; &lt;ul&gt;&lt;li&gt;&lt;span style="font-size:85%;"&gt;&lt;strong&gt;ps -ef | grep -i  /vmfs/volumes/path-to-file/PMON01/PMON01.vmdk&lt;/strong&gt;&lt;/span&gt;  &lt;/li&gt;&lt;li&gt;&lt;span style="font-size:85%;"&gt;The second column is your pid of the vmkload_app of the Virtual  Machine&lt;/span&gt;  &lt;/li&gt;&lt;li&gt;&lt;span style="font-size:85%;"&gt;&lt;strong&gt;/usr/lib/vmware/bin/vmkload_app -k 9  &lt;pid&gt;&lt;/pid&gt;&lt;/strong&gt;&lt;/span&gt;  &lt;/li&gt;&lt;li&gt;&lt;span style="font-size:85%;"&gt;Check the vm state and try to start again.  This didn't work  for us.  Moving on:&lt;/span&gt;&lt;/li&gt;&lt;/ul&gt; &lt;/li&gt;&lt;li&gt;&lt;span style="font-size:85%;"&gt;Now let's work through the kernel instead of Red Hat.  So, you  can check the vmid of the machine to kill by running &lt;strong&gt;vm-support -x  &lt;/strong&gt;(small x)&lt;/span&gt;  &lt;/li&gt;&lt;li&gt;&lt;span style="font-size:85%;"&gt;Kill the virtual machine (while generating core dumps and logs)  by running: &lt;strong&gt;vm-support -X &lt;vmid&gt; &lt;/vmid&gt;&lt;/strong&gt;(capital X this  time)&lt;/span&gt;  &lt;ul&gt;&lt;li&gt;&lt;span style="font-size:85%;"&gt;This would have worked for us, however, it ran us out of space  on the local ESX partition!&lt;/span&gt;  &lt;/li&gt;&lt;li&gt;&lt;span style="font-size:85%;"&gt;To fix, we created an NFS share on our NAS unit and our intent  was to point it to this instead.  To do that we had to connect to the ESX host  using the GUI VI Client, and &lt;em&gt;Enable NFS CLIENT in the firewall  rules&lt;/em&gt;.&lt;/span&gt;  &lt;/li&gt;&lt;li&gt;&lt;span style="font-size:85%;"&gt;We had to clean up our dumps first to free up space by running:  &lt;strong&gt;rm -rf vm-support-pesx01-2008-01-25--15.15.4008/&lt;/strong&gt;&lt;/span&gt;  &lt;/li&gt;&lt;li&gt;&lt;span style="font-size:85%;"&gt;&lt;strong&gt;cd /mnt&lt;/strong&gt;&lt;/span&gt;  &lt;/li&gt;&lt;li&gt;&lt;span style="font-size:85%;"&gt;&lt;strong&gt;mkdir /nfs-temp&lt;/strong&gt;&lt;/span&gt;  &lt;/li&gt;&lt;li&gt;&lt;span style="font-size:85%;"&gt;&lt;strong&gt;mount nas01.blah.local:/nfs-temp  /mnt/nfs-temp&lt;/strong&gt;&lt;/span&gt;  &lt;/li&gt;&lt;li&gt;&lt;span style="font-size:85%;"&gt;&lt;strong&gt;cd /mnt/nfs-temp&lt;/strong&gt;&lt;/span&gt;  &lt;/li&gt;&lt;li&gt;&lt;span style="font-size:85%;"&gt;&lt;strong&gt;vm-support -X &lt;vmid&gt;&lt;/vmid&gt;&lt;/strong&gt; (this can run for  hours, but for us it was about 15 min)&lt;/span&gt;&lt;/li&gt;&lt;/ul&gt; &lt;/li&gt;&lt;li&gt;&lt;span style="font-size:85%;"&gt;At this point, you can check to see if the lock is gone.  Run  the following command again: &lt;strong&gt;vmware-cmd  /vmfs/volumes/path-to-vm-directory/server.vmx getstate&lt;/strong&gt;&lt;/span&gt;  &lt;/li&gt;&lt;li&gt;&lt;span style="font-size:85%;"&gt;If your problem machine is &lt;em&gt;&lt;strong&gt;NOT&lt;/strong&gt;&lt;/em&gt; listed  here, &lt;em&gt;you will be able to successfully start the machine&lt;/em&gt;&lt;/span&gt;  &lt;/li&gt;&lt;li&gt;&lt;span style="font-size:85%;"&gt;&lt;strong&gt;If the machine is NOT listed, run: vmware-cmd  /vmfs/volumes/path-to-vm-directory/server.vmx start&lt;/strong&gt;&lt;/span&gt;  &lt;/li&gt;&lt;li&gt;&lt;span style="font-size:85%;"&gt;Now, the machine started for us, however, we lost the ability  to manage the machine via Virtual Center.  We &lt;em&gt;could&lt;/em&gt; however, manage it  directly using the VI client and conneting directly to the ESX host using root.   To fix this problem you need to restart two daemons.  The first is responsible  for communicating directly to the VI client, the next is the daemon responsible  for connecting ESX to Virtual Center.  &lt;/span&gt; &lt;ul&gt;&lt;li&gt;&lt;span style="font-size:85%;"&gt;To restart the daemon that talks to the VI client directly:  &lt;strong&gt;service mgmt-vmware restart&lt;/strong&gt;&lt;/span&gt;  &lt;/li&gt;&lt;li&gt;&lt;span style="font-size:85%;"&gt;To restart the daemon that talks to Virtual Center:  &lt;strong&gt;service vmware-vpxa restart&lt;/strong&gt;&lt;/span&gt;&lt;/li&gt;&lt;/ul&gt;&lt;/li&gt;&lt;/ul&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/151789648433871658-2999392678890065845?l=chrplunk.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://chrplunk.blogspot.com/feeds/2999392678890065845/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=151789648433871658&amp;postID=2999392678890065845' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/151789648433871658/posts/default/2999392678890065845'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/151789648433871658/posts/default/2999392678890065845'/><link rel='alternate' type='text/html' href='http://chrplunk.blogspot.com/2008/01/starting-stuck-virtual-machine-in-esx-3.html' title='Starting a stuck virtual machine in ESX 3'/><author><name>chrplunk</name><uri>http://www.blogger.com/profile/16009472756469833389</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://3.bp.blogspot.com/_8WReXMmzvS0/SrzSTPr0DVI/AAAAAAAAOJc/Ai5Q1IPV978/S220/me.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-151789648433871658.post-3930541079376689089</id><published>2008-01-23T12:31:00.000-05:00</published><updated>2008-02-07T10:28:33.039-05:00</updated><title type='text'>"The Man" blocking your websurfing at work?  You want to surf the web using a 100% secure channel?  Here's the way around it that will always work:</title><content type='html'>&lt;span style="font-size:85%;"&gt;&lt;span style="font-family:verdana;"&gt;This technique is used to by-pass Websense at any onsite engagement or public internet cafe that is looking at and/or filtering outgoing http traffic.  With this scenario I outline below, you are immune from prying eyes.  You should be an advanced user to even attempt this but it's not hard to do. This is not only handy in a work environment but if you are in an Internet café or a public network and you want to surf all http traffic encrypted. &lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family:verdana;"&gt;On my Ubuntu box at home, I set up the SSH daemon to listen on port 443 instead of 22 by editing /etc/ssh/sshd_config.  I did this because traffic on port 443 is assumed always to be http SSL web traffic, which is encrypted.  This way, a good admin with a sniffer would not be alarmed to see secure TCP conversations on that port but might wonder why port 22 is going outbound if you didn’t change it from the default. &lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family:verdana;"&gt;Next, on my Vista laptop, I set up a PuTTY session to tunnel to my home Ubuntu box; you set the port number you want PuTTY to listen on as Dynamic. I used 8080 but you can use anything really.  So, it looks like this on the tunnel tab: D8080.  You don't have to specify a target IP or host like you normally would.  This basically sets up a secure SOCKS proxy tunnel.  &lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:verdana;"&gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size:85%;"&gt;&lt;br /&gt;&lt;span style="font-family:verdana;"&gt;Laptop at Home: &lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:verdana;"&gt;if you do a netstat -an, it shows that now PuTTY process has opened a secure TCP channel on port 443 from my work laptop to home.  But so what?  Nothing is happening yet other than a secure socket has been established.&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family:verdana;"&gt;Separately, it also shows PuTTY is listening on localhost 8080, ready to fwd SOCKS traffic over this SSH tunnel.&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:verdana;"&gt; &lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:verdana;"&gt;So then you config IE to use proxy localhost:8080 &lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family:verdana;"&gt;IE fires up, and sends all http requests to the PuTTY process on localhost:8080 which promptly forwards it over SSH protocol on the SSL port (so sneaky).&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family:verdana;"&gt;To test all you need to do is go to whatismyip.org or a similar site and it should show your HOME IP as opposed to your work/public network IP now.  &lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family:verdana;"&gt;Surf a few webpages and now netstat -a looks completely different!&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/151789648433871658-3930541079376689089?l=chrplunk.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://chrplunk.blogspot.com/feeds/3930541079376689089/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=151789648433871658&amp;postID=3930541079376689089' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/151789648433871658/posts/default/3930541079376689089'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/151789648433871658/posts/default/3930541079376689089'/><link rel='alternate' type='text/html' href='http://chrplunk.blogspot.com/2008/01/man-blocking-your-websurfing-at-work.html' title='&quot;The Man&quot; blocking your websurfing at work?  You want to surf the web using a 100% secure channel?  Here&apos;s the way around it that will always work:'/><author><name>chrplunk</name><uri>http://www.blogger.com/profile/16009472756469833389</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://3.bp.blogspot.com/_8WReXMmzvS0/SrzSTPr0DVI/AAAAAAAAOJc/Ai5Q1IPV978/S220/me.jpg'/></author><thr:total>0</thr:total></entry></feed>
