Forum Discussion
Zilverflame
Nov 18, 2016Copper Contributor
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...
- 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
Zilverflame
Nov 24, 2016Copper Contributor
Hmmmm, doesn't work. Many commands are not recognized, even after import SPO module. Also when connecting it's called "Connect-SPOservice".
NarasimaPerumal Chandramohan wrote:You can run this script to get the permission details for subsites. This can be run with PnP PowerShell module.
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