<?xml version="1.0"?>
<?xml-stylesheet type="text/xsl" href="RSSFeed.xsl"?>
<rss version="2.0">
     <channel>
          <title>Rob Nowiks SharePoint Blog</title>
          <description>Rob Nowiks SharePoint Blog</description>
          <link>http://rnowik.com/</link>
          <lastBuildDate>01/08/2010 04:21:49</lastBuildDate>
          <generator>Rob Nowiks Blog</generator>
          <item>
               <title>SharePoint 2010 Exams</title>
               <description>&lt;p&gt;I’ve just passed the following exams:&lt;/p&gt;  &lt;p&gt;TS 70-667 Microsoft SharePoint 2010, Configuring (score 800)&lt;/p&gt;  &lt;p&gt;PRO 70-668 Microsoft SharePoint 2010, Administrator (score 815)&lt;/p&gt;  &lt;p&gt;TS 70-573 Microsoft SharePoint 2010, Application Development (score 815)&lt;/p&gt;  &lt;p&gt;PRO 70-576 Designing and Developing Microsoft SharePoint 2010 Applications (score 887)&lt;/p&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;p&gt;Not quite as easy as I thought they’d be though!&lt;/p&gt;</description>
               <link>http://rnowik.com/SharePoint-2010-Exams.aspx</link>
               <author>Rob Nowik</author>
               <pubDate>30/07/2010 00:51:00</pubDate>
          </item>
          <item>
               <title>SharePoint 2010: Some notes on Execadmsvcjobs / Start-SPAdminService</title>
               <description>&lt;p&gt;&lt;strong&gt;[Disclaimer: This article is a work in progress and may not be 100% accurate]&lt;/strong&gt;&lt;/p&gt;  &lt;h3&gt;Background&lt;/h3&gt;  &lt;p&gt;When developing SharePoint solutions, it is common to script deployment of artefacts (i.e. wsps, features, content etc) so that frequent deployment and uninstallation of builds can occur across environments. One of the most common steps in our scripts is to retract then delete wsp files.  Retracting of wsps happens via an admin job, hence if our scripts tried to delete straight after a retract command, they would fail (as the retract job hasn’t completed). In 2007, we called stsadm –o execadmsvcjobs between retract and delete to overcome this. In SharePoint 2010, the behaviour has changed so the following must be considered. &lt;/p&gt;  &lt;h3&gt;Behaviour&lt;/h3&gt;  &lt;ul&gt;   &lt;li&gt;Stsadm –o execadmsvcjobs is effectively an alias of the Powershell Start-SPAdminJob command. &lt;/li&gt;    &lt;li&gt;Stsadm –o execadmsvcjobs / start-spadminjob only executes (synchronously) if the SharePoint Administration Service is not started on the server on which you are executing the command. If this service is running, then the admin jobs will be executed according to schedule and you will get the error “Start-SPAdminJob : The administration service is running so all administration jobs will be run in the timer service.”. This is a change in behaviour from 2007.&lt;/li&gt;    &lt;li&gt;Stsadm –o execadmsvcjobs / start-spadminjob only forces timer jobs to execute on an individual server in a farm (hence needs to be run on all farm nodes). In 2007 the documentation indicated that this only needed to be run on one server (provided that the admin service was running for all nodes in the farm). Investigating the code and speaking to individuals, it looks like the 2007 documentation may be misleading, and actually in 2007 execadmsvcjobs needed to be run on all nodes. &lt;a href="http://technet.microsoft.com/en-us/library/cc288149(office.12).aspx"&gt;http://technet.microsoft.com/en-us/library/cc288149(office.12).aspx&lt;/a&gt;. See also  &lt;a href="http://technet.microsoft.com/en-us/library/ee513051.aspx"&gt;http://technet.microsoft.com/en-us/library/ee513051.aspx&lt;/a&gt; . It looks like for 2007 stsadm –o execadmsvcjobs only worked in the above scenario by co-incidence (i.e. running on one WFE doesn’t implicitly force it to run on all WFEs). I have not confirmed this, but there may be difference in behaviour depending on whether a solution is web app or farm scoped (i.e. if webapp scoped, timer jobs are created on each WFE, but this may not be the case if not farm scoped). &lt;/li&gt; &lt;/ul&gt;  &lt;p&gt;The process when execadmsvcjobs / start-spadminjob runs is as follows:&lt;/p&gt;  &lt;ol&gt;   &lt;li&gt;When start-spadminjob / execadmsvcjobs runs, it iterates through all job definitions on the local server and gets a list of outstanding SPAdministrationServiceJobDefinitions. &lt;/li&gt;    &lt;li&gt;These matching job definitions are then iterated through and the jobs concrete implementation of “Execute” is called (based on the Virtual “Execute” method in the SPJobDefinition class)&lt;/li&gt;    &lt;li&gt;In the case of SPSolutionDeploymentJobDefinition (execute method), files are deployed to / removed from the local server only when running the job. &lt;/li&gt; &lt;/ol&gt;  &lt;h3&gt;Options&lt;/h3&gt;  &lt;p&gt;To ensure that admin jobs run synchronously, we therefore have the following options (other than disabling the admin service)&lt;/p&gt;  &lt;ul&gt;   &lt;li&gt;Do a simple thread.sleep. This obviously does not guarantee that a job has finished execution&lt;/li&gt;    &lt;li&gt;Wait until the SPRunningJobs collection returns empty&lt;/li&gt;    &lt;li&gt;Check SPHistoryEntries to see if the solution job finished running&lt;/li&gt; &lt;/ul&gt;  &lt;p&gt;Also, to ensure that all jobs execute on all nodes in the farm, you could run some code such as…&lt;/p&gt;  &lt;ul&gt;   &lt;li&gt;Gets the Timer Service – e.g. SPTimerService timerService = LocalFarm.TimerService&lt;/li&gt;    &lt;li&gt;Get the admin job definition via SPJobDefinition job = timerService.JobDefinitions[]&lt;/li&gt;    &lt;li&gt;Iterate through the server in the farm via SPServer server = LocalFarm.Servers&lt;/li&gt;    &lt;li&gt;Call job.Execute(server.Id) to execute the job on each server. NB. From what I understand, calling the Execute method directly in code is not advise. In 2010 there is a new function called RunNow() however, I don’t think this exhibits synchronous behaviour. &lt;b&gt;&lt;/b&gt;&lt;/li&gt; &lt;/ul&gt;  &lt;p&gt;&lt;b&gt;&lt;/b&gt;&lt;/p&gt;  &lt;p&gt;Thanks to Kashif Tahir for his input with this.&lt;/p&gt;</description>
               <link>http://rnowik.com/SharePoint-2010-Some-notes-on-Execadmsvcjobs-Start-SPAdminService.aspx</link>
               <author>Rob Nowik</author>
               <pubDate>07/07/2010 22:02:00</pubDate>
          </item>
          <item>
               <title>SharePoint Patterns and Practices</title>
               <description>&lt;p&gt;Some links for SharePoint development patterns and practices guidance…&lt;/p&gt;  &lt;p&gt;On MSDN: &lt;a href="http://www.microsoft.com/spg"&gt;http://www.microsoft.com/spg&lt;/a&gt;    &lt;br /&gt;On CodePlex: &lt;a href="http://spg.codeplex.com/"&gt;http://spg.codeplex.com/&lt;/a&gt;&lt;/p&gt;</description>
               <link>http://rnowik.com/SharePoint-Patterns-and-Practices.aspx</link>
               <author>Rob Nowik</author>
               <pubDate>07/07/2010 12:09:02</pubDate>
          </item>
          <item>
               <title>SharePoint: Powershell SPWebConfigModification</title>
               <description>&lt;p&gt;Below is some powershell to add a web.config modification using the SPWebConfigModification class.&lt;/p&gt;  &lt;p&gt;Note that there are a couple of interesting things in this powershell&lt;/p&gt;  &lt;ol&gt;   &lt;li&gt;Calling a generic method&lt;/li&gt;    &lt;li&gt;Using an enum&lt;/li&gt; &lt;/ol&gt;  &lt;p&gt;Note that the example below denies all users access to sharepoint. It should really be used in conjuction with another node that adds a user / group to give access to sharepoint. &lt;/p&gt;  &lt;p&gt;&lt;font size="1" face="Courier New"&gt;Add-PSSnapin &amp;quot;Microsoft.SharePoint.Powershell&amp;quot;     &lt;br /&gt;[void][System.Reflection.Assembly]::Load(&amp;quot;Microsoft.SharePoint, Version=14.0.0.0, Culture=neutral, PublicKeyToken=71e9bce111e9429c&amp;quot;) &lt;/font&gt;&lt;/p&gt;  &lt;p&gt;&lt;font size="1" face="Courier New"&gt;$url = &amp;quot;&lt;/font&gt;&lt;a href="http://localhost/&amp;quot;"&gt;&lt;font size="1" face="Courier New"&gt;http://localhost/&amp;quot;&lt;/font&gt;&lt;/a&gt;    &lt;br /&gt;&lt;font size="1" face="Courier New"&gt;$modName = &amp;quot;deny&amp;quot;     &lt;br /&gt;$modXPath = &amp;quot;configuration/system.web/authorization&amp;quot;      &lt;br /&gt;$modValue = &amp;quot;&amp;lt;deny users=`&amp;quot;*`&amp;quot;&amp;gt;&amp;quot; &lt;/font&gt;&lt;/p&gt;  &lt;p&gt;&lt;font size="1" face="Courier New"&gt;$site = New-Object Microsoft.SharePoint.SPSite($url)     &lt;br /&gt;$webApp = $site.WebApplication;      &lt;br /&gt;$webApp.WebConfigModifications.Clear();       &lt;br /&gt;$method = [Microsoft.Sharepoint.Administration.SPServiceCollection].GetMethod(&amp;quot;GetValue&amp;quot;, [Type]::EmptyTypes)      &lt;br /&gt;$closedMethod = $method.MakeGenericMethod([Microsoft.SharePoint.Administration.SPWebService])      &lt;br /&gt;$webService = $closedMethod.Invoke($webApp.Farm.Services, [Type]::EmptyTypes) &lt;/font&gt;&lt;/p&gt;  &lt;p&gt;&lt;font size="1" face="Courier New"&gt;$mod = New-Object Microsoft.SharePoint.Administration.SPWebConfigModification($modName, $modXPath)     &lt;br /&gt;$mod.Value = $modValue;       &lt;br /&gt;$mod.Type = [Microsoft.SharePoint.Administration.SPWebConfigModification+SPWebConfigModificationType]::EnsureChildNode      &lt;br /&gt;$mod.Sequence = 0      &lt;br /&gt;$webService.WebConfigModifications.Add($mod) &lt;/font&gt;&lt;/p&gt;  &lt;p&gt;&lt;font size="1" face="Courier New"&gt;$webService.Update()     &lt;br /&gt;$webService.ApplyWebConfigModifications()      &lt;br /&gt;$site.Dispose()&lt;/font&gt;&lt;/p&gt;</description>
               <link>http://rnowik.com/SharePoint-Powershell-SPWebConfigModification.aspx</link>
               <author>Rob Nowik</author>
               <pubDate>21/05/2010 19:49:14</pubDate>
          </item>
          <item>
               <title>SharePoint 2010: Stsadm to PowerShell Mappings</title>
               <description>&lt;p&gt;Just a quick note – here’s a comparison of stsadm commands to Powershell commandlets in SharePoint 2010. &lt;a title="http://technet.microsoft.com/en-us/library/ff621084(office.14).aspx" href="http://technet.microsoft.com/en-us/library/ff621084(office.14).aspx"&gt;http://technet.microsoft.com/en-us/library/ff621084(office.14).aspx&lt;/a&gt;&lt;/p&gt;</description>
               <link>http://rnowik.com/SharePoint-2010-Stsadm-to-PowerShell-Mappings.aspx</link>
               <author>Rob Nowik</author>
               <pubDate>30/04/2010 11:20:25</pubDate>
          </item>
          <item>
               <title>Pex &amp;amp; Moles with SharePoint &amp;ndash; A Quick Example</title>
               <description>&lt;p&gt;I recently demoed moles against the SharePoint 2007 object model. I demoed testing a contrived method that simple returned true if the number of items in a SharePoint list was greater than 20. Code is below…&lt;/p&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;p&gt;&lt;font size="1" face="Courier New"&gt;private const int ItemsPerPage = 10;&lt;/font&gt;&lt;/p&gt;  &lt;p&gt;&lt;font size="1" face="Courier New"&gt;&lt;/font&gt;&lt;/p&gt;  &lt;p&gt;&lt;font size="1" face="Courier New"&gt;public bool ShowPagination()     &lt;br /&gt;{      &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; using (SPSite siteCollection = new SPSite(&amp;quot;&lt;/font&gt;&lt;a href="http://example.local&amp;quot;))"&gt;&lt;font size="1" face="Courier New"&gt;http://example.local&amp;quot;))&lt;/font&gt;&lt;/a&gt;    &lt;br /&gt;&lt;font size="1" face="Courier New"&gt;&amp;#160;&amp;#160;&amp;#160; {     &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; using (SPWeb web = siteCollection.OpenWeb())      &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; {      &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; SPList list = web.Lists[&amp;quot;MyList&amp;quot;]; &lt;/font&gt;&lt;/p&gt;  &lt;p&gt;&lt;font size="1" face="Courier New"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; if (list.ItemCount &amp;gt; ItemsPerPage)     &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; {      &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; return true;      &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; }      &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; }      &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; } &lt;/font&gt;&lt;/p&gt;  &lt;p&gt;&lt;font size="1" face="Courier New"&gt;&amp;#160;&amp;#160;&amp;#160; return false;     &lt;br /&gt;}&lt;/font&gt;&lt;/p&gt;  &lt;p&gt;This is a difficult method to test, as you cannot mock out the SharePoint OM code (as it’s not written to an interface etc). As you are tied to SharePoint, you would need to alter the SharePoint list to test boundary conditions. This is where moles come in…&lt;/p&gt;  &lt;p&gt;I generated a mole dll against the Microsoft.SharePoint dll in my test project, and was then able to intercept SharePoint OM calls via lambdas. The example below illustrates a test that force the value of the list.ItemCount to return a known value. Note that in my test, the SharePoint OM was not called, instead only the Mole classes were called (via a detour). &lt;/p&gt;  &lt;p&gt;&lt;font size="1" face="Courier New"&gt;[TestMethod]     &lt;br /&gt;[HostType(&amp;quot;Moles&amp;quot;)]      &lt;br /&gt;public void ShowPaginationReturnsFalseWhenLessThanTenItems()      &lt;br /&gt;{      &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; // Arrange &lt;/font&gt;&lt;/p&gt;  &lt;p&gt;&lt;font size="1" face="Courier New"&gt;&amp;#160;&amp;#160;&amp;#160; // Use initilizers and lamdba functions to set up moles     &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; // Only &amp;quot;mole&amp;quot; functionality that is used by code      &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; MSPSite.ConstructorString = (site, url) =&amp;gt; new MSPSite(site)      &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; {      &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; OpenWeb = () =&amp;gt; new MSPWeb      &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; {      &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; ListsGet = () =&amp;gt; new MSPListCollection      &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; {      &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; ItemGetString = id =&amp;gt; new MSPList      &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; {      &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; ItemCountGet = () =&amp;gt; 9      &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; }      &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; },      &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; Dispose = () =&amp;gt; { }      &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; }, &lt;/font&gt;&lt;/p&gt;  &lt;p&gt;&lt;font size="1" face="Courier New"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; Dispose = () =&amp;gt; { }     &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; }; &lt;/font&gt;&lt;/p&gt;  &lt;p&gt;&lt;font size="1" face="Courier New"&gt;&amp;#160;&amp;#160;&amp;#160; // Act     &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; TableLogic tableLogic = new TableLogic();      &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; bool showPagination = tableLogic.ShowPagination(); &lt;/font&gt;&lt;/p&gt;  &lt;p&gt;&lt;font size="1" face="Courier New"&gt;&amp;#160;&amp;#160;&amp;#160; // Assert     &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; Assert.IsTrue(showPagination == false, &amp;quot;The page will be paginated&amp;quot;);      &lt;br /&gt;}&lt;/font&gt;&lt;/p&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;p&gt;&lt;a title="http://research.microsoft.com/en-us/projects/pex/" href="http://research.microsoft.com/en-us/projects/pex/"&gt;http://research.microsoft.com/en-us/projects/pex/&lt;/a&gt;&lt;/p&gt;</description>
               <link>http://rnowik.com/Pex-amp-Moles-with-SharePoint-ndash-A-Quick-Example.aspx</link>
               <author>Rob Nowik</author>
               <pubDate>27/04/2010 18:33:48</pubDate>
          </item>
          <item>
               <title>QuickNote: Activating PowerShell ISE on Server 2008 R2</title>
               <description>&lt;p&gt;To activate the PowerShell Integrated Scripting Environments on Windows Server 2008 R2 you need to add the feature as follows:&lt;/p&gt;  &lt;ol&gt;   &lt;li&gt;Start –&amp;gt; Server Manager&lt;/li&gt;    &lt;li&gt;Features –&amp;gt; Add Feature&lt;/li&gt;    &lt;li&gt;Select “Windows PowerShell ISE”&lt;/li&gt;    &lt;li&gt;Click next and install&lt;/li&gt;    &lt;li&gt;You should no see the PowerShell ISE shortcut under Start –&amp;gt; Programs –&amp;gt; Accessories –&amp;gt; PowerShell &lt;/li&gt; &lt;/ol&gt;</description>
               <link>http://rnowik.com/QuickNote-Activating-PowerShell-ISE-on-Server-2008-R2.aspx</link>
               <author>Rob Nowik</author>
               <pubDate>27/04/2010 18:20:57</pubDate>
          </item>
          <item>
               <title>SharePoint 2010: Provisioning a new site using a custom template</title>
               <description>&lt;p&gt;In SharePoint 2010, stps are no longer used. Instead site templates are saved as wsp files. &lt;/p&gt;  &lt;p&gt;To create a new site collection using one of these template through the UI, you need to create a site collection through central admin that has no template selected. Once completed, browse to the site collection. From here, you are prompted to select a template. Instead of doing this, click the link to &amp;quot;solution gallery&amp;quot; and Upload your wsp file (previously exported). Once complete, go back to the choose template screen (at the root of the site collection) and select you new template from the &amp;quot;custom&amp;quot; tab. &lt;/p&gt;  &lt;p&gt;&lt;img style="display: inline" title="ChooseTemplate" alt="ChooseTemplate" src="http://rnowik.com/images/SharePoint2010Provisioninganewsiteusinga_10356/ChooseTemplate_thumb.png" width="468" height="341" /&gt; &lt;/p&gt;  &lt;p&gt;Below is some powershell script that facilitates this... &lt;/p&gt;  &lt;p&gt;&lt;font size="1" face="Courier New"&gt;[void][System.Reflection.Assembly]::Load(&amp;quot;Microsoft.SharePoint, Version=14.0.0.0, Culture=neutral, PublicKeyToken=71e9bce111e9429c&amp;quot;)      &lt;br /&gt;New-SPSite -Url &amp;quot;&lt;/font&gt;&lt;a href="http://localhost:81/sites/robtest2&amp;quot;"&gt;&lt;font size="1" face="Courier New"&gt;http://localhost:81/sites/robtest2&amp;quot;&lt;/font&gt;&lt;/a&gt;&lt;font size="1" face="Courier New"&gt; -OwnerAlias &amp;quot;Administrator&amp;quot; -Description &amp;quot;Rob Test Site&amp;quot; -Name &amp;quot;Rob Test&amp;quot; -Language 1033      &lt;br /&gt;Add-SPUserSolution -LiteralPath &amp;quot;C:\Users\Administrator\Desktop\RobTestX.wsp&amp;quot; -Site &amp;quot;&lt;/font&gt;&lt;a href="http://localhost:81/sites/robtest2&amp;quot;"&gt;&lt;font size="1" face="Courier New"&gt;http://localhost:81/sites/robtest2&amp;quot;&lt;/font&gt;&lt;/a&gt;&lt;font size="1" face="Courier New"&gt;      &lt;br /&gt;Install-SPUserSolution -Identity &amp;quot;RobTestX.wsp&amp;quot; -Site &amp;quot;&lt;/font&gt;&lt;a href="http://localhost:81/sites/robtest2&amp;quot;"&gt;&lt;font size="1" face="Courier New"&gt;http://localhost:81/sites/robtest2&amp;quot;&lt;/font&gt;&lt;/a&gt;&lt;font size="1" face="Courier New"&gt;      &lt;br /&gt;$site = New-Object Microsoft.SharePoint.SPSite(&amp;quot;&lt;/font&gt;&lt;a href="http://localhost:81/sites/robtest2&amp;quot;)"&gt;&lt;font size="1" face="Courier New"&gt;http://localhost:81/sites/robtest2&amp;quot;)&lt;/font&gt;&lt;/a&gt;&lt;font size="1" face="Courier New"&gt;      &lt;br /&gt;$web = $site.OpenWeb();       &lt;br /&gt;$template = $web.GetAvailableWebTemplates(1033) | Where-Object {$_.Name -like &amp;quot;{*&amp;quot; }       &lt;br /&gt;$templateName = $template.Name       &lt;br /&gt;$web.ApplyWebTemplate($templateName)&lt;/font&gt;&lt;/p&gt;</description>
               <link>http://rnowik.com/SharePoint-2010-Provisioning-a-new-site-using-a-custom-template.aspx</link>
               <author>Rob Nowik</author>
               <pubDate>23/04/2010 18:28:33</pubDate>
          </item>
          <item>
               <title>Quicknote: Duplicate Menu Items in Visual Studio 2010</title>
               <description>&lt;p&gt;Recently I had a weird issue with Visual Studio 2010 where menu items where duplicated. To resolve this I ran the following:&lt;/p&gt;  &lt;p&gt;devenv.exe /safemode /setup from the command line. Once this ran, I restarted Visual Studio and normal behaviour was resumed! &lt;/p&gt;</description>
               <link>http://rnowik.com/Quicknote-Duplicate-Menu-Items-in-Visual-Studio-2010.aspx</link>
               <author>Rob Nowik</author>
               <pubDate>22/04/2010 21:08:50</pubDate>
          </item>
          <item>
               <title>Quicknote: Extending a VHD</title>
               <description>&lt;p&gt;Just a note as I’ve had to extend a fixed size VHD. I used &lt;a title="http://code.msdn.microsoft.com/vhdtool" href="http://code.msdn.microsoft.com/vhdtool"&gt;http://code.msdn.microsoft.com/vhdtool&lt;/a&gt; to expand the actual VHD file. This extending the partition, but did not extend the volume. To complete the process, I needed to boot the VHD and extend the volume (C:).&lt;/p&gt;  &lt;p&gt;As I wanted to extend my boot volume (C:), I could not extend onto this using Disk Management (from Computer Management). Instead I had to use the Diskpart tool (access via the command line when ran as Administrator). &lt;/p&gt;  &lt;p&gt;I then ran the following commands: &lt;/p&gt;  &lt;p&gt;diskpart (this takes you to the diskpart prompt). &lt;/p&gt;  &lt;p&gt;list disk    &lt;br /&gt;select disk 2     &lt;br /&gt;detail disk     &lt;br /&gt;select volume 3     &lt;br /&gt;detail volume     &lt;br /&gt;extend     &lt;br /&gt;detail volume&lt;/p&gt;  &lt;p&gt;Once complete, my fixed size VHD was expanded to&amp;#160; 60Gb&lt;/p&gt;  &lt;p&gt;Related link: &lt;/p&gt; &lt;a title="http://www.techotopia.com/index.php/Extending_and_Shrinking_Windows_Server_2008_Partitions_and_Volumes&amp;#13;&amp;#10;" href="http://www.techotopia.com/index.php/Extending_and_Shrinking_Windows_Server_2008_Partitions_and_Volumes"&gt;http://www.techotopia.com/index.php/Extending_and_Shrinking_Windows_Server_2008_Partitions_and_Volumes   &lt;br /&gt;&lt;/a&gt;</description>
               <link>http://rnowik.com/Quicknote-Extending-a-VHD.aspx</link>
               <author>Rob Nowik</author>
               <pubDate>22/04/2010 13:10:10</pubDate>
          </item>
     </channel>
</rss>