Cómo mover documentos en SharePoint gracias a Powershell

¡Buenos días y bienvenidos al blog de Ncora de nuevo!

Esta vez voy a hablar sobre SharePoint y PowerShell, si hacemos un poco de memoria, hace unos meses publicamos un post sobre cómo mover documentos en SharePoint utilizando algunas opciones.

Como pudimos ver hay opciones muy útiles, pero siempre nos puede faltar un poco la «personalización» que deseamos. Esto lo podemos suplir mediante la PowerShell de SharePoint.

Vamos a ir poco a poco hasta llegar a poder mover documentos (y sus propiedades) de manera automática y rápida.

Lo primero que vamos a hacer es comprobar si podemos ejecutar scripts en la consola, para ello ejecutaremos la PowerShell de SharePoint y lanzamos el siguiente comando:

[embeber alt=»politica_scriptspowershell» embedtype=»image» format=»fullwidth» id=»3417″]

Como podemos ver en la imagen superior, nuestra política nos permite ejecutar cualquier script. En nuestro caso, no hace falta que modifiquemos la política de ejecución. Os adjunto el siguiente enlace donde podemos ver las opciones disponibles de restricciones que tenemos.

Políticas 

A continuación, el primer paso es «abrir» el sitio SharePoint donde se encuentra la biblioteca de documentos que queremos mover.

[embeber alt=»web» embedtype=»image» format=»fullwidth» id=»3418″]

Como podemos observar, definimos una variable que llamamos $web, la cual contendrá la información y propiedades del sitio. Algunas de estas propiedades son:

[embeber alt=»propiedades» embedtype=»image» format=»fullwidth» id=»3419″]

Aquí podemos encontrar un listado completo.

Ahora vamos a ver que tenemos en la biblioteca de documentos…

[embeber alt=»contenido» embedtype=»image» format=»fullwidth» id=»3422″]

Como podemos ver hay un campo Departamento, en el cual hay varios valores, nos vamos a centrar en RRHH, vamos a mover el documento de este Dpto a su biblioteca correspondiente. Para ello, vamos a utilizar las propiedades de SPFile.

Dentro de las propiedades que nos podemos encontrar, podemos consultar, la url, titulo, tamaño, versión, si está protegido, incluso podemos ver los valores de las columnas personalizadas que estamos utilizando en la biblioteca, aquí encontraremos más información.

Biblioteca Origen = Documentación

Biblioteca destino = RRHH

[embeber alt=»original» embedtype=»image» format=»fullwidth» id=»3423″]

[embeber alt=»destino» embedtype=»image» format=»fullwidth» id=»3424″]

Ahora cogemos cualquiera de los ficheros que hay en la colección y comprobamos a que departamento pertenece. (Para comprobar todos, podemos montarnos un bucle utilizando el número de ficheros totales).

[embeber alt=»dpto» embedtype=»image» format=»fullwidth» id=»3427″]

Casualmente es el Dpto RRHH 🙂 así que vamos a moverlo a su biblioteca correspondiente. Para ello, preparamos la ruta destino…

[embeber alt=»url_dest» embedtype=»image» format=»fullwidth» id=»3428″]

Y finalmente ejecutamos la función para mover el documento:

[embeber alt=»movemos» embedtype=»image» format=»fullwidth» id=»3429″]

Ahora vamos a la biblioteca RRHH y comprobamos que se haya movido el documento y con sus propiedades.

[embeber alt=»comprobar_movimiento» embedtype=»image» format=»fullwidth» id=»3430″]

Me gustaría añadir que se pueden hacer muchas más acciones desde la consola de PowerShell, borrar documento, modificar el valor de un campo, copiar el fichero etc… En este enlace podremos ver las funcionalidades ya implementadas y disponibles para su uso.

Espero que os haya gustado el post y hayáis conocido un poco más PowerShell, una herramienta que es muy potente y se pueden hacer multitud de cosas. En próximos posts iremos viendo alguno de los scripts que utilizo.

¡¡Saludos y hasta la próxima!!

PD: Os dejo el código tipo para que podáis utilizarlo y adaptarlo a vuestras necesidades. 

$web = get-spweb «https://portalsharepoint»;

$original = $web.getfolder(«Documentacion»);

$colfiles = $original.files;

$num = $colfiles.count;

$num;

$destino = $web.getfolder(«RRHH»);

$i = 0;

while ($i – lt $num) {

    $file = $colfiles[$i];

    $dpto = $file.properties.Departamento;

    if ($dpto – eq «RRHH») {

        $url_dest = $web.url + «/» + $destino.url + «/»;

        $file.MoveTo($url_dest + $file.Name);

        $num–;

    } 

telse {

        $i++;

    }

}

$web.Dispose();

Deja un comentario

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *