PowerShell: applicare un tema ricorsivamente a SharePoint 2007
Lo script PowerShell permette di applicare il tema passato ricorsivamente a tutti i siti SharePoint 2007 (WSS3 - MOSS).
PowerShell
# Applica il tema ricorsivamente (SharePoint 2007)
#
# se non funge lanciare prima da linea di comando
# Set-ExecutionPolicy RemoteSigned
# eseguire con: powershell .\SPTreeSetTheme.ps1
# carico l'assembly che mi serve
[void][System.Reflection.Assembly]::LoadWithPartialName("Microsoft.SharePoint")
$theme = "";
# routine ricorsiva per l'elenco dei siti
function ListWebs($webTop, $t)
{
foreach($web in $webTop.Webs)
{
$web.ServerRelativeUrl + "-" + $theme ;
#prima applico un tema qualsiasi (nel caso avessi già applicato il tema attuale)
$web.ApplyTheme("Jet");
#poi riapplico il tema passato
$web.ApplyTheme($theme);
$web.Theme ;
ListWebs $web ($t + 1);
$web.Dispose();
}
}
if ([String]::IsNullOrEmpty($args[0]) )
{
"Imposta il thema dei siti"
"es.: powershell .\SPTreeSetTheme.ps1 http://localhost nomeTema"
}
else
{
if ([String]::IsNullOrEmpty($args[1]) )
{
"Imposta il thema dei siti"
"es.: powershell .\sptree.ps1 http://localhost nomeTema"
}
else
{
$url = $args[0];
$theme = $args[1];
trap { } & {
# creo l'oggetto relativo alla site collection
$site= new-object Microsoft.SharePoint.SPSite($url);
# creo l'oggetto relativo al sito
$web= $site.OpenWeb();
# stampo il titolo
$web.Title;
# inizio la ricorsione sui figli
ListWebs $web 0;
# faccio pulizia
$web.Close();
$site.close();
}
}
}