如何导出用户在Sharepoint site中对多个文档以及文档库等拥有的权限

匿名
2023-11-08T08:31:44+00:00

如何导出用户在Sharepoint site中对多个文档以及文档库等拥有的权限,包括站点/文件、访问权限、消息通知权限、共享权限。

Microsoft 365 和 Office | SharePoint | 商业版 | 其他

锁定的问题。 此问题已从 Microsoft 支持社区迁移。 你可投票决定它是否有用,但不能添加评论或回复,也不能关注问题。

0 个注释 无注释

5 个答案

排序依据: 最新
  1. 匿名
    2023-11-21T07:31:30+00:00

    您好,

    非常抱歉当前论坛中审阅人只提供内置功能的技术支持,对于相关脚本,建议您前往MicrosoftQA论坛发布,以获得专业工程师的代码支持。感谢您的耐心与理解!

    祝好,

    Mia

    此答案是否有帮助?

    0 个注释 无注释
  2. 匿名
    2023-11-10T03:22:05+00:00

    Hello,

    麻烦查看一下。

    此答案是否有帮助?

    0 个注释 无注释
  3. 匿名
    2023-11-09T06:00:22+00:00

    麻烦再看一下这个脚本导出的错误。

    #Load SharePoint CSOM Assemblies Add-Type -Path "C:\Program Files\Common Files\Microsoft Shared\Web Server Extensions\16\ISAPI\Microsoft.SharePoint.Client.dll" Add-Type -Path "C:\Program Files\Common Files\Microsoft Shared\Web Server Extensions\16\ISAPI\Microsoft.SharePoint.Client.Runtime.dll" #Set parameter values $SiteURL="https://chayora.sharepoint.com/sites/Intranet" $UserAccount="******@chayora.com" $ReportFile="C:\Temp\PermissionRpt_Vivian.csv" $BatchSize = 50000 #sharepoint online powershell to get user permissions Applied on a particular Object, such as: Web, List, Folder or Item Function Get-Permissions([Microsoft.SharePoint.Client.SecurableObject]$Object) { #Determine the type of the object Switch($Object.TypedObject.ToString()) { "Microsoft.SharePoint.Client.Web" { $ObjectType = "Site" ; $ObjectURL = $Object.URL } "Microsoft.SharePoint.Client.ListItem" { $ObjectType = "List Item/Folder" #Get the URL of the List Item $Object.ParentList.Retrieve("DefaultDisplayFormUrl") $Ctx.ExecuteQuery() $DefaultDisplayFormUrl = $Object.ParentList.DefaultDisplayFormUrl $ObjectURL = $("{0}{1}?ID={2}" -f $Ctx.Web.Url.Replace($Ctx.Web.ServerRelativeUrl,''), $DefaultDisplayFormUrl,$Object.ID) } Default { $ObjectType = "List/Library" #Get the URL of the List or Library $Ctx.Load($Object.RootFolder) $Ctx.ExecuteQuery() $ObjectURL = $("{0}{1}" -f $Ctx.Web.Url.Replace($Ctx.Web.ServerRelativeUrl,''), $Object.RootFolder.ServerRelativeUrl) } } #Get permissions assigned to the object $Ctx.Load($Object.RoleAssignments) $Ctx.ExecuteQuery() Foreach($RoleAssignment in $Object.RoleAssignments) { $Ctx.Load($RoleAssignment.Member) $Ctx.executeQuery() #Check direct permissions if($RoleAssignment.Member.PrincipalType -eq "User") { #Is the current user is the user we search for? if($RoleAssignment.Member.LoginName -eq $SearchUser.LoginName) { Write-Host -f Cyan "Found the User under direct permissions of the $($ObjectType) at $($ObjectURL)" #Get the Permissions assigned to user $UserPermissions=@() $Ctx.Load($RoleAssignment.RoleDefinitionBindings) $Ctx.ExecuteQuery() foreach ($RoleDefinition in $RoleAssignment.RoleDefinitionBindings) { $UserPermissions += $RoleDefinition.Name +";" } #Send the Data to Report file "$($ObjectURL) t $($ObjectType) t $($Object.Title)t Direct Permission t $($UserPermissions)" | Out-File $ReportFile -Append } } Elseif($RoleAssignment.Member.PrincipalType -eq "SharePointGroup") { #Search inside SharePoint Groups and check if the user is member of that group $Group= $Web.SiteGroups.GetByName($RoleAssignment.Member.LoginName) $GroupUsers=$Group.Users $Ctx.Load($GroupUsers) $Ctx.ExecuteQuery() #Check if user is member of the group Foreach($User in $GroupUsers) { #Check if the search users is member of the group if($user.LoginName -eq $SearchUser.LoginName) { Write-Host -f Cyan "Found the User under Member of the Group '$($RoleAssignment.Member.LoginName)' on $($ObjectType) at $($ObjectURL)" #Get the Group's Permissions on site $GroupPermissions=@() $Ctx.Load($RoleAssignment.RoleDefinitionBindings) $Ctx.ExecuteQuery() Foreach ($RoleDefinition in $RoleAssignment.RoleDefinitionBindings) { $GroupPermissions += $RoleDefinition.Name +";" } #Send the Data to Report file "$($ObjectURL) t $($ObjectType) t $($Object.Title)t Member of '$($RoleAssignment.Member.LoginName)' Group t $($GroupPermissions)" | Out-File $ReportFile -Append } } } } } Try { #Get Credentials to connect $Cred= Get-Credential $Credentials = New-Object Microsoft.SharePoint.Client.SharePointOnlineCredentials($Cred.Username, $Cred.Password) #Setup the context $Ctx = New-Object Microsoft.SharePoint.Client.ClientContext($SiteURL) $Ctx.Credentials = $Credentials #Get the Web $Web = $Ctx.Web $Ctx.Load($Web) $Ctx.ExecuteQuery() #Get the User object $SearchUser = $Web.EnsureUser($UserAccount) $Ctx.Load($SearchUser) $Ctx.ExecuteQuery() #Write CSV- TAB Separated File) Header "URL t Object t Title t PermissionType t Permissions" | out-file $ReportFile Write-host -f Yellow "Searching in the Site Collection Administrators Group..." #Check if Site Collection Admin If($SearchUser.IsSiteAdmin -eq $True) { Write-host -f Cyan "Found the User under Site Collection Administrators Group!" #Send the Data to report file "$($Web.URL) t Site Collection t $($Web.Title)t Site Collection Administrator t Site Collection Administrator" | Out-File $ReportFile -Append } #Function to Check Permissions of All List Items of a given List Function Check-SPOListItemsPermission([Microsoft.SharePoint.Client.List]$List) { Write-host -f Yellow "Searching in List Items of the List '$($List.Title)..." $Query = New-Object Microsoft.SharePoint.Client.CamlQuery $Query.ViewXml = "$BatchSize" $Counter = 0 #Batch process list items - to mitigate list threshold issue on larger lists Do { #Get items from the list in Batch $ListItems = $List.GetItems($Query) $Ctx.Load($ListItems) $Ctx.ExecuteQuery() $Query.ListItemCollectionPosition = $ListItems.ListItemCollectionPosition #Loop through each List item ForEach($ListItem in $ListItems) { $ListItem.Retrieve("HasUniqueRoleAssignments") $Ctx.ExecuteQuery() if ($ListItem.HasUniqueRoleAssignments -eq $true) { #Call the function to generate Permission report Get-Permissions -Object $ListItem } $Counter++ Write-Progress -PercentComplete ($Counter / ($List.ItemCount) * 100) -Activity "Processing Items $Counter of $($List.ItemCount)" -Status "Searching Unique Permissions in List Items of '$($List.Title)'" } } While ($Query.ListItemCollectionPosition -ne $null) } #Function to Check Permissions of all lists from the web Function Check-SPOListPermission([Microsoft.SharePoint.Client.Web]$Web) { #Get All Lists from the web $Lists = $Web.Lists $Ctx.Load($Lists) $Ctx.ExecuteQuery() #Get all lists from the web ForEach($List in $Lists) { #Exclude System Lists If($List.Hidden -eq $False) { #Get List Items Permissions Check-SPOListItemsPermission $List #Get the Lists with Unique permission $List.Retrieve("HasUniqueRoleAssignments") $Ctx.ExecuteQuery() If( $List.HasUniqueRoleAssignments -eq $True) { #Call the function to check permissions Get-Permissions -Object $List } } } } #Function to Check Webs's Permissions from given URL Function Check-SPOWebPermission([Microsoft.SharePoint.Client.Web]$Web) { #Get all immediate subsites of the site $Ctx.Load($web.Webs) $Ctx.executeQuery() #Call the function to Get Lists of the web Write-host -f Yellow "Searching in the Web "$Web.URL"..." #Check if the Web has unique permissions $Web.Retrieve("HasUniqueRoleAssignments") $Ctx.ExecuteQuery() #Get the Web's Permissions If($web.HasUniqueRoleAssignments -eq $true) { Get-Permissions -Object $Web } #Scan Lists with Unique Permissions Write-host -f Yellow "Searching in the Lists and Libraries of "$Web.URL"..." Check-SPOListPermission($Web) #Iterate through each subsite in the current web Foreach ($Subweb in $web.Webs) { #Call the function recursively Check-SPOWebPermission($SubWeb) } } #Call the function with RootWeb to get site collection permissions Check-SPOWebPermission $Web Write-host -f Green "User Permission Report Generated Successfully!" } Catch { write-host -f Red "Error Generating User Permission Report!" $_.Exception.Message } #Read more: https://www.sharepointdiary.com/2018/09/sharepoint-online-get-user-permission-report-using-powershell.html#ixzz8D4iV8M8P

    此答案是否有帮助?

    0 个注释 无注释
  4. 匿名
    2023-11-09T05:52:56+00:00

    Hello,

    我只需要导出一个用户对多个文档库、文档的权限,并不需要多个用户和文档库/文件/消息通知/共享等权限。
    
    关于你提供的那个脚本我们也跑过了,只能导出几十条,并没有什么用。
    
    所以请你给我一个只能导出一个用户对多个文档库、文档的权限的脚本。
    

    此答案是否有帮助?

    0 个注释 无注释
  5. 匿名
    2023-11-08T12:45:41+00:00

    尊敬的用户 您好:

    我们理解您的需求,但是非常抱歉,目前SharePoint内置功能仅可以对单个文档库/文件夹进行导出。如果您需要导出多个用户和文档库/文件/消息通知/共享等权限,请考虑使用PowerShell脚本或第三方工具。

    参考:Export all user permission for all sharepoint sites and library - Microsoft Q&A

    非常抱歉当前论坛中审阅人只提供内置功能的技术支持,对于相关脚本,建议您前往MicrosoftQA论坛发布,以获得专业工程师的代码支持。感谢您的耐心与理解!

    祝好,

    Mia

    此答案是否有帮助?

    0 个注释 无注释