In the previous article, we saw, how to create/provision a site collection in O365 programmatically. In this article, as a continuation, let us see how to Add Site Collection Administrators to the created site programmatically.
Again, the Console Application does not require further explanation I guess.
using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; using Microsoft.SharePoint.Client; using System.Security; using Microsoft.Online.SharePoint.TenantAdministration; namespace Console.Office365 { class Program { static void Main(string[] args) { AddSiteCollectionAdministrator(); } public static void AddSiteCollectionAdministrator() { string TenantURL = "https://sppalsmvp-admin.sharepoint.com/"; string Url = "https://********.sharepoint.com/sites/AASathish3"; string UserName = "Sathish@******.onmicrosoft.com"; string Password = "*******"; using (ClientContext clientContext = new ClientContext(TenantURL)) { //Credentials var passWord = new SecureString(); foreach (char c in Password.ToCharArray()) passWord.AppendChar(c); clientContext.Credentials = new SharePointOnlineCredentials(UserName, passWord); var tenant = new Tenant(clientContext); //Get login name of the current user var currentUser = clientContext.Web.CurrentUser; clientContext.Load(currentUser, u => u.LoginName); int startIndex = 0; SPOSitePropertiesEnumerable siteProperties; do { //Get urls of site collections in the tenant in batches of 300 (Does not include the OneDrive for Business sites) siteProperties = tenant.GetSiteProperties(startIndex, false); clientContext.Load(siteProperties, siteProps => siteProps.Include(site => site.Url)); clientContext.ExecuteQuery(); //Iterate the site collectio urls foreach (var siteProperty in siteProperties) { try { if (siteProperty.Url == Url) { //assign the specified user (current user in this case) as the site collection admin. tenant.SetSiteAdmin(siteProperty.Url, "user1@*********.onmicrosoft.com", true); //tenant.SetSiteAdmin(siteProperty.Url, "Usre2@******", true); //Set the last parameter to false if you want to remove the user from the site collection admins clientContext.ExecuteQuery(); System.Console.WriteLine(siteProperty.Url); } } catch (Exception ex) { System.Console.WriteLine("Error on: " + siteProperty.Url + " " + ex.Message); } } startIndex += 300; } while (siteProperties.Count >= 300); } } } }
Happy Coding,
Sathish Nadarajan.
Leave a comment