SharePoint : Script PowerShell pour ajouter une personne comme administrateur de toutes les collections de sites d’une ferme
Nous avons déjà présenter la gestion des sites inutilisés dans SharePoint :
Cette fonctionnalité permet d’alerter tous les administrateurs de chaque collection de sites inutilisée via Email. La question vient maintenant pour le gestionnaire de la ferme.
En effet, il est très courant que ces messages soient directement détectés comme SPAM par les outils de messagerie. Ainsi, les messages partent chaque jour pour rien dans ce contexte et le nettoyage des collections ne se fait pas pour autant.
La solution est donc d’ajouter le gestionnaire de la ferme comme administrateur de chaque collection de sites, ce qui est simple pour une ferme avec un petit nombre de collections, mais qui devient fastidieux pour une grosse ferme.
La méthode pour une collection donnée est d’aller dans :
- “Sites Settings” > “Site collection administrators”
A cette fin, j’ai développé un script PowerShell permettant de faire l’ajout d’un utilisateur donné comme administrateur de toutes les collections de site d’une Web Application donnée :
function AddLoginAsSiteCollAdmin([string]$SiteCollectionURL, [string]$LoginNewAdmin)
{
[System.Reflection.Assembly]::LoadWithPartialName("Microsoft.SharePoint") > $null
$site = new-object Microsoft.SharePoint.SPSite($SiteCollectionURL)
$web = $site.openweb()#Debugging - show SiteCollectionURL
Write-Host "SiteCollectionURL", $SiteCollectionURL$siteCollUsers = $web.SiteUsers
$siteCollUsers.Add($LoginNewAdmin, "", "", "")
Write-Host " ADMIN ADDED: ", $LoginNewAdmin
$web.Update()
$myuser = $siteCollUsers[$LoginNewAdmin]
$myuser.IsSiteAdmin = $TRUE
$myuser.Update()$web.Update()
$web.Dispose()
$site.Dispose()
}
function AddSiteCollAdminForAllCollections([string]$WebAppURL, [string]$LoginNewSiteAdmin)
{[System.Reflection.Assembly]::LoadWithPartialName("Microsoft.SharePoint") > $null
$Thesite = new-object Microsoft.SharePoint.SPSite($WebAppURL)
$oApp = $Thesite.WebApplicationforeach ($Sites in $oApp.Sites)
{
$mySubweb = $Sites.RootWeb
$TempRelativeURL = $mySubweb.Url
AddLoginAsSiteCollAdmin $TempRelativeURL $LoginNewSiteAdmin
}}
function StartProcess()
{
# Create the stopwatch
[System.Diagnostics.Stopwatch] $sw;
$sw = New-Object System.Diagnostics.StopWatch
$sw.Start()
cls
$usertoreplaceinsiteadmin = "DOMAIN\LoginUser"
AddSiteCollAdminForAllCollections "http://myWebApplication” $usertoreplaceinsiteadmin$sw.Stop()
# Write the compact output to the screen
write-host $usertoreplaceinsiteadmin, " Login add as Site Collection Admin in Time: ", $sw.Elapsed.ToString()
}StartProcess
Ce script est ajouté au projet CodePlex “SharePoint Management PowerShell scripts” dans le groupe de scripts :
Romelard Fabrice [MVP]
Commentaires
Enregistrer un commentaire