domingo, 9 de octubre de 2016

Script poderoso para crear colecciones de sitios y activar features en SharePoint 2016

Creación colecciones de sitios en SharePoint es una buena forma de distribuir el contenido, en especial si por cada colección de sitios creamos una base de datos de contenido por separado. De esta forma la copia de respaldo y la recuperación de las bases de datos de contenido pueden aislarse y administrar por separado.   

Aunque este script se ejecutó para SharePoint 2016, muy probablemente funciona para SP2013 y con algunos ajustes en 2010.

El problema
Tenemos 25 colecciones de sitios y debemos crearlas con sus bases de datos de contenido por separado ademas debemos de aplicar un master page personalizada y estilos.  

La solución
Hacer este problema vía Central Administration, demoraría mucho tiempo, por lo que se realizará un script en PowerShell para hacer las siguientes acciones:


  1. Crear una base de contenido con el nombre corto de la colección de sitios
  2. Crear una colección de sitios en esta nueva base de datos de contenido
  3. Habilitar la característica de publicación  a nivel de la colección de sitio
  4. Habilitar la característica de publicación a nivel de sitio primario
  5. Habilitar la característica de la solución personalizada  a nivel de colección de sitios

Utilizaremos dos archivos:


  1. Archivo CSV que tiene la información de la colección de sitio a crear
  2. Archivo PS1 que tiene los comandos de PowerShell para SharePoint para crearlas


El Formato del archivo CSV

Será el siguiente:

titulo, url, Sufijo

Título: Donde título es el título de la colección de sitios.

Url: Es la dirección url absoluta de la colección de sitios

Sufijo: El sufijo para la base de datos de contenido WSS_Content_[Sufijo]

Por ejemplo el archivo csv se vería así.

<# INICIO ARCHIVO NUEVASCOLECCIONES.CSV #>

titulo,url,Sufijo
RecursosHumanos,http://miportal/sitios/RRHH,RRHH
IT,http://miportal/sitios/IT,IT

<# FIN DE ARCHIVO NUEVASCOLECCIONES,CSV #>



El Script

El Script para crear las colecciones de sitios es el siguiente:

<# Script CreacionColecciones.ps1 inicia aquí  #>

#Importacion del contenido del archivo csv
$Colecciones = Import-Csv E:\Infoware\Scripts\ColeccionesNuevas.csv

#url de la WebApplication
$url = "http://miportal"

#recorre cada fila del contenido del archivo CSV
foreach($row in $Colecciones){
    
    Write-Host $row.Url $row.titulo $row.Sufijo
    
    #Construiyendo el nombre de la base de datos de contenido
    $Contentdb = "WSS_Content_"+$row.Sufijo
    
    #Creación de la base de datos de contenido para la nueva colección de sitios por crear
    New-SPContentDatabase -Name $Contentdb -WebApplication $url

    #Creación de la nueva colección de sitios con plantilla de Equipo en la nueva base de datos de contenido
    New-SPSite $row.Url -OwnerAlias "DOMINIO\spadmin" -Template "STS#0" -ContentDatabase $Contentdb -Name $row.titulo

    #Habilitación del característica de publicación a nivel de colección de sitios
    Enable-SPFeature "PublishingSite" -url $row.url

    #Habilitación de la caracteristica de publicación a nivel de sitio web primario y subsitios
    Get-SPWeb -Site $row.url -Limit all | % {Enable-SPFeature "PublishingWeb" -url $_.url}

    #Habilitación de la característica personalizada para aplicar una master page y estilos personalizados
    Enable-SPFeature -identity a830970f-9ef1-4712-8b45-f41a746d7fda -URL $row.url
}

<# FIN DEL ARCHIVO CREARCOLECCIONES.PS1 #>

Eso es  todo amigos, los dejo con las referencias bibliográficas del sitio de Technet por si les interesa conocer mas de los comandos ejecutados en este script.

New-SPContentDatabase "MyDatabase" -DatabaseServer "MyServer" -WebApplication http://sitename

New-SPSite http://www.contoso.com -OwnerAlias "DOMAIN\jdow" -HostHeaderWebApplication $w -Name "Contoso" -Template "STS#0"

Get-SPWeb -Site "http://rootWebUrl" -Limit all | % {Enable-SPFeature "PublishingWeb" -url $_.url}

Enable-SPFeature -identity "MyCustom" -URL http://somesite



SharePoint4Fun!,

Juan Manuel Herrera Ocheita

No hay comentarios.: