我如何找出一个小组有权获得什么?
-
16-10-2019 - |
题
我正在清理一个有很多垃圾团体的农场。是否有一种简单的方法可以判断这些组是否已被分配给任何东西?目的是删除具有成员但不授予任何特权的小组。
解决方案
哦,亲爱的,这似乎是RTFM的经典案例。
转到小组,如列出成员的页面,然后转到“设置”>“查看组权限”。
其他提示
开箱即用,没有“简单”的方法可以做到这一点。您可以在Powershell中鞭打一些东西,以通过小组进行迭代,并在农场中搜索所有东西,以查看该群体是否可以使用任何东西(显然,如果这是一个大农场,您想将其付诸实践)。还有一些第三方工具可以帮助这一点。我相信Axceler有一个可以帮助小组管理的工具,但是通常只有一次这样做,通常这些工具会有点贵。
没有开箱即用的解决方案,但是请看这两种解决方案。也许他们可以帮助您。
SharePoint访问检查器网络部分: http://accesschecker.codeplex.com/
SharePoint权限经理: http://permissionsmanager.codeplex.com/
您也可以通过编程方式查询组权限。 PowerShell中的代码样本:
# inject fake context
$web = Get-SPWeb "http://intranet.contoso.com"
$request = New-Object System.Web.HttpRequest("", $web.Url, "")
$response = New-Object System.Web.HttpResponse(New-Object System.IO.StreamWriter(New-Object System.IO.MemoryStream))
$dummyContext = New-Object System.Web.HttpContext($request, $response)
$dummyContext.Items["HttpHandlerSPWeb"] = [Microsoft.SharePoint.SPWeb]$web
[System.Web.HttpContext]::Current = $dummyContext
$groupPermissions = New-Object Microsoft.SharePoint.WebControls.GroupPermissions
# set your group here
$groupId = $web.SiteGroups["Team Site Owners"].ID
$groupPermissions.GroupId = $groupId
# set dummy Page
$groupPermissions.Page = New-Object System.Web.UI.Page
# invoke private CreateDataTable method
$groupPermissionsType = $groupPermissions.GetType()
$bindingFlags = [System.Reflection.BindingFlags]::NonPublic -bor [System.Reflection.BindingFlags]::Instance
$mi_CreateDataTable = $groupPermissionsType.GetMethod("CreateDataTable", [System.Reflection.BindingFlags]($bindingFlags))
$dataTable = $mi_CreateDataTable.Invoke($groupPermissions, $null)
#process results
$regExpPattern = [regex]'<span dir="ltr">(?<scopeUrl>.*?)</span>'
$dataTable | % {
$scopeUrl = $regExpPattern.match($_.ScopeUrl).groups[1].value
Write-Host $scopeUrl $_.Role
}