L’archéologie est une passion ou une punition, pour mon cas, je vous laisse chercher dans quel cas je suis
Quoi qu’il en soit, les Sites SharePoint sont des espaces de travail collaboratif et de ce fait, les collaborations évoluent dans le temps. Un des cas classiques reste le changement de poste ou de responsabilité.
Pour SharePoint ca se traduit souvent par le remplacement de collaborateurs dans la liste des Site Collection administrators, ainsi que l’adresse Email de permission request.
Voici donc un petit script PowerShell qui permet de faire ces deux modifications en une fois et avec un filtrage possible sur les sites à modifier.
function AddAccountAdmin([object]$TheSite, [object]$web, [string]$UserAdmin)
{
[System.Reflection.Assembly]::LoadWithPartialName("Microsoft.SharePoint") > $null
Write-Host " ------------------------------------- "
Write-Host "Web URL", $web.URL
$siteCollUsers = $web.SiteUsers
$siteCollUsers.Add($UserAdmin, "", "", "")
Write-Host " >> ADMIN ADDED: ", $UserAdmin
$web.Update()
$myuser = $siteCollUsers[$UserAdmin]
$TheSite.Owner = $myuser
$myuser.Update()
$web.Update()
$myuser.IsSiteAdmin = $TRUE
$myuser.Update()
$web.Dispose()
#$site.Dispose()
}function SetRequetPermission([object]$TheSite, [string]$EmailAddress)
{
foreach($web in $TheSite.AllWebs)
{
$Myurl = $web.url
Write-host $Myurl
if (!$web.HasUniquePerm)
{
Write-Host "Access Request Settings is inherited from parent."
}
elseif($web.RequestAccessEnabled)
{
Write-Host "Access Request Settings is enabled."
write-host $web.RequestAccessEmail
if ($web.RequestAccessEmail -ne $EmailAddress)
{
Write-Host "Email needs to be updated."
$web.RequestAccessEmail = $EmailAddress
$web.Update()
Write-Host "Email changed successfully:", $EmailAddress
}
}
else
{
Write-Host "Access Request Settings not enabled."
}
}
}function Check-SiteCollection([string]$WebAppURL, [string]$TemplateFormat, [string]$AccountAdmin, [string]$EmailAddressAdmin)
{
[System.Reflection.Assembly]::LoadWithPartialName("Microsoft.SharePoint") > $null$Thesite = new-object Microsoft.SharePoint.SPSite($WebAppURL)
$oApp = $Thesite.WebApplicationforeach ($Sites in $oApp.Sites)
{
#Write-Host "Site URL", $Sites.URL
if($Sites.URL -Like $TemplateFormat)
{
$mySubweb = $Sites.RootWeb
#Write-Host "Web URL", $mySubweb.URL
#AddAccountAdmin $Sites $mySubweb $AccountAdmin
SetRequetPermission $Sites $EmailAddressAdmin
}
}
$Thesite.Dispose()
}Check-SiteCollection “http://MySharePointWeb” "*/sites/MySiteCol-*Test" "DOMAIN\LoginAccount" “EmailAddress@mycompany.com”
Ce script n’a pas été testé sur SharePoint 2010 ou 2013, mais son format très simple doit être utilisable tel que sous 2010/2013.
Romelard Fabrice [MVP]
Commentaires
Enregistrer un commentaire