Question

I am working on office 365 SharePoint site.

I want to fetch all lists/libraries/items where permissions are given to Everyone group across SharePoint site using CSOM.

    Web web = context.Web;
var Lists = context.Web.Lists;
context.Load(Lists);
context.ExecuteQuery();
foreach (var List in Lists)
{
    context.Load(List.RoleAssignments);
    context.ExecuteQuery();
    foreach (var RoleAssignment in List.RoleAssignments)
    {
        context.Load(RoleAssignment.Member);
        context.ExecuteQuery();
        var EveryoneexceptexternalUsers = " c:0-.f|rolemanager|spo-grid-all-users/526bf739-e2f7-4c87-a8ce-0737198cc796";
        PrincipalType SharePointGroup = default(PrincipalType);
        if (RoleAssignment.Member.PrincipalType == SharePointGroup && RoleAssignment.Member.LoginName == EveryoneexceptexternalUsers) {
            Console.WriteLine(List.Title, "has Everyone Group");

        }
        else
        {
            Console.WriteLine("Everyone group is not present in the List");
        }
        Console.ReadLine();
    }
}
Was it helpful?

Solution 2

 Web web = context.Web;
                var Lists = context.Web.Lists;
                context.Load(Lists);
                context.ExecuteQuery();
                foreach (var List in Lists)
                {
                    context.Load(List.RoleAssignments);
                    context.ExecuteQuery();
                    Console.WriteLine(List.Title);
                    if (List.Title.StartsWith("Employee"))
                    {
                        foreach (var RoleAssignment in List.RoleAssignments)
                        {
                            context.Load(RoleAssignment.Member, r => r.LoginName, r => r.PrincipalType);
                            context.ExecuteQuery();
                            var EveryoneexceptexternalUsers = "c:0-.f|rolemanager|spo-grid-all-users/526bf739-e2f7-4c87-a8ce-0737198cc796";
                            //PrincipalType SharePointGroup = default(PrincipalType);
                            if (RoleAssignment.Member.LoginName == EveryoneexceptexternalUsers)//RoleAssignment.Member.PrincipalType == SharePointGroup && 
                            {
                                Console.WriteLine(List.Title, "has Everyone Group");
                            }
                            else
                            {
                                Console.WriteLine("Everyone group is not present in the List");
                            }
                        }
                    }
                    Console.ReadLine();
                }

OTHER TIPS

To achieve your requirement, there is a PowerShell script for your reference.

    #Load SharePoint CSOM Assemblies
Add-Type -Path "C:\Program Files\Common Files\Microsoft Shared\Web Server Extensions\16\ISAPI\Microsoft.SharePoint.Client.dll"

Add-Type -Path "C:\Program Files\Common Files\Microsoft Shared\Web Server Extensions\16\ISAPI\Microsoft.SharePoint.Client.Runtime.dll"
#Variables for Processing
$SiteUrl = "https://tenantname.sharepoint.com/sites/sitename"
$UserName="username"
$Password ="password"

#Setup Credentials to connect

$Credentials = New-Object Microsoft.SharePoint.Client.SharePointOnlineCredentials($UserName,(ConvertTo-SecureString $Password -AsPlainText -Force))


    $Context = New-Object Microsoft.SharePoint.Client.ClientContext($SiteUrl) 

    $Context.Credentials = $credentials


    #sharepoint online powershell get all lists

    $Lists = $Context.web.Lists

    $Context.Load($Lists)

    $Context.ExecuteQuery()



    #Iterate through each list in a site   

    ForEach($List in $Lists)
    {

        $Context.Load($List.RoleAssignments)
        $Context.ExecuteQuery()
        Foreach($RoleAssignment in $List.RoleAssignments)
        { 
               $Context.Load($RoleAssignment.Member)

               $Context.executeQuery()

               If($RoleAssignment.Member.PrincipalType -eq "SharePointGroup" -And $RoleAssignment.Member.LoginName -eq "Everyone"){

                    Write-host $List.Title "has Everyone Group"

                } 

        }




    }   

More reference:

SharePoint Online: Site Collection Permissions Report using PowerShell.

Licensed under: CC-BY-SA with attribution
Not affiliated with sharepoint.stackexchange
scroll top