Я пытаюсь получить права доступа к сайту / списку / библиотеке / элементу / дочернему сайту / уникальное разрешение на нашем онлайн-сайте SharePoint, используя приведенный ниже скрипт из ссылки:
https://social.technet.microsoft.com/Forums/forefront/en-US/77a8e9ef-56a5-47e4-9b54-209f37687013/sharepoint-online-subsite-permissions-list-credenstials-promt?forum=onlineservicessharepoint - помечено как ответby MichaelIT02
Тем не менее, я получаю разрешение уровня сайта / дочерних сайтов только в PNP Powershell, используя приведенный выше код.Я пытался работать над сценариями в PNP, чтобы получить список и разрешение библиотеки / уникальное разрешение, но не смог найти идею.Если бы кто-нибудь мог помочь мне расширить этот код, он был бы очень признателен.
Заранее спасибо !!
Пожалуйста, проверьте код ниже: Здесь я не могу получить разрешение уровня элемента.
$siteUrl="https://TestSite.sharepoint.com/sites/TeamsiteSample"
$outputFile= "C:\Users\123\Desktop\SiteAndSubsitePermission.csv"
$username="xyz@xyz.onmicrosoft.com"
$password="xyz@12345"
$encpassword = convertto-securestring -String $password -AsPlainText -Force
$credential = new-object -typename System.Management.Automation.PSCredential -
argumentlist $username, $encpassword
Connect-PnPOnline -Url $siteUrl -Credentials $credential
# output file name and location
"List Title `t Title `t PrincipalType `t Permission `t GivenThrough" | Out-File
$outputFile -Append
#`t LoginName
# get document library
$library = Get-PnpList -Includes RoleAssignments
#-Identity $libraryName -Includes RoleAssignments
foreach($libraryList in $library)
{
# get all the users and groups who has access
$roleAssignment = $libraryList.RoleAssignments
foreach ($roleAssignment in $roleAssignment)
{
Get-PnPProperty -ClientObject $roleAssignment -Property RoleDefinitionBindings,
Member
$ListTitle = $libraryList.title
$loginName = $roleAssignment.Member.LoginName
$title = $roleAssignment.Member.Title
$principalType = $roleAssignment.Member.PrincipalType
$givenThrough = ""
$permissionLevel = ""
# loop through permission levels assigned to specific user/group
foreach ($roleDefinition in $roleAssignment.RoleDefinitionBindings){
$PermissionLevel += $RoleDefinition.Name + ";"
}
$givenThrough = "Given directly"
"$($ListTitle) `t $($title) `t $($principalType) `t $($permissionLevel) `t
$($givenThrough)" | Out-File $outputFile -Append
#`t $($loginName)
# if principal is SharePoint group -> get SharePoint group members
#if ($roleAssignment.Member.PrincipalType.ToString() -eq "SharePointGroup")
# {
# $givenThrough = $roleAssignment.Member.Title.ToString()
# $groupMembers = Get-PnpGroupMembers -Identity $roleAssignment.Member.LoginName
# foreach ($member in $groupMembers)
# {
# "$($member.Title) `t $($member.LoginName) `t $($member.PrincipalType) `t
$($permissionLevel) `t $($title) `t $($ListTitle)" | Out-File $outputFile -Append
# }
# }
}
}
$subwebs=Get-PNPSubWebs
foreach($subweb in $subwebs)
{
#Connect-PNPonline -Url $siteUrl -Credentials $credential
#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)
{
$SiteUrl=$subwebs.title
$GroupName=$group.loginname
$Permission=$sPerm.Name
#Test columns
"$($SiteUrl) `t $($GroupName) `t $($Permission)" | Out-File $outputFile -Append
}
}
Write-Host $subweb.Url "permission fetched!" }