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.
Juan Manuel Herrera
No hay comentarios.:
Publicar un comentario