Script para el aprovisionamiento de My Site en SharePoint

Este es uno de los primeros de una serie posts, cuyo objetivo es mostrar como se pueden realizar muchas de las labores de administracion de SharePoint 2010 habituales, con scripts de PowerShell.

Comenzamos con un sencillo script que permite aprovisionar el My Site de un usuario, unicamente hay que llamar a la siguiente funcion:

[Reflection.Assembly]::LoadWithPartialName("Microsoft.SharePoint")
[Reflection.Assembly]::LoadWithPartialName("Microsoft.Office.Server")
Function CreateMySite($siteurl, $loginname)
{
	$site = New-Object Microsoft.SharePoint.SPSite($siteurl)
	$context = [Microsoft.Office.Server.ServerContext]::GetContext($site)
	$upm = New-Object Microsoft.Office.Server.UserProfiles.UserProfileManager($context)
	if ($upm.UserExists($loginname)) {
		$profile = $upm.GetUserProfile([string]$loginname)
		trap [Microsoft.Office.Server.UserProfiles.PersonalSiteExistsException]
		{
			Write-Host "WARNING: Ya existe el sitio personal del usuario: $loginname" -ForeGroundColor Red
			continue
		}
		write-host "Creando el sitio personal para el usuario: $loginname" -ForeGroundColor Green
		$profile.CreatePersonalSite();
	} else {
		Write-Host "WARNING: No existe el usuario: $loginname" -ForeGroundColor Red
	}
	$site.Dispose()
}

$siteurl = "http://misitio"
$loginname = "DOMINIO\USUARIO"
#Llamada a la funcion para crear el My Site
#CreateMySite $siteurl $loginname

En el caso que quieras provisionar todos los usuarios existentes en el UserProfile, en vez de utilizar la función anterior puedes usar esta otra:

[Reflection.Assembly]::LoadWithPartialName("Microsoft.SharePoint")
[Reflection.Assembly]::LoadWithPartialName("Microsoft.Office.Server")
Function CreateMySite($siteurl)
{
	$site = New-Object Microsoft.SharePoint.SPSite($siteurl)
	$context = [Microsoft.Office.Server.ServerContext]::GetContext($site)
	$upm = New-Object Microsoft.Office.Server.UserProfiles.UserProfileManager($context)
	foreach ($userobject in $Profiles ) {
		$loginname = $userobject.item("AccountName")
		if ($upm.UserExists($loginname)) {
			$profile = $upm.GetUserProfile([string]$loginname)
			trap [Microsoft.Office.Server.UserProfiles.PersonalSiteExistsException]
			{
				Write-Host "WARNING: Ya existe el sitio personal del usuario: $loginname" -ForeGroundColor Red
				continue
			}
			write-host "Creando el sitio personal para el usuario: $loginname" -ForeGroundColor Green
			$profile.CreatePersonalSite();
			trap
			{
				Write-Host "ERROR: Se ha producido un error al crear el sitio para: $loginname" -ForeGroundColor Red
				continue
			}
		}else{
			Write-Host "WARNING: No existe el usuario: $loginname" -ForeGroundColor Red
		}
	}
	$site.Dispose()
}

$siteurl = "http://misitio"
#Llamada a la funcion para crear el My Site
#CreateMySite $siteurl

Deja un comentario

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *