使用 CSOM 将租户管理员添加到 Office 365 中的共享点现代站点时出现问题
Issue while adding Tenant admin to a sharepoint modern site in office 365 using CSOM
我们有一个要求,我们正在为此创建一个自动化流程,以使用带有租户管理员信用的 Azure 函数来获取网站所有者/网站所有者组的成员。但是,很少有租户管理员无权访问的机密站点。计划是将租户管理员添加到网站集,因为网站管理员获取网站所有者信息,然后从这些网站中删除租户管理员的权限。我从 Link 中找到了一段代码,用于在网站集中添加租户管理员。
using (ClientContext clientContext = new ClientContext("https://testtenant-admin.sharepoint.com"))
{
clientContext.Credentials = new SharePointOnlineCredentials(userMail, password);
var tenant = new Tenant(clientContext);
List<string> siteCollList = new List<string>();
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
{
siteCollList.Add(siteProperty.Url);
if (siteProperty.Url.Contains(@"https://testtenant.sharepoint.com/sites/GetSiteOwnerSite"))
{
//assign the specified user (current user in this case) as the site collection admin.
tenant.SetSiteAdmin(siteProperty.Url, "amteam@testtenant.com", true);
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);
}
我面临的问题是 siteProperties = tenant.GetSiteProperties(startIndex, false) 由于某种原因只能让我访问经典站点而不是现代站点,因此我无法添加租户管理员。
这是预期的行为吗?我该怎么做才能将租户管理员添加到任何网站集,即使租户管理员没有该特定网站的权限。使用 UI 可以通过管理中心将租户管理员添加到网站集。
您可以尝试以下方法获取租户中的所有网站集:
var siteurl = "https://tenant-admin.sharepoint.com" // Tenant site!
List AllSiteList = Context.Web.Lists.GetByTitle("DO_NOT_DELETE_SPLIST_TENANTADMIN_AGGREGATED_SITECOLLECTIONS");
ListItemCollection AllSiteItems = AllSiteList.GetItems(CamlQuery.CreateAllItemsQuery());
Context.Load(AllSiteItems);
Context.ExecuteQuery();
我们有一个要求,我们正在为此创建一个自动化流程,以使用带有租户管理员信用的 Azure 函数来获取网站所有者/网站所有者组的成员。但是,很少有租户管理员无权访问的机密站点。计划是将租户管理员添加到网站集,因为网站管理员获取网站所有者信息,然后从这些网站中删除租户管理员的权限。我从 Link 中找到了一段代码,用于在网站集中添加租户管理员。
using (ClientContext clientContext = new ClientContext("https://testtenant-admin.sharepoint.com"))
{
clientContext.Credentials = new SharePointOnlineCredentials(userMail, password);
var tenant = new Tenant(clientContext);
List<string> siteCollList = new List<string>();
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
{
siteCollList.Add(siteProperty.Url);
if (siteProperty.Url.Contains(@"https://testtenant.sharepoint.com/sites/GetSiteOwnerSite"))
{
//assign the specified user (current user in this case) as the site collection admin.
tenant.SetSiteAdmin(siteProperty.Url, "amteam@testtenant.com", true);
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);
}
我面临的问题是 siteProperties = tenant.GetSiteProperties(startIndex, false) 由于某种原因只能让我访问经典站点而不是现代站点,因此我无法添加租户管理员。
这是预期的行为吗?我该怎么做才能将租户管理员添加到任何网站集,即使租户管理员没有该特定网站的权限。使用 UI 可以通过管理中心将租户管理员添加到网站集。
您可以尝试以下方法获取租户中的所有网站集:
var siteurl = "https://tenant-admin.sharepoint.com" // Tenant site!
List AllSiteList = Context.Web.Lists.GetByTitle("DO_NOT_DELETE_SPLIST_TENANTADMIN_AGGREGATED_SITECOLLECTIONS");
ListItemCollection AllSiteItems = AllSiteList.GetItems(CamlQuery.CreateAllItemsQuery());
Context.Load(AllSiteItems);
Context.ExecuteQuery();