powershell that iterate thru *.CSV file (with login and group names) and add multiple users, groups and group permissions as necessary.
if ((Get-PSSnapin "Microsoft.SharePoint.PowerShell" -ErrorAction SilentlyContinue) -eq $null) {
Write-Host "Connect Sharepoint Cmd-Let"
Add-PSSnapin Microsoft.SharePoint.PowerShell
}
$Site = Get-SPSite https://mysharepoint
$Web = $Site.RootWeb
$ownerName = "DOMAIN\SpAdmin"
$op = New-SPClaimsPrincipal $OwnerName -IdentityType WindowsSamAccountName
$owner = $Web | Get-SPUser $op
$csvlocation = "c:\csv\users.csv"
$values = Import-Csv $($csvlocation) -Delimiter ";"
$values | ForEach-Object {
#Checking this group already exist in SP
if(!$Web.SiteGroups[$_.group] -eq $_.group) {
#Adding Group and Set Permission
$Web.SiteGroups.Add($_.group, $owner, $null, $null)
$SPGroup = $Web.SiteGroups[$_.group]
$assignment = New-Object Microsoft.SharePoint.SPRoleAssignment($Web.SiteGroups[$_.group])
$role = $web.RoleDefinitions["Read"]
$assignment.RoleDefinitionBindings.Add($role);
$web.RoleAssignments.Add($assignment)
}
#Adding User to Group
$SPGroup = $Web.SiteGroups[$_.group]
$SPGroup.AddUser($_.user,"","",$_.group)
#Added User and Group listed on console
Write-Host "User :" $_.user "added to Group " $_.group
}
$web.Dispose()
$site.Dispose()