PowerShell pour récupérer les URLS conviviales SharePoint 2013 ?

Comment récupérer les URL conviviales liées aux pages de publication de mon site SharePoint 2013 ?

Le but est de pouvoir sortir une liste des pages du site Sharepoint 2013 pour identifier les pages ayant plusieurs URL conviviales. PowerShell nous permet d’utiliser les objets SharePoint avec beaucoup d’aisance :

Dans le script :

on va parcourir toutes les pages de publications de notre site

[Microsoft.SharePoint.Publishing.PublishingWeb]::GetPagesListId($web)

Ensuite pour chaque term de notre termset on va récupérer son URL conviviale

[Microsoft.SharePoint.Publishing.Navigation.TaxonomyNavigation]::
GetFriendlyUrlsForListItem($page, $true)

et enfin on compare cette propriété à celle de notre Page :

$friendlyUrl = $_.GetWebRelativeFriendlyUrl()

Le résultat est lisible dans le fichier de sortie en format csv.

$url = "http://yourSite:8080"
$sw = New-Object System.IO.StreamWriter("c:\temp\sample.csv")
Add-PSSnapin Microsoft.SharePoint.PowerShell -erroraction SilentlyContinue
function GetConvialUrl($w) {
$pagesId = [Microsoft.SharePoint.Publishing.PublishingWeb]::GetPagesListId($web)
$publishingPages = $web.Lists[$pagesId]
foreach ($page in $publishingPages.Items)
{
$friendlyUrls = [Microsoft.SharePoint.Publishing.Navigation.TaxonomyNavigation]::GetFriendlyUrlsForListItem($page, $true)
if ($friendlyUrls.Count -ne $zero)
{
$friendlyUrls | ForEach-Object{
$friendlyUrl = $_.GetWebRelativeFriendlyUrl()
$sw.writeline($page.Name+ ";" +"Page URL: "+$web.Url+$page.Url + ";"+ $friendlyUrl)
}
}
}
}

$site = Get-SPSite $url
foreach ($web in $site.AllWebs )
{
GetConvialUrl $web
}
$sw.close()

Pas de commentaire

Laisser un commentaire

Votre adresse de messagerie ne sera pas publiée. Les champs obligatoires sont indiqués avec *