jueves, 27 de octubre de 2011

PowerShell para SharePoint 2010: Como sacar una copia de los web.config de las Aplicaciones Web de nuestra granja

He estado trabajando en la automatización del mantenimiento de los servidores de la granja de SharePoint 2010, y surgió la necesidad de sacar una copia de respaldo de estos archivos que guardan llaves de configuración, cadenas de conexión y otras configuraciones especificas de la instalación de SharePoint, por ello decidí utilizar PowerShell para SharePoint para automatizar esta tarea la cual la explico en las siguientes líneas:

get-ChildItem -recurse c:\inetpub\wwwroot\wss\virtualdirectories -include *.config

Esta línea de comando nos permitirá obtener todas las rutas de los archivos con extensión .config.   utilizamos el signo pipa para agregar otro comando relacionado con el anterior.

foreach{$ruta = get-itemproperty  $_.pspath;write-host $ruta }

La línea de arriba obtendrá la propiedad pspasth de cada línea que devuelva get-ChildItem y la desplegará (para ello utilizamos write-host) y el loop foreach para recorrer cada elemento obtenido de get-ChildItem.  Ahora vamos agregar luego de ruta a través de “;” otra línea para reemplazar el valor de la variable $ruta por el destino donde deseamos ubicar la copia de los archivos.

$destino = $ruta -replace "inetpub\\wwwroot\\wss\\virtualdirectories","migracion\reporte";

Coloqué doble \\ para que pudiese encontrar y reemplazar el valor. El valor de reemplazo no es necesario el doble \\.

$destino = $destino -replace "c:","f:";$directorio = $destino -replace "\web.config","";write-host $destino;

Ahora vamos a reemplazar el drive lógico por el del destino y por ultimo eliminar el nombre de archivo que no lo vamos a necesitar. Por último mandamos a imprimir el valor para asegurarnos que fue reemplazado con éxito.

new-item -itemType Directory -path $directorio -force ;copy-item $ruta -destination $destino –force;

Esta última línea va a crear la estructura de directorio deseado y luego copia el valor de la variable $ruta al destino que estuvimos preparando. 

La línea de comando completa es la siguiente:

get-ChildItem -recurse c:\inetpub\wwwroot\wss\virtualdirectories -include *.config | foreach{$ruta = get-itemproperty  $_.pspath;write-host $ruta ;$destino = $ruta -replace "inetpub\\wwwroot\\wss\\virtualdirectories", "migracion\reporte";$destino = $destino -replace "c:","f:";$directorio = $destino -replace "\web.config","";write-host $destino; new-item -itemType Directory -path $directorio -force ;copy-item $ruta -destination $destino -force }

En este artículo vimos como automatizar la copia de los achivos web.config de las aplicaciones web de los servidores front-end de SharePoint 2010.

SharePoint4Fun!,

Juan Manuel Herrera

No hay comentarios.: