我正在清理一个有很多垃圾团体的农场。是否有一种简单的方法可以判断这些组是否已被分配给任何东西?目的是删除具有成员但不授予任何特权的小组。

有帮助吗?

解决方案

哦,亲爱的,这似乎是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
}

在这里阅读更多有关它的信息,或者 这里 有关 C#等效于此.

许可以下: CC-BY-SA归因
scroll top