Montag, 2. März 2015

Powershell Scripts - SharePoint Foundation: Masterpages für alle Websites setzen

In allen Systemen, die auf Microsoft SharePoint Foundation (2010 oder 2013) basieren, stellt sich die Problematik, dass über die Browseroberfläche keine Masterpage (Gestaltungsvorlage) gewählt werden kann. Mittels SharePoint Designer ist es zwar möglich dies pro Website zu wählen, jedoch bleibt das Hauptproblem dass diese Einstellung nicht vererbt wird. D.h. bei neu angelegten Websites muss diese jedes Mal manuell vorgenommen werden.

Um dieses Problem zu umgehen gibt es zwei Möglichkeiten:

Eine sehr elegante Variante ist die Nutzung eines Event Receivers, der automatisch die gewünschte Masterpage bei neu angelegten Websites setzt. Dies ist allerdings nur durch die Entwicklung einer Solution möglich.
 
Die zweite Möglichkeit ist dieses durch ein kleines Powershell Script zu erledigen, welches automatisch auf allen gewählten Websites die Masterpage setzt. Dieses Script wiederum könnte dann z.B. auch einmal täglich als Windows Scheduled Task ausgeführt werden.

Ein Beispiel für ein solches Powershell Script wäre das folgende:

#set site collection
$web = Get-SPSite http://intranet
#set Masterpage
$MasterPageUrl = "/intranet/_catalogs/masterpage/example.master"
#$MasterPageUrl = [Microsoft.SharePoint.Utilities.SPUrlUtility]::CombineUrl($web.ServerRelativeUrl,"_catalogs/masterpage/seattle.master"); 

#iterate all web sites and update the masterpage with the url in $MasterPageUrl parameter
foreach ($subWeb in $web.AllWebs)
{
    $subWeb.MasterUrl = $MasterPageUrl;
    $subWeb.CustomMasterUrl = $MasterPageUrl;
    $subWeb.Update();
    Write-Host $subWeb.Url ;
}
$web.Dispose()

 

Keine Kommentare:

Kommentar veröffentlichen