none
Copiar grupos de Sharepoint RRS feed

  • Pregunta

  • Buenas,

    Tenemos dos servidores con Sharepoint Server 2010, uno de desarrollo y otro de producción. Nos interesaría "Exportar e importar" los grupos creados en Sharepoint de un servidor a otro.

    ¿Es posible?

    Gracias por vuestra ayuda.

    miércoles, 10 de agosto de 2011 17:59

Respuestas

  • La posibilidad que veo es que utilices el API de SharePoint o Powershell para realizar la exportación e importación.

    Mírate este proyecto de Codeplex (http://sharepointpsscripts.codeplex.com/) tiene unos scripts para la gesión de usuarios y grupos.

     


    Alberto Diaz Martin twitter://@adiazcan | http://geeks.ms/blogs/adiazmartin | MVP SharePoint Server
    • Marcado como respuesta ManuelGB miércoles, 17 de agosto de 2011 10:18
    miércoles, 10 de agosto de 2011 19:14
  • Hola,

    Yo votaría por lo siguiente:

    • Exportar en desarrollo los grupos ya sea por PowerShell o STSADM como dice a Alberto a una estructura XML.
    • Usar esa estructura XML para importarlos en producción usando PowerShell o STSADM.

    Saludos


    ------------------------------------------------------------
    Juan Carlos González Martín MVP de SharePoint Server
    Director revista CompartiMOSS: http://www.gavd.net/servers/compartimoss/compartimoss_main.aspx
    Blog: http://geeks.ms/blogs/ciin
    Twitter: @jcgm1978
    ------------------------------------------------------------
    • Marcado como respuesta ManuelGB miércoles, 17 de agosto de 2011 10:18
    miércoles, 10 de agosto de 2011 20:01

Todas las respuestas

  • La posibilidad que veo es que utilices el API de SharePoint o Powershell para realizar la exportación e importación.

    Mírate este proyecto de Codeplex (http://sharepointpsscripts.codeplex.com/) tiene unos scripts para la gesión de usuarios y grupos.

     


    Alberto Diaz Martin twitter://@adiazcan | http://geeks.ms/blogs/adiazmartin | MVP SharePoint Server
    • Marcado como respuesta ManuelGB miércoles, 17 de agosto de 2011 10:18
    miércoles, 10 de agosto de 2011 19:14
  • Hola,

    Yo votaría por lo siguiente:

    • Exportar en desarrollo los grupos ya sea por PowerShell o STSADM como dice a Alberto a una estructura XML.
    • Usar esa estructura XML para importarlos en producción usando PowerShell o STSADM.

    Saludos


    ------------------------------------------------------------
    Juan Carlos González Martín MVP de SharePoint Server
    Director revista CompartiMOSS: http://www.gavd.net/servers/compartimoss/compartimoss_main.aspx
    Blog: http://geeks.ms/blogs/ciin
    Twitter: @jcgm1978
    ------------------------------------------------------------
    • Marcado como respuesta ManuelGB miércoles, 17 de agosto de 2011 10:18
    miércoles, 10 de agosto de 2011 20:01
  • Gracias Alberto y Juan Carlos,

    lo he hecho como habeis indicado. He cogido de base los archivos ImportGroupsAndUsers.ps1 y Export-MOSS-Profiles-XML.ps1 del proyecto Codeplex que me habeis indicado y los he retocado.

    Estoy empezando, por lo que imagino que el código se podrá mejorar en bastantes puntos, pero os lo dejo para que lo tengais de base:

    Exportar grupos a XML:

    [int]$GLOBAL:TotalGroupsUpdated = 0;
    
    function Get-Groups([string]$SiteURL)
    {
    
     	$spWeb = Get-SPWeb $SiteURL
    
     	$spGroupCollection = $spWeb.SiteGroups;
    	$GLOBAL:TotalGroupsUpdated = $spGroupCollection.count;
    
    	$xml = $spGroupCollection.xml;
    
    	$spWeb.Dispose();
    
    	$xml| Out-File AllGroupsExport.xml;
    	Write-Host "All Groups are saved in file: AllGroupsExport.xml";
    }
    
    
    function StartProcess()
    {
    	# Create the stopwatch
    	[System.Diagnostics.Stopwatch] $sw;
    	$sw = New-Object System.Diagnostics.StopWatch;
    	$sw.Start();
    	cls;
    
    	Get-Groups "http://xxxxxxxxxx/";
    
    	$sw.Stop();
    	write-host " ";
    	write-host " ";
    	write-host " ------------------------------------------------------------- ";
    	write-host " ---- "+ $GLOBAL:TotalGroupsUpdated +" Groups exported in Time: ", $sw.Elapsed.ToString(), "----";
    	write-host " ------------------------------------------------------------- ";
    	write-host " ";
    	
    }
    
    cls;
    StartProcess;

    e Importar Grupos desde XML

    param (
      	[string] $siteurl = "http://yyyyyyyyyyy/",
    	[string] $createspgroups = "AllGroupsExport.xml"
    )
    
    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";
    	$xml = [xml](gc $createspgroups )
    	$xml.Groups.Group | foreach {
    
    		$group = $_.Name;
    		$owner = $web.CurrentUser.LoginName
    		Write-Host -ForegroundColor green " $group "
    		$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"
    		}
    	}
    }
    
    
    $site.Dispose();
    Write-Host -ForegroundColor green "Done.";

    Un saludo.

    miércoles, 17 de agosto de 2011 10:25