I always suspected that the support for PowerShell in SharePoint Server 2010 and also Project Server 2010 would be very significant both for our customers, and for me and my colleagues in the support organization. Yesterday I used PowerShell in earnest and a very simple couple of lines resolved a specific issue.
First some terminology changes for 2010 – Project Workspaces are now referred to as Project Sites. Behind the scenes little has changed, and these are still site that have specific features enabled (Project Site Collaboration Lists) and are based on a particular site template (PWS). The PWA site, the page with the menus etc. that you get for each instance is based on the PWA site template.
This specific issue turned out to be due to a PWA site being used as the Project Site for a specific project – which isn’t usual, or probably recommended, but can be done by activating the collaboration lists feature and then associating the site with a project. This adds a couple of properties to PWA’s SPWeb object – the PWAURL and MSPWAPROJUID properties, which are not normally expected to be there. The net result of this doesn’t break anything in 2007, but can break things later if the site is migrated to another URL – and specifically if the content database is used in a 2010 full upgrade scenario and the URL is not the same as the original.
The symptom in Project Server 2010 is that Project Detail Pages do not work – so drill down in Project Center, creating new projects in PWA, and even opening PDP’s in the Server Settings area is broken.
So, over to the PowerShell stuff. On the SharePoint Server you can open the SharePoint 2010 Management Shell (as administrator) and then you can run PowerShell commands against you farm. WARNING – Don’t play around with PowerShell for the first time with your production server – these commands can break things! The following commands can show the properties of an SPWeb object. We are setting $Web to be our SPWeb object for a specific PWA instance and then looking at the Properties (substitute your servername and PWA instance name…):
$Web = get-SPWeb http://<servername>/<PWAInstance>
$Web.AllProperties | Format-Table
The output of the second command showed me that PWAURL was set to a URL I was not expecting – so I could change this back to NULL again using PowerShell
And all was resolved!
This can also be resolved in the 2007 system before upgrade by using the UI option to “Remove the URL for the SharePoint Site” in the Edit Site Address section under Server Settings, Project Sites (I’m using the 2010 terminology – 2007 uses “Workspaces” term).
*** Update *** – another posting on this same topic at http://blogs.msdn.com/b/brismith/archive/2010/05/18/project-server-2010-my-pwa-site-thinks-it-is-a-workspace-site-revisited.aspx
I’m looking forward to having PowerShell in our support armory, which may help speed up analysis and resolution of issues. For some other uses of PowerShell and Project Server 2010 see http://code.msdn.microsoft.com/pj14PowershellPSI.
*** Update *** Thanks Christophe for the suggestion – a couple more links – The Script Center for SharePoint and a link back to the Project ones: