Hola bloggers, les comparto un script de powershell para SharePoint 2010 que puede ser de mucha ayuda en sus rutinas diarias de administración de sitios. se puede ejecutar usando el ambiente de desarrollo para powershell Integrated Scripting Enviromental (ISE).
Pueden descargarlo aqui
Designed By: Andrés Rojas
Add-PSSnapin microsoft.sharepoint.powershell
[void][System.Reflection.Assembly]::LoadWithPartialName(‘Microsoft.VisualBasic’)
[System.Reflection.Assembly]::LoadWithPartialName("System.Windows.Forms")
$var_nameExport = "";
$var_nameExport = [Microsoft.VisualBasic.Interaction]::InputBox(“Aplicación web desde donde se va a exportar”, “Migración de sitios web”)
if ($var_nameExport.length -ne 0)
{
$resultadoExport = [System.Windows.Forms.MessageBox]::Show($var_nameExport, "Valor Ingresado de la coleccion a exportar",[Windows.Forms.MessageBoxButtons]::OKCANCEL,[Windows.Forms.MessageBoxIcon]::Information)
if ($resultadoExport -eq "OK")
{
write-host "Resultado de Messagebox export:" $resultadoExport;
$appwebtoexport = $var_nameExport + "/";
$appwebtoexport;
$var_nameImport = "";
$var_nameImport = [Microsoft.VisualBasic.Interaction]::InputBox(“Aplicación web a donde va a importar”, “Migración de sitios web”)
if ($var_nameImport.length -ne 0)
{
$resultadoImport = [System.Windows.Forms.MessageBox]::Show($var_nameImport, "Valor Ingresado de la coleccion a importar",[Windows.Forms.MessageBoxButtons]::OKCANCEL,[Windows.Forms.MessageBoxIcon]::Information)
if ($resultadoImport -eq "OK")
{
write-host "Resultado de Messagebox import:" $resultadoImport;
$appwebtoimport = $var_nameImport + "/";
$appwebtoimport;
$var_nameFile = "";
$var_nameFile = [Microsoft.VisualBasic.Interaction]::InputBox(“Ruta donde se almacenarán los archivos .bak”, “Migración de sitios web”)
if ($var_nameFile.length -ne 0)
{
$resultadoPath = [System.Windows.Forms.MessageBox]::Show($var_nameFile, "Valor Ingresado de la Ruta",[Windows.Forms.MessageBoxButtons]::OKCANCEL,[Windows.Forms.MessageBoxIcon]::Information)
if ($resultadoPath -eq "OK")
{
write-host "Resultado de Messagebox path:" $resultadoPath;
$pathfile = $var_nameFile + "\";
$pathfile;
$sitios = get-spsite $appwebtoexport | get-spweb -limit all
foreach ($subsitio in $sitios){
if ($subsitio.title -eq "PWA Hosting")
{
write-host "es el root, no se toma en cuenta para la exportacion, creacion e importacion de sitios";
}
else
{
$pathfullfile = $pathfile + $subsitio.name + ".bak"
#exporta los sitios de la coleccion de sitios inicial
$exportarsitio = export-spweb $subsitio.url -path $pathfullfile
write-host "Sitio web exportado:";
$subsitio.url;
#write-host "Ruta Archivo:" $pathfullfile;
#crea los sitios en la nueva coleccion de sitios con la plantilla PWS#0
$parametro = $appwebtoimport + $subsitio.name;
New-SPWeb $parametro -Template "PWS#0" -Language 3082 -Name $subsitio.name
write-host "Sitio web creado:";
$parametro;
#write-host "Donde importar:" $appwebtoimport $subsitio.name
#exporta los sitios de la coleccion de sitios final
$parametro2 = $appwebtoimport + $subsitio.name;
Import-SPWeb $parametro2 -Path $pathfullfile
write-host "Sitio web importado:";
$appwebtoimport + $subsitio.name;
write-host "De la ruta:";
$pathfullfile;
#write-host "Importacion:" $appwebtoimport $subsitio.name " - " $pathfullfile
}
}
}
}
else
{
[System.Windows.Forms.MessageBox]::Show("Debe ingresar un valor de la ruta donde quedarán los documentos exportados en .bak", "Valor Ingresado Errado",[Windows.Forms.MessageBoxButtons]::OK,[Windows.Forms.MessageBoxIcon]::Error)
}
}
}
else
{
[System.Windows.Forms.MessageBox]::Show("Debe ingresar un valor para la coleccion a donde va aimportar", "Valor Ingresado Errado",[Windows.Forms.MessageBoxButtons]::OK,[Windows.Forms.MessageBoxIcon]::Error)
}
}
}
else
{
[System.Windows.Forms.MessageBox]::Show("Debe ingresar un valor para la coleccion de sitios a exportar", "Valor Ingresado Errado",[Windows.Forms.MessageBoxButtons]::OK,[Windows.Forms.MessageBoxIcon]::Error)
}