Desplegar una plantilla personalizada en sharepoint

Desplegar una plantilla personalizada en sharepoint con powershell

Siguiendo la estela del post, convertir un sitio de sharepoint en plantilla. Vamos a realizar un script de powershell, en el cual vamos a desplegar esa plantilla creada.

El script es sencillo lo explico:

En la parte de variables debemos rellenar las variables con xxx.

hostHeader = nombre que hemos definido en el dns para el sitio

appPool = nombre del pool de iis

appPoolAccount = usuario y password para ese pool de iis

dbServer = nombre del servidor de bbdd

dbName = nombre de la bbdd que va a crear en nuestro servidor

appName = nombre que queremos darle a nuestra sitio dentro de sharepoint

siteName = titulo de nuestro de sitio de sharepoint

ownerAlias = usuario y password para propietario del sitio

En la parte de crear la aplicación web creara nuestro sitio de sharepoint así como la colección de sitio. Después de crear el sitio totalmente en blanco vamos a asignar los propietarios, yo he creado una función para asignar tanto como necesitemos.

Una vez hecho esto, vamos a asignarle la plantilla de sharepoint que creamos en el otro post. Para ello, primero a subiremos a la galería y Comprobara si el sitio tiene la característica de publicación activada y si no la activara.

Una vez hecho todo esto, activara la plantilla. El siguiente paso, es buscarla y aplicarla al sitio.

Como veis, es sencillo de entender y os puedo asegurar que muy útil si vas a generar muchos sitio en sharepoint. Como una estética parecida, o como puede ser un logo colocado en el mi sitio, o una misma estructura, o mismas fotos.

Os dejo el script completo:

Write-Output "Inicio: $(Get-Date)"
#variables
$hostHeader="xxx.xxxx.xxx"
$appPool="xxxxxx_ServiceAppPool"
$appPoolAccount="xxxx\xxxxx"
$dbServer="xxxxx.xxxxx.xxx"
$dbName="WSS_Content_xxxxxxx"
$appName="xxxxxxx"
$siteName="xxxxx"
$ownerAlias="xxxx\xxxxxx"
$rootUrl = "http://"+$hostHeader
$ap = New-SPAuthenticationProvider

#funcion para aplicar permisos a nivel de web app
function appwebpolicy($web,$user,$displayName){

Get-SPWebApplication $web | foreach { 
    $webApp = $_ 
    $policy = $webApp.Policies.Add($user, $displayName) 
    $policyRole = $webApp.PolicyRoles.GetSpecialRole([Microsoft.SharePoint.Administration.SPPolicyRoleType]::FullControl) 
    $policy.PolicyRoleBindings.Add($policyRole) 
    $webApp.Update() 
}
}

#crear la aplicacion web

New-SPWebApplication -Name $appName -Port 80 -HostHeader $hostHeader -URL $rootUrl -ApplicationPool $appPool -ApplicationPoolAccount (Get-SPManagedAccount $appPoolAccount) -AuthenticationProvider $ap -DatabaseName $dbName -DatabaseServer $dbServer
#crear coleccion de sitio
New-SPSite $rootUrl -OwnerAlias $ownerAlias -ContentDatabase $dbName -Name $siteName

#$webApp = Get-SPWebApplication $rootUrl

#$webApp.ProvisionGlobally()

Write-Output "asignar permisos"

#usamos la funcion para asignar permisos en la web app
appwebpolicy $rootUrl "i:0#.w|xxxx\xxxxx" "xxxx xxxx"
appwebpolicy $rootUrl "i:0#.w|xxxx\xxxxx" "xxxx xxxx xxxx"
appwebpolicy $rootUrl "i:0#.w|xxxx\xxxxx" "xxxx xxxx xxxx"



Write-Output "añadir plantilla"

#añadimos la plantilla a la solution gallery de la coleccion
Add-SPUserSolution -LiteralPath "C:\plantilla\plantilla_colaborativa.wsp" -Site $rootUrl

#activar feature de publicacion del sitio
Enable-SPFeature -Identity "F6924D36-2FA8-4f0b-B16D-06B7250180FA" -Url $rootUrl

#activamos la plantilla
Install-SPUserSolution -Identity plantilla_colaborativa.wsp -Site $rootUrl

Write-Output "aplicar plantilla"


#definimos variables para aplicar la plantilla
$site= new-Object Microsoft.SharePoint.SPSite($rootUrl)
$loc= [System.Int32]::Parse(1033)
$templates= $site.GetWebTemplates($loc)

#busca la plantilla
foreach ($child in $templates)
{


if ($child.title -eq "plantilla colaborativa")
{
    write-host $child.Name "" $child.Title
    $mytemplate=$child
    
    }
}

#aplicamos al plantilla solitada
$web = GET-SPWeb $rootUrl

$web.ApplyWebTemplate($mytemplate)



Write-Output "Fin: $(Get-Date)" 

Espero que os sirva.

Deja un comentario