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
Nov 19, 2016
You can run this script to get the permission details for subsites. This can be run with PnP PowerShell module.
function connect-site($webs,$creds){
Connect-SPOnline -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-SPOGroup
foreach($Pgroup in $Pgroups)
{
$DLGP = "" | Select "SiteUrl","GroupName","Permission"
$pPerm=Get-SPOGroupPermissions -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-SPOSubWebs
foreach($subweb in $subwebs)
{
connect-site -webs $subweb.Url -creds $cred
#Write-Host $subweb.Url
$groups=Get-SPOGroup
foreach($group in $groups)
{
$DLGP = "" | Select "SiteUrl","GroupName","Permission"
$sPerm=Get-SPOGroupPermissions -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://mod.sharepoint.com/sites/contosobeta"
$outputPath= "c:\csv\AllSubsitegrouppermission.csv"
$Sitepermission=get-sitepermission -web $parentsitename -cred $cred
$Sitepermission |Export-Csv -Path $outputPathZilverflame
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 - Nov 24, 2016Did you install the PnP PowerShell cmdlets? Bear also in mind that PnP Team has recently change PnP names so this could be your issue if you installed lates version of the PnP cmdlets