Scenario: SharePoint provide options to have security at different level, here some related functions which you can use.
Code:
#Load SharePoint Snap In Add-PSSnapin Microsoft.SharePoint.PowerShell -ErrorAction SilentlyContinue
function Create-SPGroupInWeb
{
param ($Url, $GroupName, $PermissionLevel, $Description)
$web = Get-SPWeb -Identity $Url
if ($web.SiteGroups[$GroupName] -ne $null)
{
Write-Host "Group $GroupName already exists!" -foregroundcolor Red
}
else
{
$web.SiteGroups.Add($GroupName, $web.Site.Owner, $web.Site.Owner, $Description)
$group = $web.SiteGroups[$GroupName]
$roleAssignment = new-object Microsoft.SharePoint.SPRoleAssignment($group)
$roleDefinition = $web.Site.RootWeb.RoleDefinitions[$PermissionLevel]
$roleAssignment.RoleDefinitionBindings.Add($roleDefinition)
$web.RoleAssignments.Add($roleAssignment)
$web.Update()
Write-Host "Group $GroupName created successfully" -foregroundcolor Green
}
$web.Dispose()
}function Remove-SPPermisssionFromListGroup
{
param ($Url, $ListName, $GroupName, $PermissionLevel)
$web = Get-SPWeb -Identity $Url
$list = $web.Lists.TryGetList($ListName)
if ($list -ne $null)
{
if ($list.HasUniqueRoleAssignments -eq $False)
{
$list.BreakRoleInheritance($True)
}
else
{
if ($web.SiteGroups[$GroupName] -ne $null)
{
$group = $web.SiteGroups[$GroupName]
$roleAssign = $list.RoleAssignments.GetAssignmentByPrincipal($group);
$roleDefinition = $web.RoleDefinitions[$PermissionLevel];
$roleAssign.RoleDefinitionBindings.Remove($roleDefinition);
$roleAssign.Update();
$list.Update();
Write-Host "Successfully removed $PermissionLevel permission from $GroupName group in $ListName list." -foregroundcolor Green
}
else
{
Write-Host "Group $GroupName does not exist." -foregroundcolor Red
}
}
}
else
{
Write-Host "List $ListName does not exist!" -foregroundcolor Red
}
$web.Dispose()
}function Add-SPPermissionToListGroup
{
param ($Url, $ListName, $GroupName, $PermissionLevel)
$web = Get-SPWeb -Identity $Url
$list = $web.Lists.TryGetList($ListName)
if ($list -ne $null)
{
if ($list.HasUniqueRoleAssignments -eq $False)
{
$list.BreakRoleInheritance($True)
}
else
{
if ($web.SiteGroups[$GroupName] -ne $null)
{
$group = $web.SiteGroups[$GroupName]
$roleAssignment = new-object Microsoft.SharePoint.SPRoleAssignment($group)
$roleDefinition = $web.RoleDefinitions[$PermissionLevel];
$roleAssignment.RoleDefinitionBindings.Add($roleDefinition);
$list.RoleAssignments.Add($roleAssignment)
$list.Update();
Write-Host "Successfully added $PermissionLevel permission to $GroupName group in $ListName list. " -foregroundcolor Green
}
else
{
Write-Host "Group $GroupName does not exist." -foregroundcolor Red
}
}
}
$web.Dispose()
}function Remove-SPPermisssionFromListItemGroupSpecific
{
param ($Url, $ListName, $GroupName, $PermissionLevel)
$web = Get-SPWeb -Identity $Url
$list = $web.Lists.TryGetList($ListName)
if ($list -ne $null)
{
foreach ($item in $list.Items)
{
if ($item.HasUniqueRoleAssignments -eq $False)
{
$item.BreakRoleInheritance($True)
}
else
{
if ($web.SiteGroups[$GroupName] -ne $null)
{
$group = $web.SiteGroups[$GroupName]
$roleAssign = $item.RoleAssignments.GetAssignmentByPrincipal($group);
$roleDefinition = $web.RoleDefinitions[$PermissionLevel];
$roleAssign.RoleDefinitionBindings.Remove($roleDefinition);
$roleAssign.Update();
$item.SystemUpdate();
Write-Host "Successfully removed $PermissionLevel permission from $GroupName group in $ListName list." -foregroundcolor Green
}
else
{
Write-Host "Group $GroupName does not exist." -foregroundcolor Red
}
}
}
}
else
{
Write-Host "List $ListName does not exist!" -foregroundcolor Red
}
$web.Dispose()
}function Remove-SPPermisssionFromListItemGroupAll
{
param ($Url, $ListName, $GroupName)
$web = Get-SPWeb -Identity $Url
$list = $web.Lists.TryGetList($ListName)
if ($list -ne $null)
{
foreach ($item in $list.Items)
{
if ($item.HasUniqueRoleAssignments -eq $False)
{
$item.BreakRoleInheritance($True)
}
else
{
if ($web.SiteGroups[$GroupName] -ne $null)
{
$group = $web.SiteGroups[$GroupName]
$item.RoleAssignments.Remove($group)
$item.SystemUpdate();
Write-Host "Successfully removed $PermissionLevel permission from $GroupName group in $ListName list." -foregroundcolor Green
}
else
{
Write-Host "Group $GroupName does not exist." -foregroundcolor Red
}
}
}
}
else
{
Write-Host "List $ListName does not exist!" -foregroundcolor Red
}
$web.Dispose()
}function Add-SPPermissionToListItemGroup
{
param ($Url, $ListName, $GroupName, $PermissionLevel)
$web = Get-SPWeb -Identity $Url
$list = $web.Lists.TryGetList($ListName)
if ($list -ne $null)
{
foreach ($item in $list.Items)
{
if ($item.HasUniqueRoleAssignments -eq $False)
{
$item.BreakRoleInheritance($True)
}
else
{
if ($web.SiteGroups[$GroupName] -ne $null)
{
$group = $web.SiteGroups[$GroupName]
$roleAssignment = new-object Microsoft.SharePoint.SPRoleAssignment($group)
$roleDefinition = $web.RoleDefinitions[$PermissionLevel];
$roleAssignment.RoleDefinitionBindings.Add($roleDefinition);
$item.RoleAssignments.Add($roleAssignment)
$item.SystemUpdate();
Write-Host "Successfully added $PermissionLevel permission to $GroupName group in $ListName list. " -foregroundcolor Green
}
else
{
Write-Host "Group $GroupName does not exist." -foregroundcolor Red
}
}
}
}
$web.Dispose()
}function Add-SPPermissionToListItemGroupConditional
{
param ($Url, $ListName, $Caml, $GroupName, $PermissionLevel)
$web = Get-SPWeb -Identity $Url
$list = $web.Lists.TryGetList($ListName)
if ($list -ne $null)
{
$spQuery = New-Object Microsoft.SharePoint.SPQuery
$spQuery.Query = $Caml
$spQuery.RowLimit = 10000
$listItems = $list.GetItems($spQuery)
$listItems.Count
foreach ($item in $listItems)
{
if ($item.HasUniqueRoleAssignments -eq $False)
{
$item.BreakRoleInheritance($True)
}
else
{
if ($web.SiteGroups[$GroupName] -ne $null)
{
$group = $web.SiteGroups[$GroupName]
$roleAssignment = new-object Microsoft.SharePoint.SPRoleAssignment($group)
$roleDefinition = $web.RoleDefinitions[$PermissionLevel];
$roleAssignment.RoleDefinitionBindings.Add($roleDefinition);
$item.RoleAssignments.Add($roleAssignment)
$item.SystemUpdate();
Write-Host "Successfully added $PermissionLevel permission to $GroupName group in $ListName list. " -foregroundcolor Green
}
else
{
Write-Host "Group $GroupName does not exist." -foregroundcolor Red
}
}
}
}
$web.Dispose()
}$Url=Read-Host "Enter site url" Remove-SPPermisssionFromListItemGroupSpecific $Url "Shared Documents" "Team Visitors" "Read" Remove-SPPermisssionFromListItemGroupAll $Url "Shared Documents" "Team Visitors" Add-SPPermissionToListItemGroup $Url "Shared Documents" "Team Visitors" "Contribute" Add-SPPermissionToListItemGroupConditional $Url "Shared Documents" "<Where><Eq><FieldRef Name='Create' /><Value Type='Boolean'>1</Value></Eq></Where>" "Team Visitors" "Contribute"




1 comments:
Amazing work, Sandeep! Thanks for sharing!
Post a Comment