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!

Anuncios
Esta entrada fue publicada en http://schemas.google.com/blogger/2008/kind#post, Powershell, SharePoint 2010. Guarda el enlace permanente.

Responder

Introduce tus datos o haz clic en un icono para iniciar sesión:

Logo de WordPress.com

Estás comentando usando tu cuenta de WordPress.com. Cerrar sesión / Cambiar )

Imagen de Twitter

Estás comentando usando tu cuenta de Twitter. Cerrar sesión / Cambiar )

Foto de Facebook

Estás comentando usando tu cuenta de Facebook. Cerrar sesión / Cambiar )

Google+ photo

Estás comentando usando tu cuenta de Google+. Cerrar sesión / Cambiar )

Conectando a %s