Office 365: Ajouter ou retirer des comptes utilisateurs des administrateurs de collections de site via PowerShell
Pour de nombreuses raisons, on peut vouloir modifier la liste des administrateurs de collections de sites pour l’ensemble des Teamsites de son tenant Office 365.
Il peut être utile pour ajouter ou retirer un compte administrateur de ces sites SharePoint sans pour autant les promouvoir SharePoint Tenant Admin (cas d’équipe de support ou de compte de service).
Ce petit script vous permet (en modifiant juste ce qui vous concerne) de pouvoir effectuer la commande dans les deux sens:
[string]$username = "YourAdminAccount@yourtenant.onmicrosoft.com"
[string]$PwdTXTPath = "C:\SECUREDPWDFOLDER\ExportedPWD-$($username).txt"[string]$CompteouGroupeAADavecGUIDO365= "c:0-.f|rolemanager|s-1-5-21-1575671886-733387139-3803724931-1933543"
[string]$CompteIdentifiantSP201X= "i:0#.f|membership|myUserLogin@mydomain.com"[string]$Compteavecsimplelogin= "loginAdmin@yourtenant.onmicrosoft.com"
function Load-DLLandAssemblies
{
[string]$defaultDLLPath = ""# Load assemblies to PowerShell session
$defaultDLLPath = "C:\Program Files\SharePoint Online Management Shell\Microsoft.Online.SharePoint.PowerShell\Microsoft.SharePoint.Client.dll"
[System.Reflection.Assembly]::LoadFile($defaultDLLPath)$defaultDLLPath = "C:\Program Files\SharePoint Online Management Shell\Microsoft.Online.SharePoint.PowerShell\Microsoft.SharePoint.Client.Runtime.dll"
[System.Reflection.Assembly]::LoadFile($defaultDLLPath)$defaultDLLPath = "C:\Program Files\SharePoint Online Management Shell\Microsoft.Online.SharePoint.PowerShell\Microsoft.Online.SharePoint.Client.Tenant.dll"
[System.Reflection.Assembly]::LoadFile($defaultDLLPath)
}
function ChangeUserStatusForSiteCollectionAdmin
{
Param(
[string]$SiteCollURL,
[string]$LoginToSet,
[boolean]$ToSiteCollAdminorNot
)if ($ToSiteCollAdminorNot)
{
Set-SPOUser -Site $SiteCollURL -LoginName $LoginToSet -IsSiteCollectionAdmin $ToSiteCollAdminorNot;
Write-Host " >>>>>>>>", $LoginToSet, " - is now part of Site Collection Collection admins" -foregroundcolor green;
}
else
{
try
{
$CheckUserList = $Null
$CheckUserList = Get-SPOUser -Site $SiteCollURL -LoginName $LoginToSet
Set-SPOUser -Site $SiteCollURL -LoginName $CheckUserList.LoginName -IsSiteCollectionAdmin $ToSiteCollAdminorNot;
Write-Host " >>>>>>>>", $CheckUserList.LoginName, " - Set to Site Collection Collection admin: ", $ToSiteCollAdminorNot -foregroundcolor green;
}
catch
{
write-host " >>>> $LoginToSet ---Error info: $($_.Exception.Message)" -foregroundcolor red
}
}
}
cls
Write-Host " ---------------------------------------------- "
Load-DLLandAssemblies
Write-Host " ---------------------------------------------- "$secureStringPwd = ConvertTo-SecureString -string (Get-Content $PwdTXTPath)
$adminCreds = New-Object System.Management.Automation.PSCredential $username, $secureStringPwdConnect-SPOService –Url “https://yourtenant-admin.sharepoint.com” -credential $adminCreds -ErrorAction SilentlyContinue -ErrorVariable Err
#Retrieve all site collection infos
$sitesInfo = Get-SPOSite -Template "STS#0" -Limit ALL | Sort-Object -Property url | Select *
[int]$i = 1;
foreach ($site in $sitesInfo)
{
Write-Host "SiteColl Number:", $i, "- of:", $sitesInfo.Count;
$i += 1;
Write-Host "SPO Site collection:", $site.Url, "- Title:", $site.TitleChangeUserStatusForSiteCollectionAdmin $site.Url $Compteavecsimplelogin $false
Remove-SPOUser -Site $site.Url -LoginName $Compteavecsimplelogin; #If you want to remove all reference to the accountChangeUserStatusForSiteCollectionAdmin $site.Url $CompteIdentifiantSP201X $false
Remove-SPOUser -Site $site.Url -LoginName $CompteIdentifiantSP201X; #If you want to remove all reference to the accountChangeUserStatusForSiteCollectionAdmin $site.Url $CompteouGroupeAADavecGUIDO365 $true
}
Vous pouvez simplement adapter votre commande de selection suivant votre propre besoin.
Attention pour les “Group Sites” qui ne sont plus simplement des sites SharePoint basiques, mais un mélange entre SharePoint, Azure AD et Exchange (voir les autres modules additionnels).
Fabrice Romelard [MVP]
Commentaires
Enregistrer un commentaire