PowerShell: estrarre la struttura dei siti SharePoint (tree)
Esempio di come estrarre la struttura (Tree) dei siti da SharePoint 2007 (MOSS) tramite PowerShell 1.0
un altro esempio che elenca anche la pagina di default dei siti di tipo publishing
PowerShell: SPTree.ps1
# se non funge lanciare prima da linea di comando
# Set-ExecutionPolicy RemoteSigned
# eseguire con: powershell .\SPTree.ps1
# carico l'assembly che mi serve
[void][System.Reflection.Assembly]::LoadWithPartialName("Microsoft.SharePoint")
# routine ricorsiva per l'elenco dei siti
function ListWebs($webTop, $t){
foreach($web in $webTop.Webs){
$a = ".." * ($t + 1);
$a + $web.Title;
ListWebs $web ($t + 1);
$web.Close();
}
}
# creo l'oggetto relativo alla site collection
$spsite= new-object Microsoft.SharePoint.SPSite("http://localhost");
# creo l'oggetto relativo al sito
$spweb= $spsite.OpenWeb();
# stampo il titolo
$spweb.Title;
# inizio la ricorsione sui figli
ListWebs $spweb 0;
# faccio pulizia
$spweb.Close();
$spsite.close();
un altro esempio che elenca anche la pagina di default dei siti di tipo publishing
PowerShell
# Crea un albero (tree) dei sit
# ed elenca la pagina di default di ogni sito
# e l'utente che ha creato la pagina
# l'astersco * indica le pagine di tipo publihing
# se non funge lanciare prima da linea di comando
# Set-ExecutionPolicy RemoteSigned
# eseguire con: powershell .\SPTree.ps1 http://localhost
# carico l'assembly che mi serve
[System.Reflection.Assembly]::LoadWithPartialName("Microsoft.SharePoint")
[System.Reflection.Assembly]::LoadWithPartialName("Microsoft.SharePoint.Publishing")
# routine ricorsiva per l'elenco dei siti
function ListWebs($webTop, $t){
foreach($web in $webTop.Webs){
$url = "";
if ([Microsoft.SharePoint.Publishing.PublishingWeb]::IsPublishingWeb($web)) {
$pubWeb = [Microsoft.SharePoint.Publishing.PublishingWeb]::GetPublishingWeb($web);
$url = $pubWeb.DefaultPage.ServerRelativeUrl + " (" + $pubWeb.CreatedBy + ") *";
# $pubWeb.DefaultPage.ModifiedBy;
} else {
$url = $web.ServerRelativeUrl + "/default.aspx";
}
# $url = String.Concat(requestUrl, publishingWeb.DefaultPage.Url);
$a = " " * ($t + 1);
$a + "[" + $web.Title + "] " + $url;
ListWebs $web ($t + 1);
$web.Close();
}
}
if ([String]::IsNullOrEmpty($args[0])) {
"es.: powershell .\sptree.ps1 http://localhost"
} else {
$p = $args[0];
"Parametro: " + $p;
trap { } & {
# creo l'oggetto relativo alla site collection
$spsite= new-object Microsoft.SharePoint.SPSite($p);
# creo l'oggetto relativo al sito
$spweb= $spsite.OpenWeb();
# stampo il titolo
$spweb.Title;
# inizio la ricorsione sui figli
ListWebs $spweb 0;
# faccio pulizia
$spweb.Close();
$spsite.close();
}
}