Sharepoint: mover documentos con PowerShell

Sharepoint: mover documentos con PowerShell

¡Buenos días y bienvenidos al blog de Ncora de nuevo! Esta vez voy a hablar sobre SharePoint y PowerShell y como mover documentos.

En primer lugar haremos un poco de memoria. Hace unos meses publicamos un post sobre cómo mover documentos en SharePoint utilizando algunas opciones.

Sharepoint mover documentos con PowerShell

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:

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 este enlace donde podemos ver las opciones disponibles de restricciones que tenemos.

Abrir sitio de Sharepoint

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

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

Sharepoint mover documentos PowerShell

Aquí podemos encontrar un listado completo.

Ahora vamos a ver qué tenemos en la biblioteca de documentos…

Como podemos ver, hay un campo Departamento en el cual hay varios valores. Nos vamos a centrar en RRHH y vamos a mover el documento de este departamento 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.
  • El titulo.
  • El tamaño.
  • La 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

Sharepoint mover documentos PowerShell
Sharepoint mover documentos PowerShell

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.

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

Sharepoint mover documentos PowerShell

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

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

Sharepoint mover documentos PowerShell

Sharepoint mover documentos PowerShell y hay más…

Me gustaría añadir que se pueden hacer muchas más acciones desde la consola de PowerShell:

  • Borrar documentos.
  • 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.

Finalmente recordad que os podemos llamar y comentar qué dudas tenéis en vuestro entorno Sharepoint si necesitáis ayuda.

¡¡Saludos y hasta la próxima!!

Bonus track: código

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

<!-- wp:paragraph -->
<p>$web = get-spweb "https://portalsharepoint";</p>
<!-- /wp:paragraph -->

<!-- wp:paragraph -->
<p>$original = $web.getfolder("Documentacion");</p>
<!-- /wp:paragraph -->

<!-- wp:paragraph -->
<p>$colfiles = $original.files;</p>
<!-- /wp:paragraph -->

<!-- wp:paragraph -->
<p>$num = $colfiles.count;</p>
<!-- /wp:paragraph -->

<!-- wp:paragraph -->
<p>$num;</p>
<!-- /wp:paragraph -->

<!-- wp:paragraph -->
<p>$destino = $web.getfolder("RRHH");</p>
<!-- /wp:paragraph -->

<!-- wp:paragraph -->
<p>$i = 0;</p>
<!-- /wp:paragraph -->

<!-- wp:paragraph -->
<p>while ($i - lt $num) {</p>
<!-- /wp:paragraph -->

<!-- wp:paragraph -->
<p>&nbsp; &nbsp; $file = $colfiles[$i];</p>
<!-- /wp:paragraph -->

<!-- wp:paragraph -->
<p>&nbsp; &nbsp; $dpto = $file.properties.Departamento;</p>
<!-- /wp:paragraph -->

<!-- wp:paragraph -->
<p>&nbsp; &nbsp; if ($dpto - eq "RRHH") {</p>
<!-- /wp:paragraph -->

<!-- wp:paragraph -->
<p>&nbsp; &nbsp; &nbsp; &nbsp; $url_dest = $web.url + "/" + $destino.url + "/";</p>
<!-- /wp:paragraph -->

<!-- wp:paragraph -->
<p>&nbsp; &nbsp; &nbsp; &nbsp; $file.MoveTo($url_dest + $file.Name);</p>
<!-- /wp:paragraph -->

<!-- wp:paragraph -->
<p>&nbsp; &nbsp; &nbsp; &nbsp; $num--;</p>
<!-- /wp:paragraph -->

<!-- wp:paragraph -->
<p>&nbsp; &nbsp; }&nbsp;</p>
<!-- /wp:paragraph -->

<!-- wp:paragraph -->
<p>telse {</p>
<!-- /wp:paragraph -->

<!-- wp:paragraph -->
<p>&nbsp; &nbsp; &nbsp; &nbsp; $i++;</p>
<!-- /wp:paragraph -->

<!-- wp:paragraph -->
<p>&nbsp; &nbsp; }</p>
<!-- /wp:paragraph -->

<!-- wp:paragraph -->
<p>}</p>
<!-- /wp:paragraph -->

<!-- wp:paragraph -->
<p>$web.Dispose();</p>
<!-- /wp:paragraph -->

Deja una respuesta

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