About Me

SharePoint Architect with over 17 years of IT Experience in various roles as SharePoint Architect, Administrator, Technical Architect, IT Analyst, Application Developer, CRM Consultant, BI Developer, Microsoft Solution Architect in Client/Server, Web and Enterprise CRM Applications in E-Commerce, Financial, Healthcare, Insurance, Telecom, Outsourcing and Technology Services.
MCITP (Pro): Microsoft Certified IT Professional: SharePoint 2010 Administrator.
MCTS: Microsoft Certified Technology Specialist, SharePoint 2010 Configuration.

Tuesday, October 25, 2011

Import Users to Site Groups


.\ImportGroupsAndUsers -siteurl http://webapp.domain.com/sites/SalesCenter  .\SalesCenter1.csv


SalesCenter1.csv
User,Group
email1@domain.com,Sales Center Members
email1@domain.com,Sales Center Members
email1@domain.com,Sales Center Members


ImportGroupsAndUsers.ps1

param (
    [string] $siteurl = "",
                [string] $importtogroups = "",
                [string] $createspgroups = "",
                [string] $importwithperm = ""
)

if ($siteurl -eq "")
{
                $siteurl = Read-Host "Site url";
}

[Void][System.Reflection.Assembly]::LoadWithPartialName("Microsoft.SharePoint");

Write-Host -ForegroundColor green "Opening SharePoint site...";

$site = New-Object Microsoft.SharePoint.SPSite($siteurl)
$web = $site.RootWeb;

if ($createspgroups -ne "")
{
                Write-Host -ForegroundColor green "Importing sharepoint groups from $createspgroups";
                ipcsv $createspgroups | foreach {
                                $group = $_.GroupName;
                                $perm = $_.Permissions;
                                $owner = $_.Owner;
                                if ($owner -eq "") { $owner = $web.CurrentUser.LoginName }
                               
                                Write-Host -ForegroundColor green "  $group (owner = $owner, perm = $perm)"
                                $exists = $web.SiteGroups | where { $_.Name -eq $group }
                                if ($exists -eq $null)
                                {
                                                # Create group
                                                $web.SiteGroups.Add($group, $web.EnsureUser($owner), $null, "");
                                                # Give permissions to the group
                                                $assign = New-Object Microsoft.SharePoint.SPRoleAssignment($web.SiteGroups[$group]);
                                                $assign.RoleDefinitionBindings.Add($web.RoleDefinitions[$perm])
                                                $web.RoleAssignments.Add($assign)
                                }
                                else
                                {
                                                Write-Host -ForegroundColor magenta "    already exist"
                                }
                }
}

if ($importtogroups -ne "")
{
                Write-Host -ForegroundColor green "Importing users from $importtogroups";
                ipcsv $importtogroups | foreach {
                                $user = $_.User
                                $group = $_.Group
                                Write-Host -ForegroundColor green "  $user -> $group"
                                # Add user to the web
                                $spuser = $web.EnsureUser($user);
                                # Add user to group
                                if ($group -ne "")
                                {
                                                $web.SiteGroups[$group].AddUser($spuser);
                                }
                }
}

if ($importwithperm -ne "")
{
                Write-Host -ForegroundColor green "Importing ad groups from $importwithperm";
                ipcsv $importwithperm | foreach {
                                $group = $_.GroupName;
                                $perm = $_.Permissions;
                               
                                Write-Host -ForegroundColor green "  $group (perm = $perm)"
                                $sp = $web.EnsureUser($group);

                                # Give permissions to the group
                                $assign = New-Object Microsoft.SharePoint.SPRoleAssignment($sp);
                                $assign.RoleDefinitionBindings.Add($web.RoleDefinitions[$perm])
                                $web.RoleAssignments.Add($assign)
                }
}

$site.Dispose();
Write-Host -ForegroundColor green "Done.";
 

No comments:

Post a Comment