Forum Discussion

Zilverflame's avatar
Zilverflame
Copper Contributor
Nov 18, 2016
Solved

SharePoint Online overview of user permissions

Hi group, We have a site collection with several subsites. From the start we have been using security groups to control user permissions. As time has passed the number of subsites have exploded and we...
  • NarasimaPerumal Chandramohan's avatar
    Nov 25, 2016

    Hi,

     

    Please check the below updated script, this should work with the latest PnP module.

     

    function connect-site($webs,$creds){
    
    Connect-PNPonline -Url $webs -Credentials $cred
    
    }
    
    function get-sitepermission($web,$cred){
    
    $rec=@()
    
    connect-site -webs $web -creds $cred
    
    if($web -eq $parentsitename)
    {
    #Write-Host "Parent site permission" $web
    $Pgroups=Get-PNPGroup
    foreach($Pgroup in $Pgroups)
    {
    $DLGP = "" | Select "SiteUrl","GroupName","Permission"
    $pPerm=Get-PNPGroupPermissions -Identity $Pgroup.loginname -ErrorAction SilentlyContinue |Where-Object {$_.Hidden -like "False"}
    if($pPerm -ne $null)
    {
    $DLGP.SiteUrl=$web
    $DLGP.GroupName=$Pgroup.loginname
    $DLGP.Permission=$pPerm.Name
    $rec+= $DLGP
    }
    }
    }
    $subwebs=Get-PNPSubWebs
    foreach($subweb in $subwebs)
    {
    connect-site -webs $subweb.Url -creds $cred
    #Write-Host $subweb.Url
    $groups=Get-PNPGroup
    foreach($group in $groups)
    {
    $DLGP = "" | Select "SiteUrl","GroupName","Permission"
    $sPerm=Get-PNPGroupPermissions -Identity $group.loginname -ErrorAction SilentlyContinue |Where-Object {$_.Hidden -like "False"}
    if ($sPerm -ne $null)
    {
    $DLGP.SiteUrl=$subweb.Url
    $DLGP.GroupName=$group.loginname
    $DLGP.Permission=$sPerm.Name
    $rec+=$DLGP
    }
    }
    Write-Host $subweb.Url "permission fetched!"
    get-sitepermission -web $subweb.Url -cred $cred
    
    }
    return $rec
    }
    #Input parameter
    $cred=Get-Credential
    $parentsitename="https://<Tenantname>.sharepoint.com/sites/contosobeta"
    $outputPath= "c:\csv\AllSubsitegrouppermission.csv"
    
    $Sitepermission=get-sitepermission -web $parentsitename -cred $cred
    $Sitepermission |Export-Csv -Path $outputPath
    
    
    

Resources