miércoles, 17 de octubre de 2012

Unir servidores a una granja SharePoint 2013 con Powershell


image

Introducción

Durante el proceso despliegue de una granja de SharePoint, cuando se trata de una topología de tres capas, resulta muy interesante intentar automatizar todas las tareas que se puedan y se dejen. En esta entrada vamos a hacer uso de algunos comandos que se se incluyen en el Snapin Microsoft.SharePoint.Powershell que nos puede salvar algún tiempo.



Generando el Script

El comando para conectar una máquina a una granja existente Connect-SPConfigurationDatabase, y podemos comprobar cuales son los parámetros mediante el comando Get-Help o en la ayuda de TechNet
Los parámetros básicos y fundamentales que debemos pasar al comando son: 1) la instancia SQL Server dónde se hospeda la base de datos de configuración, 2) el nombre de esta base de datos y 3) la frase de paso (passphrase) que se requiere para este tipo de acciones.
Connect-SPConfigurationDatabase -DatabaseServer $SQLInstance -DatabaseName $FarmConfigDB -Passphrase $FarmPassphrase

A tener en cuenta que el parámetro –Passphrase sólo acepta tipos de datos System.Security.SecureString por lo que si solicitamos la introducción de este dato al operador, que es lo habitual, hay que convertir la cadena o hacer que directamente se obtenga con este tipo de dato:
if ($Passphrase -eq ""){
                Write-Host "Introduzca la frase de paso para la granja: " -fore Yellow -NoNewline
                $FarmPassphrase = Read-Host -AsSecureString
            }
            else
            {
                $FarmPassphrase = (ConvertTo-SecureString $Passphrase -AsPlainText -force) 
            }

Si la operación se realiza correctamente nos devolverá el control del shell sin mostrar ningún mensaje. Al contrario si ocurre un error. Este comando añade el servidor a la granja, pero sólo instala los servicios básicos:

image

Por lo que es recomendable utilizar los siguientes comandos para dejar este nuevo servidor completamente disponible para formar parte de alguna de las capas (frontales web o servidores de aplicaciones):
Initialize-SPResourceSecurity 
Install-SPService   
Install-SPFeature -AllExistingFeatures



Script Completo



Para completar el script añadimos los parámetros necesarios y algunos controles en el proceso, como comprobar si la máquina ya se encuentra conectada a una granja….

Se puede descargar el script completo desde la TechNet Gallery
#Requires -version 2.0
<#

    Requiere los parámetros SQLInstance y FarmConfigDB para poder operar.
    En caso de omitir el parametro passphrase, el script le preguntará durante el proceso.
    Si la máquina ya se encuentra vinculada a una granja será desconectada antes de continuar.
    
#>
<#
Script: SP_ConectarGranja.ps1
Version: 1.0.0
Author: Víctor M García Sánchez (@Atharky)
    http://bifase.blogspot.com
    http://blogs.solidq.com/bicorner

Date:   2012-10-10
Keywords: SharePoint 2010, SharePoint 2013, Farm
Comments:
  ****************************************************************
  * DO NOT USE IN A PRODUCTION ENVIRONMENT UNTIL YOU HAVE TESTED *
  * THOROUGHLY IN A LAB ENVIRONMENT. USE AT YOUR OWN RISK.  IF   *
  * YOU DO NOT UNDERSTAND WHAT THIS SCRIPT DOES OR HOW IT WORKS, *
  * DO NOT USE IT OUTSIDE OF A SECURE, TEST SETTING.             *
  ****************************************************************
  ****************************************************************
  * NO UTILIZAR EN ENTORNOS DE PRODUCCIÓN HASTA COMPROBAR EN     *
  * UN ENTORNO DE PRUEBAS, Y SIEMPRE BAJO SU PROPIA              *
  * RESPONSABILIDAD                                              *
  * SI NO ENTIENDE EL SCRIPT O COMO FUNCIONA NO LO UTILICE FUERA *
  * DE UN ENTORNO SEGURO Y DE PRUEBAS                            *
  ****************************************************************

  THIS IS PROVIDED AS IS, AND WITHOUT WARRANTIES.
#>
Param(
    [Parameter(Mandatory=$True,Position=0)]
    [String] $SQLInstance,
    [Parameter(Mandatory=$True,Position=1)]
    [String] $FarmConfigDB,
    [Parameter(Position=2)]
    [String] $Passphrase
) #param
Begin {
    #Comprueba si se ha cargado el Snapin de SharePoint 2013
    If ((get-command | where {$_.ModuleName -ilike "*SharePoint*"}).count -eq 0){
        $ver = $host | select version
        if ($ver.Version.Major -gt 1)  {$Host.Runspace.ThreadOptions = "ReuseThread"}
        Add-PsSnapin Microsoft.SharePoint.PowerShell
    } #end if

    Clear-Host
    
}#Begin
Process {

    Try {
        $SPFarm=Get-SPFarm
        If ($SPFarm -ne $null){
            Write-warning ("Esta máquina se encuentra conectada a la granja ", $SPFarm.Name -join "")
            Write-host "¿Desea continuar conectándose a [ $FarmConfigDB ]: " -fore yellow
            Write-host "(s) Si / (n) No : " -NoNewline -fore yellow
            [char] $Continue = read-host
            

        }
        if ($Continue -ilike "s"){
            Disconnect-SPConfigurationDatabase -Confirm:$false
            if ($Passphrase -eq ""){
                Write-Host "Introduzca la frase de paso para la granja: " -fore Yellow -NoNewline
                $FarmPassphrase = Read-Host -AsSecureString
            }
            else
            {
                $FarmPassphrase = (ConvertTo-SecureString $Passphrase -AsPlainText -force) 
            }

            Connect-SPConfigurationDatabase -DatabaseServer $SQLInstance -DatabaseName $FarmConfigDB -Passphrase $FarmPassphrase
            Initialize-SPResourceSecurity 
            Install-SPService   
            Install-SPFeature -AllExistingFeatures 

        }
    } #try
    Catch{
        Write-host -fore red "Error: $_"
        Exit
    }
}#Process
End{
    Try{
        $SPFarm=Get-SPFarm
        If ($SPFarm -ne $null -and $Continue -ilike "s"){
            Write-host -fore green ("Se ha conectado correctamente a la granja ", $SPFarm.Name -join "")
        }
        elseif ($SPFarm -ne $null -and $Continue -ilike "s") {Throw "No se ha podido completar la conexión a la granja"}
    }
    Catch{
        Write-host -fore red "Error: $_"
        Exit
    }
}


Saludos!

No hay comentarios:

Publicar un comentario

Entradas populares