Recuperación de elementos eliminados de la papelera de SharePoint Online mediante PowerShell

En la entrada de hoy voy a explicaros como podéis recuperar elementos eliminados de la papelera de reciclaje de SharePoint Online mediante PowerShell. Esto os será muy útil ya que, como sabréis, la papelera de reciclaje que incluye SharePoint Online, a día de hoy, ofrece muy pocas opciones para filtrar los resultados y cuando tratamos de recuperar una cantidad de información considerable muchas veces el proceso se convierte en una autentica pesadilla 🙁

Instalación de los prerequisitos

Lo primero que haremos será instalar el siguiente módulo para poder conectar con nuestra instancia de SharePoint Online. Para ello abriremos una consola de PowerShell con privilegios de administrador y ejecutaremos el siguiente comando:

Install-Module SharePointPnPPowerShellOnline

Seleccionar los elementos a recuperar

Recuperar elementos eliminados a partir de una fecha

En este ejemplo vamos a buscar los elementos eliminados desde el día de ayer, es decir, los eliminados ayer y hoy (si queréis ir más atrás debéis modificar el número que se encuentra dentro de la opción AddDays(-1)), de un sitio concreto de SharePoint (el que designemos a la hora de conectar con el comando Connect-PnPOnline) y de un usuario en concreto (modificar el parámetro [email protected]).

Modificados los datos para adaptarlos a vuestras necesidades, ejecutamos el script y nos aparecerá un listado con todos los elementos que se encuentran en la papelera de reciclaje y que cumplan con los parámetros definidos.

$hoy=(Get-Date)
$fecharestauracion = $hoy.date.AddDays(-1)
Connect-PnPOnline https://nombretenant.sharepoint.com/nombresitio
Get-PnPRecycleBinItem -firststage | ? {($_.DeletedDate -gt $fecharestauracion) -and ($_.DeletedByEmail -eq '[email protected]')}

Recuperar elementos eliminados entre 2 fechas

Ahora os mostraré como obtener los elementos eliminados, con los mismos criterios aplicados del ejemplo anterior, pero en esa ocasión entre 2 fechas concretas. Vamos a recuperar los elementos eliminados en los últimos 3 días pero sin incluir los eliminados en el día de hoy.

$hoy=(Get-Date)
$dia1 = $hoy.date.addDays(-1)
$dia2 = $hoy.date.addDays(-3)

Connect-PnPOnline https://nombretenant.sharepoint.com/nombresitio
Get-PnPRecycleBinItem -firststage | ? {($_.DeletedDate -gt $dia2 -and $_.DeletedDate -lt $dia1) -and ($_.DeletedByEmail -eq '[email protected]')}

Exportar los elementos eliminados a un fichero CSV

Si queremos exportar los elementos eliminados a un fichero csv tendríamos que utilizar cualquiera de los scripts explicados anteriormente y añadir el comando Export-Csv tal y como os muestro en el siguiente ejemplo:

$hoy=(Get-Date)
$fecharestauracion = $hoy.date.AddDays(-1)
Connect-PnPOnline https://nombretenant.sharepoint.com/nombresitio
Get-PnPRecycleBinItem -firststage | ? {($_.DeletedDate -gt $fecharestauracion) -and ($_.DeletedByEmail -eq '[email protected]')} | Export-Csv c:\temp\eliminados.csv

Recuperar los elementos eliminados

Por último, y una vez que tenemos claro como filtrar la información, para recuperar los elementos eliminados, simplemente utilizaremos cualquiera de los ejemplos explicados anteriormente, añadiremos el comando Restore-PnpRecycleBinItem, ejecutamos el script y podremos comprobar como empieza el proceso automático de recuperación el cual tardará más o menos en función del volumen del elementos a recuperar.

$hoy=(Get-Date)
$fecharestauracion = $hoy.date.AddDays(-1)
Connect-PnPOnline https://nombretenant.sharepoint.com/nombresitio
Get-PnPRecycleBinItem -firststage | ? {($_.DeletedDate -gt $fecharestauracion) -and ($_.DeletedByEmail -eq '[email protected]')} | Restore-PnpRecycleBinItem -Force

Como siempre espero os haya sido de utilidad.

Entradas relacionadas

Deja un comentario

Este sitio usa Akismet para reducir el spam. Aprende cómo se procesan los datos de tus comentarios.