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.
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.