Quantcast
Channel: SharePoint'n'stuff
Viewing all articles
Browse latest Browse all 2

Create groups in site collection using PowerShell

$
0
0
I guess you've been there before. A customer asks for creating several SharePoint groups and it all ends that you have to create several dozens of groups including adding members inside. There was useful STSADM command in SHP 2007 before but now we can do it with PowerShell. It's easy and fast.

There is already written cmdlet for this so only few tiny bits were needed to be tailored to have it as needed. What I wanted is to have CSV file as input with Group name, description, owner and members.

The existing cmdlet is from SharePointRyan Blog page, originally coming from well known guy Gary Lapointe. I've added few lines responsible for reading from the CSV file and also small try catch error clause to give you information when the file or script goes wrong.
<#
Creates groups defined in the CSV file
autor: Jiri Manek - jiri.manek@gmail.com
site: http://shpstuff.blogspot.com

CSV file structure
Group , Desc , Owner , Member
Name , Description , domain\login, domain\login
Name , Description , domain\login,
#>

#Gary's and Ryan's function tailored
function global:New-SPGroup {
<#
.Synopsis
Use New-SPGroup to create a SharePoint Group.
.Description
This function uses the Add() method of a SharePoint RoleAssignments property in an SPWeb to create a SharePoint Group.
.Notes
Name: New-SPGroup
Author: Ryan Dennis
Last Edit: July 18th 2011
Keywords: New-SPGroup
.Link
http://www.sharepointryan.com
#>
[CmdletBinding()]
Param(
[Microsoft.SharePoint.PowerShell.SPWebPipeBind]$Web,
[string]$GroupName,
[string]$OwnerName,
[string]$MemberName,
[string]$Description
)
$SPWeb = $Web.Read()
if ($SPWeb.SiteGroups[$GroupName] -ne $null){
Write-Host "Group "$GroupName" already exists!"
Break;
} else
{
$owner = $SPWeb | Get-SPUser $OwnerName
if ($MemberName -ne "") { $member = $SPWeb | Get-SPUser $MemberName }
$SPWeb.SiteGroups.Add($GroupName, $owner, $member, $Description)
$SPGroup = $SPWeb.SiteGroups[$GroupName]
$SPWeb.RoleAssignments.Add($SPGroup)
}

$SPWeb.Dispose()
return $ErrMessage
}

$web_url = Read-Host "Type web URL"
$filename = Read-Host "Type file name (including path)"

$csv = Import-csv -path $filename
if ($csv -ne $null) {
foreach($line in $csv)
{
[string]$GroupName = $line.Group;
[string]$GroupDescription = $line.Desc;
[string]$GroupOwner = $line.Owner;
[string]$GroupMember = $line.Member;
try {
New-SPGroup -Web $web_url -GroupName $GroupName -OwnerName $GroupOwner -MemberName $GroupMember -Description $GroupDescription;
Write-Host "SharePoint group" $line.Group "has been created."
}
Catch [system.exception]
{
Write-Host "Error occured - groups were not created.";
}
}
}
Just give it the CSV file and let it crunch it! ;-) If you find any issues or bugs, feel free to comment.

Viewing all articles
Browse latest Browse all 2

Latest Images

Trending Articles



Latest Images