Das Button “Zur Homepage machen” aus dem “Seite”-Ribbon von SharePoint setzt die Seite auf der sich der Benutzer gerade befindet als Startseite für die aktuelle Website. Dies ist extrem praktisch, wenn man z.B. bei einer migrierten Website die alte default.aspx wieder zur Homepage machen will.
Wenn dies aber für alle Websites einer Websitesammlung oder sogar mehrerer Websitesammlungen geschehen soll, bietet sich ein PowerShell Skript an. Die MSDN verweist hier auf das Property WelcomePage:
http://msdn.microsoft.com/en-us/library/microsoft.sharepoint.spfolder.welcomepage.aspx
using (SPSite oSiteCollection = new SPSite("http://MyServer/sites/MyWikiSite")) { SPWeb oWebsite = oSiteCollection.OpenWeb(); SPFolder oFolder = oWebsite.RootFolder; oFolder.WelcomePage = "My Wiki Library/MyWelcome.aspx"; oFolder.Update(); oWebsite.Dispose(); }
Als ich diesen Code in PowerShell umsetzen und dabei natürlich auch ein bisschen kürzen wollte, kam ich zu folgendem Ergebnis:
$web = Get-SPWeb http://myweb/$web.RootFolder.WelcomePage = “default.aspx”$web.RootFolder.Update()$web.Dispose
Das Problem: Es funktioniert nicht! Es gibt zwar keine Fehlermeldung, aber das Property hat auch im Anschluss den alten Wert, so als ob die Update-Methode nie aufgerufen worden wäre.
Die Ursache: SPWeb.RootFolder gibt bei beiden Aufrufen jeweils ein neues SPFolder-Objekt zurück, das Property wird also auf der einen Instanz gesetzt und dann auf der anderen Instanz die Update-Methode aufgerufen.
Die Lösung: SPWeb.RootFolder nur einmal in eine Variable abrufen und diese dann benutzen:
$web = Get-SPWeb http://myweb/$folder = $web.RootFolder$folder.WelcomePage = “default.aspx”$folder.Update()$web.Dispose()
So klappt es und wir haben unsere alte Homepage zurück.
Gerd H.
Jan-Hendrik Röhrs
Ten Eniunlsl
Ten Eniunlsl