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