使用 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();