in the below PowerShell script I want to get the permissions assigned to the users. $spgroup.roles is not displaying anything. Can any one help me on this,
#Add - PSSnapin Microsoft.SharePoint.PowerShell
$host.Runspace.ThreadOptions = "ReuseThread"
Function Get-SiteGroup-Owners
{
param ($sCSOMPath,$sSiteUrl,$sUserName,$sPassword,$FileName)
try
{
$sCSOMRuntimePath=$sCSOMPath + "\Microsoft.SharePoint.Client.Runtime.dll"
$sCSOMPathdll=$sCSOMPath + "\Microsoft.SharePoint.Client.dll"
Add-Type -Path $sCSOMPathdll
Add-Type -Path $sCSOMRuntimePath
#SPO Client Object Model Context
$spoCtx = New-Object Microsoft.SharePoint.Client.ClientContext($sSiteUrl)
$spoCredentials = New-Object Microsoft.SharePoint.Client.SharePointOnlineCredentials($sUserName, $sPassword)
#$spoCredentials = New-Object System.Net.NetworkCredential($sUserName, $sPassword) # for on premise
$spoCtx.Credentials = $spoCredentials
$web = $spoCtx.Web
$spGroups =$web.SiteGroups
$spoCtx.Load($web)
$spoCtx.Load($spGroups)
$spoCtx.ExecuteQuery()
Write-Host "Groups Count= $($spGroups.Count)"
foreach($spGroup in $spGroups)
{
$site =@()
$users = $spGroup.Users
$spoCtx.Load($spGroup)
$spoCtx.Load($users)
$spoCtx.ExecuteQuery()
foreach($spUser in $users)
{
try
{
$spoCtx.Load($spUser)
$spoCtx.ExecuteQuery()
$site += New-Object -TypeName PSObject -Property @{
SiteUrl =$sSiteUrl
GroupName = $spGroup.Title
PrincipalType= $spGroup.Roles
User =$spUser.LoginName
UserEmail =$spUser.Email
} | Select SiteUrl,GroupName,PrincipalType,User,UserEmail
Write-Host "This is test" $.Roles
}
catch [System.Exception]
{
Write-Host -ForegroundColor Red $_.Exception.ToString()
}
}
Write-Host $sCSOMPath
# $site| Export-CSV ($sCSOMPath+"\"+$FileName+".csv") -NoTypeInformation -Append #-Encoding UTF8
}
Read-Host -Prompt "file created Successfull..! in the following path $sCSOMPath, Press any key to close this window"
}
catch [System.Exception]
{
Write-Host -ForegroundColor Red $_.Exception.ToString()
Read-Host -Prompt "Operation failed..! Press any key to close this and re run the script"
}
}
$FileName= "SiteCollection_Group_Members"
$sSiteUrl = "https://mysite.test.com"
$sUserName = "admin@micrososft.com"
$sPassword = ConvertTo-SecureString "Password" -AsPlainText -Force
$scriptpath = $MyInvocation.MyCommand.Path
$dir = Split-Path $scriptpath
Write-Host "Getting Site Collection group Members"
Write-Host "-----------------------------------"
Get-SiteGroup-Owners -sCSOMPath $dir -sSiteUrl $sSiteUrl -sUserName $sUserName -sPassword $sPassword -FileName $FileName