<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>betterITsolutions</title>
	<atom:link href="http://www.betteritsolutions.co.uk/?feed=rss2" rel="self" type="application/rss+xml" />
	<link>http://www.betteritsolutions.co.uk</link>
	<description>Fixing things just that little bit better...</description>
	<lastBuildDate>Wed, 01 Sep 2010 20:50:33 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.0.1</generator>
		<item>
		<title>Site Maintenance</title>
		<link>http://www.betteritsolutions.co.uk/?p=128</link>
		<comments>http://www.betteritsolutions.co.uk/?p=128#comments</comments>
		<pubDate>Wed, 01 Sep 2010 20:40:33 +0000</pubDate>
		<dc:creator>Mike</dc:creator>
				<category><![CDATA[Web Development]]></category>

		<guid isPermaLink="false">http://www.betteritsolutions.co.uk/?p=128</guid>
		<description><![CDATA[I have been busy tonight upgrading WordPress and the plugins I use on this site. The theme has been altered, too. If you notice anything majorly wrong with the site or would just like to provide some feedback on the changes then please leave a comment below &#8211; thanks!]]></description>
			<content:encoded><![CDATA[<p>I have been busy tonight upgrading WordPress and the plugins I use on this site. The theme has been altered, too. If you notice anything majorly wrong with the site or would just like to provide some feedback on the changes then please leave a comment below &#8211; thanks!</p>
]]></content:encoded>
			<wfw:commentRss>http://www.betteritsolutions.co.uk/?feed=rss2&amp;p=128</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>Install NVIDIA Display Drivers: Ubuntu 10.04, Sony VAIO F Series</title>
		<link>http://www.betteritsolutions.co.uk/?p=118</link>
		<comments>http://www.betteritsolutions.co.uk/?p=118#comments</comments>
		<pubDate>Mon, 26 Jul 2010 18:25:28 +0000</pubDate>
		<dc:creator>Mike</dc:creator>
				<category><![CDATA[Linux]]></category>

		<guid isPermaLink="false">http://www.betteritsolutions.co.uk/?p=118</guid>
		<description><![CDATA[I recently bought a Sony VAIO F Series laptop (VPCF11Z1E, to be precise). It has a GeForce GT 330M installed and I decided I wanted to dual boot with Ubuntu 10.04. I thought that enabling the 3D acceleration would be as simple as turning on the restricted driver, but I was sadly mistaken. Here&#8217;s how [...]]]></description>
			<content:encoded><![CDATA[<p>I recently bought a Sony VAIO F Series laptop (VPCF11Z1E, to be precise). It has a GeForce GT 330M installed and I decided I wanted to dual boot with Ubuntu 10.04. I thought that enabling the 3D acceleration would be as simple as turning on the restricted driver, but I was sadly mistaken. Here&#8217;s how to get it working.</p>
<p>Head over to the <a href="http://www.nvidia.co.uk/Download/index.aspx?lang=en-uk">download section on NVIDIA&#039;s web site</a> and obtain the appropriate driver. Place it somewhere you can easily find it; the Downloads folder in my home area worked fine for me. The way I got the driver installed was to (broadly speaking) following the instructions found in a <a href="http://ubuntuforums.org/showthread.php?p=9234321#post9234321">post on the Ubuntu Forums</a>, specifically <a href="http://ubuntuforums.org/showpost.php?p=9234321&amp;postcount=7">TheRawGod&#039;s post</a> (thanks <img src='http://www.betteritsolutions.co.uk/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' />  ).</p>
<p>First I blacklisted some drivers. To do this open a terminal and use the following commands. Note that I like to use vim (Vi&ndash;IMproved) but you will need to install this (sudo aptitude install vim). If you want something really straightforward, just use nano. I also tend to kick off with a sudo su so I can just do everything as root.</p>
<p><code><br />
sudo su<br />
cd /etc/modprobe.d/<br />
vim blacklist.conf<br />
</code></p>
<p>Add the following to the end of the file:</p>
<p><code><br />
blacklist vga16fb<br />
blacklist nouveau<br />
blacklist rivafb<br />
blacklist nvidiafb<br />
blacklist rivatv<br />
</code></p>
<div id="attachment_119" class="wp-caption alignnone" style="width: 457px"><img class="size-full wp-image-119 " src="http://www.betteritsolutions.co.uk/wp-content/uploads/2010/07/blacklist.png" alt="Drivers to blacklist" width="447" height="87" /><p class="wp-caption-text">Drivers to blacklist</p></div>
<p>Once completed, save the file. The next step is to update GRUB so it will prevent the nouveau driver from loading automatically at startup. To do this, perform the following:</p>
<p><code><br />
cd /etc/default<br />
vim grub<br />
</code></p>
<p>Now add GRUB_CMDLINE_LINUX=&#8221;nouveau.modeset=0&#8243; at the bottom of the file.</p>
<div id="attachment_122" class="wp-caption alignnone" style="width: 457px"><img class="size-full wp-image-122 " src="http://www.betteritsolutions.co.uk/wp-content/uploads/2010/07/disable_nouveau.png" alt="Disable nouveau driver" width="447" height="36" /><p class="wp-caption-text">Disable nouveau driver</p></div>
<p>Save the file and invoke update grub. Reboot and you should be presented with a horrible looking low-res login (which is good, for now!).</p>
<p>Next you will need to install the NVIDIA driver you downloaded earlier. Press Ctrl-Alt-F1 to bring up a Teletype terminal and login. Then run the following commands (replace the location for that of your download) to get the driver installed.</p>
<p><code><br />
sudo su<br />
service gdm stop<br />
cd /home/mike/Downloads<br />
sh NVIDIA-Linux-{driver version}.run<br />
</code></p>
<p>Follow the on&ndash;screen prompts to install the NVIDIA driver (just accept the defaults and always choose to continue). If you are told that you have an X server running and have definitely stopped gdm, try the following:</p>
<p><code><br />
rm /tmp/.X0-lock<br />
</code></p>
<p>Once the driver is installed, there is a final step to make sure the Sony display panel is properly recognised by NVIDIA&#039;s driver. Run the following commands:</p>
<p><code><br />
cd /etc/X11<br />
vim xorg.conf<br />
</code></p>
<p>Add the following lines to the bottom of the file, immediately before the &#8220;Display&#8221; SubSection:</p>
<p><code><br />
Option    "ConnectedMonitor" "DFP-0"<br />
Option    "CustomEDID" "DFP-0: /proc/acpi/video/NGFX/LCD/EDID"<br />
</code></p>
<p>Note that I originally added this to the end of the &#8220;Device&#8221; Section, but a subsequent reinstall of the NVIDIA driver after a kernel update caused it to be placed in the section referenced above.</p>
<div id="attachment_124" class="wp-caption alignnone" style="width: 413px"><img class="size-full wp-image-124 " src="http://www.betteritsolutions.co.uk/wp-content/uploads/2010/07/screen_section.png" alt="Edited Screen Section" width="403" height="130" /><p class="wp-caption-text">Edited Screen Section</p></div>
<p>Please remember that you will need to be root or use sudo to execute most of the above commands. I also found that after a kernel update, it is necessary to repeat the driver install from the point where I stop the Gnome Display Manager (run Ubuntu in low&ndash;graphics mode one time only, switch to a Teletype terminal, stop the Display Manager and reinstall the driver).</p>
]]></content:encoded>
			<wfw:commentRss>http://www.betteritsolutions.co.uk/?feed=rss2&amp;p=118</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>PowerShell SharePoint Site Collection Backup Script</title>
		<link>http://www.betteritsolutions.co.uk/?p=105</link>
		<comments>http://www.betteritsolutions.co.uk/?p=105#comments</comments>
		<pubDate>Sun, 14 Mar 2010 20:43:24 +0000</pubDate>
		<dc:creator>Mike</dc:creator>
				<category><![CDATA[2007]]></category>
		<category><![CDATA[3.0]]></category>
		<category><![CDATA[PowerShell]]></category>
		<category><![CDATA[SharePoint]]></category>
		<category><![CDATA[WSS]]></category>
		<category><![CDATA[Windows]]></category>

		<guid isPermaLink="false">http://www.betteritsolutions.co.uk/?p=105</guid>
		<description><![CDATA[I have been meaning to write a script in PowerShell to do SharePoint Site Collection backups for a while but not got round to it. I did do a quick and functional one at the tail end of last year, but it wasn&#39;t particularly elegant. This script I am much happier with: it will backup [...]]]></description>
			<content:encoded><![CDATA[<p>I have been meaning to write a script in PowerShell to do SharePoint Site Collection backups for a while but not got round to it. I did do a quick and functional one at the tail end of last year, but it wasn&#39;t particularly elegant. This script I am much happier with: it will backup all Site Collections at the specified Web Application and place them at the given location in a folder constructed from the day&#39;s date. It also writes to a log file and can clean up folders containing backups that are older than a predetermined number of days.</p>
<p>Simply copy the script below and save it to a .ps1 file of your choice. Please retain my comments at the top and, as always, use at your own risk! The deletion portion is quite destructive <img src='http://www.betteritsolutions.co.uk/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> . You may also have to set your Execution Policy to a less strict setting, such as RemoteSigned, e.g.:</p>
<p><code><br />
Set-ExecutionPolicy RemoteSigned<br />
</code></p>
<p>I have tested the script with Microsoft Office SharePoint Server 2007 SP2 and Windows SharePoint Services 3.0 SP2 running on Windows Server 2003 R2 SP2 (PowerShell 1.0). It should work fine for MOSS and WSS running on different Windows Server operating systems.</p>
<p>Here is the script:</p>
<pre style="width: 560px;overflow: scroll">
# SharePoint Site Collection Backup Script
# Author: Michael Cox
# Version: 1.0
# Date: March 2010
# Contact: http://www.betteritsolutions.co.uk/
# Use at own risk, please retain these comments

# Create alias for STSADM
Set-Alias -Name exeStsadm -Value ($Env:CommonProgramFiles + "\Microsoft Shared\Web Server Extensions\12\BIN\stsadm.exe") -Option Constant
# Specify maximum age in days for backup files
New-Variable -Name maxFileAge -Value 14 -Option Constant
# Get todays date, formatting as yyyyMMdd e.g. 20100224
New-Variable -Name todaysDate -Value (Get-Date -Format yyyyMMdd) -Option Constant
# Specify backup location and set log file location, folder must exist and be writable by account running script
New-Variable -Name backupLoc  -Value "S:\Backups" -Option Constant
New-Variable -Name logFileLoc -Value "$backupLoc\site_collection_backups.log" -Option Constant
# Specify Web Application
New-Variable -Name webApplication -Value "http://mossintranet/" -Option Constant

# Change to backup location and create folder, suppressing notification
Set-Location $backupLoc
New-Item $todaysDate -type directory | Out-Null
Set-Location $todaysDate

# Record backup start
Out-File -FilePath $logFileLoc -Append -InputObject $("Backup started at: " + (Get-Date -Format HH:mm` dd/MM/yyyy) + "`n")

# Enumerate Site Collections within chosen Web Application and store in a variable
[xml]$sitesXml = exeStsadm -o enumsites -url $webApplication

# Enumerates each site collection and performes an stsadm sitecollection backup against each site
$sitesXml.Sites.Site | ForEach-Object -Process {$backupFile = $_.Url.Replace('http://','').Replace('/','_') + ".bak"; exeStsadm -o backup -url $_.Url -filename $backupFile; Write-Host "Finished writing: $backupFile"; Out-File -FilePath $logFileLoc -Append -InputObject "Finished writing: $backupFile"}

# Remove folders that are older than the maxFileAge value
Set-Location $backupLoc
$tooOld = (Get-Date).addDays(-$maxFileAge)
Get-ChildItem | Where-Object {$_.PSIsContainer -and ($_.lastWriteTime -le $tooOld)} | ForEach-Object -Process {Remove-Item $_ -force -recurse; Write-Host "Folder $_ was deleted."; Out-File -FilePath $logFileLoc -Append -InputObject "Folder $_ was deleted."}

# Record backup end
Out-File -FilePath $logFileLoc -Append -InputObject $("`n" + "Backup ended at: " + (Get-Date -Format HH:mm` dd/MM/yyyy) + "`n")
</pre>
<p>Here is a screenshot of files created following a backup of a Web Application with two Site Collections and also the contents of the log file:</p>
<div id="attachment_108" class="wp-caption alignnone" style="width: 462px"><img src="http://www.betteritsolutions.co.uk/wp-content/uploads/2010/03/site_col_backup.gif" alt="Screenshot after running script" width="452" height="261" class="size-full wp-image-108" /><p class="wp-caption-text">Screenshot after running script</p></div>
<p>Please let me know if this is useful and also feel free to make suggestions for improvements or bug fixes, if you find any.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.betteritsolutions.co.uk/?feed=rss2&amp;p=105</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Windows XP AHCI Mode Install Hangs</title>
		<link>http://www.betteritsolutions.co.uk/?p=98</link>
		<comments>http://www.betteritsolutions.co.uk/?p=98#comments</comments>
		<pubDate>Sun, 10 Jan 2010 22:14:45 +0000</pubDate>
		<dc:creator>Mike</dc:creator>
				<category><![CDATA[Linux]]></category>
		<category><![CDATA[Windows]]></category>
		<category><![CDATA[XP]]></category>

		<guid isPermaLink="false">http://www.betteritsolutions.co.uk/?p=98</guid>
		<description><![CDATA[Recently I decided to reinstall Windows XP Pro on my home desktop. Yes, I know, Windows 7 is out and far superior but I have some music software that only runs well on XP as well as having already paid for XP&#8230; just bear with me! I won&#39;t go overboard, but here are the relevant [...]]]></description>
			<content:encoded><![CDATA[<p>Recently I decided to reinstall Windows XP Pro on my home desktop. Yes, I know, Windows 7 is out and far superior but I have some music software that only runs well on XP as well as having already paid for XP&#8230; just bear with me!</p>
<p>I won&#39;t go overboard, but here are the relevant technical details: ASUS P5B Deluxe motherboard with Intel ICH8R onboard SATA controller and 3 x 250GB SATA HDDs. I used to have two of these in RAID 0 (yes, I have backups) but I decided that the performance benefits vs. just sensibly placing things on different drives wasn&#39;t worth the extra risk. So, for my reinstall I would be moving from RAID mode in the BIOS to AHCI mode.</p>
<p>I backed up everything, flashed the BIOS with the latest version (good time to do it when I am reinstalling anyway), set all my settings and flipped the ICH8R to AHCI mode. As I expected, my old XP install no longer booted as it was configured for RAID mode with the appropriate driver. Linux coped fine, though <img src='http://www.betteritsolutions.co.uk/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> . I popped in the XP Pro SP2 CD, hit a key when prompted and watched the message: Setup is inspecting your computer&#39;s hardware configuration. After that, nothing. No chance to hit F6 or anything. Just a black screen. I even left it for ages in case it would finally realise it couldn&#39;t read the disks yet. No joy. Hmmm.</p>
<p>Basically, there seemed to be some issue with the fact that the setup CD could understand that there was an operating system installed but not properly read it and it was getting stuck. OK, no bother, whack in a Linux live CD and nuke the disks. In case you are interested, I like using badblocks in write mode but anything that destroys the partitions would do I expect.</p>
<p>Right, attempt number 2 (well actually a much higher number, but if you are reading this you don&#39;t need to follow my mistakes!): this time I get to the F6 prompt, add the AHCI driver from a floppy (drive hanging out of the side of the PC &ndash; why would I have a floppy drive on a modern PC?) and Windows sees the disks. Great! Actually, no. This time it sees 1 x 250GB disk and a 500GB disk that it cannot access (the old RAID array). Having selected AHCI in the BIOS and the AHCI driver this did surprise me. No problem, back in the BIOS and enable RAID then into the RAID BIOS and delete the array. Back in the BIOS again, enable AHCI.</p>
<p>Attempt number 3 and we have success! 3 x 250GB disks detected (after using the F6 option to add the driver) and I install Windows XP.</p>
<p>So in summary, if you want to reinstall Windows XP and go from one SATA controller mode to another, my tips would be:</p>
<ul>
<li>Break any RAID arrays in the RAID BIOS</li>
<li>Delete any existing partitions on your disks</li>
<li>Make the BIOS changes you require</li>
<li>Boot to the setup CD and slipstream the correct driver</li>
</ul>
<p></p>
<p>Simple when you know how! As an aside, I was installing from a SATA DVD drive and that caused no issues (I saw some people report that this is a problem). I know this wasn&#39;t part of the problem because I even had another &#39;donor&#39; machine next to my desktop at one point so I could try installing from an IDE optical drive&#8230;</p>
]]></content:encoded>
			<wfw:commentRss>http://www.betteritsolutions.co.uk/?feed=rss2&amp;p=98</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Install VMware Tools on Windows Server 2008 R2 Core</title>
		<link>http://www.betteritsolutions.co.uk/?p=91</link>
		<comments>http://www.betteritsolutions.co.uk/?p=91#comments</comments>
		<pubDate>Thu, 03 Dec 2009 17:51:09 +0000</pubDate>
		<dc:creator>Mike</dc:creator>
				<category><![CDATA[Server 2008]]></category>
		<category><![CDATA[VMware]]></category>
		<category><![CDATA[Windows]]></category>

		<guid isPermaLink="false">http://www.betteritsolutions.co.uk/?p=91</guid>
		<description><![CDATA[I was surprised to discover that it&#39;s very easy to install the VMware Tools on Windows Server 2008 R2 Core today. Simply select the VM in VMware Infrastructure Web Access (assuming you are using VMware Server 2, if not use the appropriate interface) and click the Install VMware Tools link. The iso won&#39;t autorun, but [...]]]></description>
			<content:encoded><![CDATA[<p>I was surprised to discover that it&#39;s very easy to install the VMware Tools on Windows Server 2008 R2 Core today. Simply select the VM in VMware Infrastructure Web Access (assuming you are using VMware Server 2, if not use the appropriate interface) and click the Install VMware Tools link. The iso won&#39;t autorun, but all you have to do is change to the virtual CD&ndash;ROM drive within the VM (probably D:) and run:</p>
<p><code><br />
msiexec /i "VMware Tools64.msi"<br />
</code></p>
<div id="attachment_94" class="wp-caption alignnone" style="width: 535px"><img src="http://www.betteritsolutions.co.uk/wp-content/uploads/2009/12/vmware_tools_scaled.png" alt="VMware Tools Installed" width="525" height="415" class="size-full wp-image-94" /><p class="wp-caption-text">VMware Tools Installed</p></div>
]]></content:encoded>
			<wfw:commentRss>http://www.betteritsolutions.co.uk/?feed=rss2&amp;p=91</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>Search Server Express 2008 Requires SP2 on Windows Server 2008 R2</title>
		<link>http://www.betteritsolutions.co.uk/?p=85</link>
		<comments>http://www.betteritsolutions.co.uk/?p=85#comments</comments>
		<pubDate>Mon, 30 Nov 2009 22:23:13 +0000</pubDate>
		<dc:creator>Mike</dc:creator>
				<category><![CDATA[2008]]></category>
		<category><![CDATA[3.0]]></category>
		<category><![CDATA[Search Server]]></category>
		<category><![CDATA[Server 2008]]></category>
		<category><![CDATA[WSS]]></category>
		<category><![CDATA[Windows]]></category>

		<guid isPermaLink="false">http://www.betteritsolutions.co.uk/?p=85</guid>
		<description><![CDATA[I recently installed Windows SharePoint Services (WSS) 3.0 with SP2 on Windows Server 2008 R2, with the intention of adding Search Server Express 2008 for enterprise search functionality. However, when I tried to run the Search Server install I was greeted with the following unfriendly message: After some digging around and Googling, I discovered that [...]]]></description>
			<content:encoded><![CDATA[<p>I recently installed Windows SharePoint Services (WSS) 3.0 with SP2 on Windows Server 2008 R2, with the intention of adding Search Server Express 2008 for enterprise search functionality. However, when I tried to run the Search Server install I was greeted with the following unfriendly message:</p>
<div id="attachment_87" class="wp-caption alignnone" style="width: 490px"><img src="http://www.betteritsolutions.co.uk/wp-content/uploads/2009/11/program_blocked1.png" alt="Program Compatibility Assistant" width="480" height="232" class="size-full wp-image-87" /><p class="wp-caption-text">Program Compatibility Assistant</p></div>
<p>After some digging around and Googling, I discovered that Search Server wouldn&#8217;t install on Server 2008 R2 without Service Pack 2. Unfortunately, it doesn&#39;t appear possible (at this time) to download it with SP2 so what do you do? I did a little experimenting and found out that you can slipstream the <a href="http://www.microsoft.com/downloads/details.aspx?FamilyId=B7816D90-5FC6-4347-89B0-A80DEB27A082&amp;displaylang=en">The 2007 Microsoft Office Servers Service Pack 2 (SP2)</a> into the install. Note that the download page actually specifies the service pack will update Search Server. Here&#39;s how to slipstream it:</p>
<ol>
<li>Open a command prompt, navigate to the location of the file <code>SearchServerExpress.exe</code> and run <code>SearchServerExpress.exe /extract:SearchServer</code>. This extracts (but doesn&#39;t install) Search Server Express to the folder <code>SearchServer</code>.</li>
<li>Download the 2007 Microsoft Office Servers Service Pack 2 to the same location as the install file for Search Server Express.</li>
<li>From the same command window, run <code>officeserver2007sp2-kb953334-x64-fullfile-en-us.exe /extract:SearchServer\Updates</code> (you will have downloaded the 64&ndash;bit version as Windows Server 2008 R2 is 64&ndash;bit only). This extracts the service pack files into the Updates folder of the Search Server install.</li>
<li>Run <code>setup.exe</code> from within the <code>SearchServer</code> folder</li>
</ol>
<p>&nbsp;</p>
<p>You should find that the Search Server install now runs happily without complaining and pauses for a period of time to apply updates towards the end of the process.</p>
<p>Happy searching!</p>
]]></content:encoded>
			<wfw:commentRss>http://www.betteritsolutions.co.uk/?feed=rss2&amp;p=85</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Install PowerShell on Windows Server 2008 R2 Core</title>
		<link>http://www.betteritsolutions.co.uk/?p=78</link>
		<comments>http://www.betteritsolutions.co.uk/?p=78#comments</comments>
		<pubDate>Wed, 18 Nov 2009 18:17:08 +0000</pubDate>
		<dc:creator>Mike</dc:creator>
				<category><![CDATA[PowerShell]]></category>
		<category><![CDATA[Server 2008]]></category>
		<category><![CDATA[Windows]]></category>

		<guid isPermaLink="false">http://www.betteritsolutions.co.uk/?p=78</guid>
		<description><![CDATA[Today I installed Windows Server 2008 R2 Standard Core, expecting to be presented with PowerShell. Wrong. I was presented with good old cmd.exe. It took me a while to find this information, so I thought I&#39;d blog it here. To install PowerShell, you need to run the following commands: DISM /Online /Enable-Feature /FeatureName:NetFx2&#8211;ServerCore DISM /Online [...]]]></description>
			<content:encoded><![CDATA[<p>Today I installed Windows Server 2008 R2 Standard Core, expecting to be presented with PowerShell. Wrong. I was presented with good old cmd.exe. It took me a while to find this information, so I thought I&#39;d blog it here. To install PowerShell, you need to run the following commands:</p>
<p><code><br />
DISM /Online /Enable-Feature /FeatureName:NetFx2&ndash;ServerCore<br />
DISM /Online /Enable-Feature /FeatureName:MicrosoftWindowsPowerShell<br />
</code></p>
<p>Now you can launch <code>powershell.exe</code> from <code>C:\Windows\System32\WindowsPowerShell\v1.0</code>. Although the path would suggest PowerShell 1.0, a quick <code>Get-Host</code> indicates PowerShell 2.0:</p>
<div id="attachment_81" class="wp-caption alignnone" style="width: 542px"><img src="http://www.betteritsolutions.co.uk/wp-content/uploads/2009/11/get-host.png" alt="Get-Host output" width="532" height="264" class="size-full wp-image-81" /><p class="wp-caption-text">Get-Host output</p></div>
<p>A little more about DISM, for those that are interested. DISM is the &quot;Deployment Image Servicing and Management tool&quot; and can be used to perform various configuration tasks on offline or running images. Hence the /Online switch is used to tell DISM it must target the running operating system. The following command will list all features and their status (suggest you pipe it through more):</p>
<p><code><br />
DISM /Online /Get-Features | more<br />
</code></p>
<p>Note that PowerShell requires .NET Framework 2.0, hence the first DISM command.</p>
<p>Thanks to Vincent Hu for his <a href="http://social.technet.microsoft.com/Forums/en/windowsserver2008r2management/thread/83b7d33b-ee27-45ae-8e68-ab5e63cd7274">post on TechNet</a>, which I finally found. There is a slight mistake, though, as there should be no space between /FeatureName: and the feature you want to install.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.betteritsolutions.co.uk/?feed=rss2&amp;p=78</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Blended Beats</title>
		<link>http://www.betteritsolutions.co.uk/?p=76</link>
		<comments>http://www.betteritsolutions.co.uk/?p=76#comments</comments>
		<pubDate>Wed, 18 Nov 2009 11:04:32 +0000</pubDate>
		<dc:creator>Mike</dc:creator>
				<category><![CDATA[Music]]></category>
		<category><![CDATA[Personal]]></category>
		<category><![CDATA[Web Development]]></category>

		<guid isPermaLink="false">http://www.betteritsolutions.co.uk/?p=76</guid>
		<description><![CDATA[Having been very impressed with WordPress since installing it on this domain, I decided to make use of it to promote my Internet radio show, Blended Beats. If you have an interest in electronic music (or just funky looking WordPress blogs!) then please visit www.blendedbeats.co.uk and let me know what you think.]]></description>
			<content:encoded><![CDATA[<p>Having been very impressed with <a href="http://wordpress.org/">WordPress</a> since installing it on this domain, I decided to make use of it to promote my Internet radio show, Blended Beats. If you have an interest in electronic music (or just funky looking WordPress blogs!) then please visit <a href="http://www.blendedbeats.co.uk/">www.blendedbeats.co.uk</a> and let me know what you think.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.betteritsolutions.co.uk/?feed=rss2&amp;p=76</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Working With Kerberos Authentication Part 4 &#8211; Shared Services Provider</title>
		<link>http://www.betteritsolutions.co.uk/?p=62</link>
		<comments>http://www.betteritsolutions.co.uk/?p=62#comments</comments>
		<pubDate>Mon, 02 Nov 2009 22:25:09 +0000</pubDate>
		<dc:creator>Mike</dc:creator>
				<category><![CDATA[2007]]></category>
		<category><![CDATA[SharePoint]]></category>
		<category><![CDATA[Windows]]></category>

		<guid isPermaLink="false">http://www.betteritsolutions.co.uk/?p=62</guid>
		<description><![CDATA[In this part I will talk about configuring your SSP to use Kerberos. The next step (if required in your environment) is to configure Kerberos for the Shared Services Provider. This includes root and virtual directory level Shared Services. A prerequisite for this step is the SharePoint Infrastructure Update (which was released post SP1). Configuring [...]]]></description>
			<content:encoded><![CDATA[<p>In this part I will talk about configuring your SSP to use Kerberos.</p>
<p>The next step (if required in your environment) is to configure Kerberos for the Shared Services Provider. This includes root and virtual directory level Shared Services. A prerequisite for this step is the SharePoint Infrastructure Update (which was released post SP1).</p>
<p>Configuring the SSP Web Application is very similar to a normal Web Application, so we&#39;ll keep it brief. Assume we have the SSP&#39;s Web Application running on port 1234 not using a host header. Then, the commands to map the SPNs are as follows:</p>
<p><code><br />
setspn –A HTTP/servername:1234 yourdomain\UserRunningAppPool<br />
setspn –A HTTP/servername.yourdomain.com:1234 yourdomain\UserRunningAppPool<br />
</code></p>
<p>Turn on Kerberos authentication for the SSP Web Application as described for the content Web Application (previous post) and perform the same test, ensuring you see a successful Kerberos logon event in the Security log on the server hosting the SSP.</p>
<p>In order to fully configure Kerberos for the SSP and Excel Calculation Services, further SPNs must be set using a new, custom format. There are also STSADM commands to run and a change to be made to the registry of each server.</p>
<p>Map the SPNs with the following commands:</p>
<p><code><br />
setspn –A MSSP/servername:56737/SSPName yourdomain\SSPServiceAccount<br />
setspn –A MSSP/servername:56738/SSPName yourdomain\SSPServiceAccount<br />
</code></p>
<p>SSPName is simply the name you gave your SSP. It cannot contain extended characters so be sure to name your SSP with care at install time! You must also generate a pair of SPNs for each server in your farm. I.e. in a standard medium server farm (2 WFEs and 1 App server), you will set 6 SPNs, 2 for each server name.</p>
<p>Now run the necessary STSADM commands on a server in the farm:</p>
<p><code><br />
stsadm –o setsharedwebserviceauthn –negotiate<br />
stsadm –o set-ecssecurity –accessmodel delegation –ssp<br />
stsadm –o execadmsvcjobs<br />
</code></p>
<p>In order, this sets the Shared Services Web Service to use Kerberos, Excel Calculation Services to use delegation and then forces the timer jobs to run immediately.</p>
<p>Lastly, each SharePoint Server will need a registry key adding to allow it to use the new custom format SPNs.</p>
<ol>
<li>Run regedit</li>
<li>Go to the registry path <strong>HKLM\Software\Microsoft\Office Server\12.0</strong> and right click <strong>12.0</strong> &gt;&gt; <strong>New</strong> &gt;&gt; <strong>DWORD Value</strong></li>
<li>For <strong>Name</strong> type in <strong>KerberosSpnFormat</strong> and change the value from <strong>0</strong> (default) to <strong>1</strong>.</li>
</ol>
<p>After this step, you must reboot your server.</p>
<p>There is some additional configuration required within Component Services. In order to prevent the occurrence of DCOM errors, all of your Application Pool service accounts should have Local Launch and Local Activation permissions on the IIS WAMREG Admin Service object, most easily achieved by giving the permissions to the local groups: WSS_WPG and WSS_ADMIN_WPG (this ensures that newly created Application Pool service accounts are granted the permissions, since SharePoint adds them to this group). This is well documented elsewhere.</p>
<p>However, there&#39;s also a modification to be made to the servers in the farm within Component Services. Click on <strong>Start</strong> &gt; <strong>Administrative Tools</strong> &gt; <strong>Component Services</strong>. Expand <strong>Component Services</strong> &gt; <strong>Computers</strong>, right click on <strong>My Computer</strong> and select <strong>Properties</strong>. On the <strong>Default Properties</strong> tab, change the <strong>Default Impersonation Level</strong> to <strong>Delegate</strong> and click on <strong>OK</strong>.</p>
<div id="attachment_63" class="wp-caption alignnone" style="width: 412px"><img src="http://www.betteritsolutions.co.uk/wp-content/uploads/2009/11/comp.png" alt="My Computer Properties" width="402" height="463" class="size-full wp-image-63" /><p class="wp-caption-text">My Computer Properties</p></div>
<p><strong>References</strong></p>
<p>There are a huge number of references for configuring Kerberos. Here is a useful selection:</p>
<ul>
<li><a href="http://technet.microsoft.com/en-us/library/cc263449.aspx">Configure Kerberos Authentication (Office SharePoint Server)</a></li>
<li><a href="http://support.microsoft.com/kb/917409">How to configure SQL Server 2008 Analysis Services and SQL Server 2005 Analysis Services to use Kerberos Authentication</a></li>
<li><a href="http://sharepointblog.spaces.live.com/blog/cns!74C8FB1191265567!174.entry">Kerberos Authentication &amp; Excel Services</a></li>
<li><a href="http://www.bsdlover.cn/?uid-129-action-viewspace-itemid-855">The Moron&#39;s Guide to Kerberos, Version 2.0</a></li>
<li><a href="http://blogs.msdn.com/james_world/archive/2007/08/20/essential-guide-to-kerberos-in-sharepoint.aspx">Essential Tips on Kerberos for SharePoint Deployers</a></li>
<li><a href="http://msdn.microsoft.com/en-us/library/ms677949(VS.85).aspx">Service Principal Names (Windows) on MSDN</a></li>
<li><a href="http://alt.pluralsight.com/wiki/default.aspx/Keith.GuideBook.HomePage">The .NET Developer&#39;s Guide to Windows Security (in particular, Part 5: Network Security)</a></li>
</ul>
<p>That concludes my guide to Kerberos for SharePoint. I hope you have found it useful and if you have any queries, please send them to me.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.betteritsolutions.co.uk/?feed=rss2&amp;p=62</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Working With Kerberos Authentication Part 3 &#8211; SharePoint Web Apps</title>
		<link>http://www.betteritsolutions.co.uk/?p=55</link>
		<comments>http://www.betteritsolutions.co.uk/?p=55#comments</comments>
		<pubDate>Sat, 24 Oct 2009 12:27:15 +0000</pubDate>
		<dc:creator>Mike</dc:creator>
				<category><![CDATA[2007]]></category>
		<category><![CDATA[SharePoint]]></category>
		<category><![CDATA[Windows]]></category>

		<guid isPermaLink="false">http://www.betteritsolutions.co.uk/?p=55</guid>
		<description><![CDATA[This part of the four part series will look at configuring Kerberos on SharePoint Web Applications. The first thing we need to do is to map some SPNs (again) and the SPNs themselves depend on whether you are using CNAMEs or A Records to resolve your web sites. If you are using CNAMEs, whose targets [...]]]></description>
			<content:encoded><![CDATA[<p>This part of the four part series will look at configuring Kerberos on SharePoint Web Applications.</p>
<p>The first thing we need to do is to map some SPNs (again) and the SPNs themselves depend on whether you are using CNAMEs or A Records to resolve your web sites. If you are using CNAMEs, whose targets are servers with associated A Records, you construct the SPN using the CNAME&#39;s target (i.e. the hostname in the A Record). In the case of an A Record, it&#39;s much simpler; just use the hostname in the A Record. If you&#39;re unsure and don&#39;t have access to DNS (for whatever reason) then ping the DNS name and see if it resolves directly to an IP address or tells you it&#39;s pinging another address. The former result indicates an A Record is in use, the latter indicates a CNAME.</p>
<p>In the case of CNAMEs, it&#39;ll often be the case that the target is a machine which will mean constructing SPNs based on that computer&#39;s name. There&#39;s a further complication in that the same SPN cannot be assigned to more than one account so if you have a collection of CNAMEs for different Web Applications all resolving to the same A Record, each Web Application must use the same domain account for its Application Pool Identity to maintain a unique mapping of SPNs (this will become clear below).</p>
<p>As an example, I am creating SPNs for a site served on the host header kerbtest on port 80 with an appropriate A Record associated with it. The fully qualified SPN is optional (depending on whether the site is ever accessed using the FQDN), but I would always include it.</p>
<p><code><br />
setspn –A HTTP/kerbtest yourdomain\UserRunningAppPool<br />
setspn –A HTTP/kerbtest.yourdomain.com yourdomain\UserRunningAppPool<br />
</code></p>
<p>Note that HTTP in this case refers to the HTTP service, NOT the protocol. A common mistake is to mistype the above and start them with HTTP://, which is incorrect.</p>
<p>If your domain functional level is Windows Server 2003 or later, you will need to make some changes on the Delegation tab of the user account running the Application Pool. In Active Directory Users and Computers, locate the user object, right click on it and select Properties. Click on the Delegation tab and change the setting to either Trust this user for delegation to any service (Kerberos only) or Trust this user for delegation to specified services only.</p>
<div id="attachment_56" class="wp-caption alignnone" style="width: 413px"><img src="http://www.betteritsolutions.co.uk/wp-content/uploads/2009/10/delegation_tab.png" alt="Delegation Tab" width="403" height="482" class="size-full wp-image-56" /><p class="wp-caption-text">Delegation Tab</p></div>
<p>Some guides will discuss enabling delegation for the computer account in Active Directory as well, but this is only necessary if the service process is running under the Local System account, which is not the case here.</p>
<p>If constrained delegation (the more secure and, therefore, recommended option) is required, I would suggest making sure everything works with unconstrained delegation first, before pressing on with constrained.</p>
<p>Kerberos can be enabled either at Web Application creation time, or later. I would usually implement it later, and make sure that the Web Application functions correctly with NTLM first.</p>
<p>To change the Authentication Provider to Kerberos, from SharePoint Central Administration (SCA), click on <strong>Application Management</strong>. Click on <strong>Authentication providers</strong> under <strong>Application Security</strong>. Make sure that the correct Web Application is selected and then click on the Zone that you wish to move to Kerberos. I will click on <strong>Default</strong>. The only change you should need to make is to alter the IIS Authentication Settings by changing the radio button from NTLM to Negotiate (Kerberos). Click <strong>OK</strong> when the warning dialogue box appears and then scroll to the bottom of the page and click on <strong>Save</strong>.</p>
<div id="attachment_57" class="wp-caption alignnone" style="width: 560px"><img src="http://www.betteritsolutions.co.uk/wp-content/uploads/2009/10/edit_authentication.png" alt="Edit Authentication" width="550" height="350" class="size-full wp-image-57" /><p class="wp-caption-text">Edit Authentication</p></div>
<p>From another machine on the domain (not one of the SharePoint web front end servers), browse to the Web Application. On the Web Server that you hit you should see an event with ID of 540 in the Security log, containing the following kind of information:</p>
<p><code><br />
Event Type:	Success Audit<br />
Event Source:	Security<br />
Event Category:	Logon/Logoff<br />
Event ID:	        540<br />
Date:		        09/07/2009<br />
Time:		        14:10:52<br />
User:		        domain\user<br />
Computer:<br />
Description:<br />
Successful Network Logon:<br />
User Name:<br />
Domain:<br />
Logon ID:		    	        (0x0,0x2D996B)<br />
Logon Type:			3<br />
Logon Process:			Kerberos<br />
Authentication Package:	Kerberos<br />
Workstation Name:<br />
Logon GUID:			{5dea6995-63c8-8ab0-0b1d-e80325461c16}<br />
Caller User Name:		        -<br />
Caller Domain:			-<br />
Caller Logon ID:			-<br />
Caller Process ID: 		-<br />
Transited Services: 		-<br />
Source Network Address:	10.11.12.2<br />
Source Port:			1301<br />
</code></p>
<p>Again, computer, domain and user names have been deliberately removed.</p>
<p>This concludes configuration of Kerberos for a SharePoint Content Web Application. In the final part I will describe how to switch the Shared Services Provider to Kerberos and also add a list of useful references for further reading.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.betteritsolutions.co.uk/?feed=rss2&amp;p=55</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>
