Restaurar Papelera de reciclaje SharePoint Online con PowerShell

Uno de mis usuarios eliminó una biblioteca de documentos completa que contenía más de 12000 elementos.

Sincronizó la carpeta con su escritorio y descubrió que era demasiado grande.

Desafortunadamente, eliminó los elementos de su escritorio sin detener primero la sincronización.

Puede restaurar elementos de la papelera de reciclaje en SharePoint Online, pero estos muchos elementos se pueden hacer más fácilmente con PowerShell.

Hice algunas búsquedas en Internet para encontrar una solución y encontré algunas usando PnP-Context:

$web = Get-PnPWeb
$ctx = Get-PnPContext

$Context.Load($Web)
$Context.Load($RecycleBinItems)
$Context.ExecuteQuery()

Pero esto no arrojó ningún resultado si ejecuto $recycleBinItems.count el resultado fue 0.

Finalmente, encontré una publicación de Farook Khan que tuvo un problema similar y usó PnP-RecycleBinItem.

Con tantos elementos, quiero una descripción general antes de restaurarlo. Además, quería agregar algunos filtros, como fecha y usuario.

Conexión a SharePoint

Entonces, para comenzar, necesitamos instalar el módulo PnP PowerShell si aún no lo tiene.

Install-Module SharePointPnPPowerShellOnline

Cuando termine, podemos conectarnos al sitio de SharePoint en cuestión.

Connect-PnPOnline -Url https://contoso.sharepoint.com/teams/team1

Recuperación de elementos de la papelera de reciclaje

Antes de aplicar cualquier filtro, verifiquemos si hay algún elemento en la papelera de reciclaje.

(Get-PnPRecycleBinItem).count

Puedes añadir primera etapa o Segunda etapa después de Get-PnPRecycleBinItem.

La papelera de reciclaje de la primera etapa es la que ve cuando navega en SharePoint para ir a la papelera de reciclaje.

La segunda etapa es la que verá cuando se desplace hasta la parte inferior de la primera etapa y seleccione Verifique la papelera de reciclaje de la segunda etapa.

Papelera de reciclaje en línea de SharePoint con enlace de segundo nivel resaltado

Entonces, si el conteo arroja más de 0, podemos continuar filtrando la lista para seleccionar solo los elementos que necesitamos.

filtrar por fecha

Los elementos eliminados se retienen durante 93 días en la papelera de reciclaje, por lo que es bueno filtrar por fecha.

En mi caso, el usuario eliminó los elementos ayer. Para probar la consulta, selecciono solo los últimos 10 elementos y los muestro en una lista con todas las propiedades.

#set the restore date to yesterday
$today = (Get-Date)
$restoreDate = $today.date.AddDays(-1)

#get all items that are deleted yesterday or today, select the last 10 items and display a list with all properties
Get-PnPRecycleBinItem | ? DeletedDate -gt $restoreDate | select -last 10 | fl *

Buscar archivos entre fechas

Juan preguntó si es posible restaurar los archivos entre dos fechas específicas. Y sí, eso es posible.

Agregué dos fechas, date1 es la más cercana a ahora y date2 es la más antigua. Podemos crear un filtro donde seleccionamos los archivos que son más antiguos que la fecha 2 y más recientes que la fecha 1:

$today = (Get-Date) 
$date1 = $today.date.addDays(-1)
$date2 = $today.date.addDays(-6)

Get-PnPRecycleBinItem | ? { DeletedDate -gt $date2 -and DeletedDate -lt $date1}  | select -last 10 | fl *

Filtrar por usuario

También puede filtrar el resultado por el usuario que eliminó los elementos. Agregué el filtro de papelera de reciclaje de primera etapa aquí y usé la dirección de correo electrónico del usuario, pero también podría usar el campo Eliminado por nombre

Get-PnPRecycleBinItem -FirstStage | ? DeletedByEmail -eq '[email protected]'

Si desea combinar tanto la fecha como el usuario como condición, deberá envolver ambas condiciones entre corchetes.

Get-PnPRecycleBinItem | ? {($_.DeletedDate -gt $date2 -and $_.DeletedDate -lt $date1) -and ($_.DeletedByEmail -eq '[email protected]')}  | select -last 10 | fl *

Filtrar por tipo de archivo

Otro caso común es que desea restaurar un tipo de archivo específico.

Get-PnPRecycleBinItem -FirstStage | ? LeafName -like '*.docx'

Buscar un archivo específico en un nombre de archivo

Mike preguntó si es posible encontrar un archivo específico en la papelera de reciclaje.

Debido a que estamos usando PowerShell, podemos usar todo tipo de filtros en los elementos de la papelera de reciclaje.

Utilizar el -me gusta operador para buscar en una parte del nombre del archivo. Agregar * como marcador comodín en el nombre del archivo.

Get-PnPRecycleBinItem | ? Title -Like '*test*' | ft

Se puede encontrar un archivo exacto usando el -eq operador.

Buscar en la papelera de reciclaje un nombre de archivo también devolverá carpetas que contienen, una parte del nombre. Por lo tanto, es posible que desee agregar otra condición para obtener solo los archivos:

 Get-PnPRecycleBinItem | ? {($_.Title -like '*test*') -and ($_.ItemType -eq 'File')} | ft

Exportar resultados a CSV

En el caso de un gran conjunto de archivos que deben restaurarse, siempre es bueno verificar dos veces lo que está restaurando. La forma más fácil es exportar los resultados de la búsqueda a un archivo csv para que puedas revisar todo.

Get-PnPRecycleBinItem | ? {($_.DeletedDate -gt $restoreDate) -and ($_.DeletedByEmail -eq '[email protected]')} | Export-Csv c:\temp\restore.csv

Restaurando los archivos

Si está satisfecho con el filtro, puede comenzar a restaurar los elementos de la papelera de reciclaje.

Get-PnPRecycleBinItem -firststage | ? {($_.DeletedDate -gt $restoreDate) -and ($_.DeletedByEmail -eq '[email protected]')} | Restore-PnpRecycleBinItem -Force

Guiones completos

José (vea los comentarios a continuación) creó una secuencia de comandos que restaurará recursivamente una carpeta completa de la papelera de reciclaje cuando tenga muchos elementos en su papelera de reciclaje.

Cuando tiene demasiados elementos en su papelera de reciclaje, puede obtener el error de límite de lista: “El intento de operación está prohibido porque supera el umbral de vista de lista impuesto por el administrador”, impidiéndole restaurar los archivos.

Puedes encontrar su guión. aquí en GitHub, asegúrese de comprobarlo. Al igual que con todos los scripts, ¡úselo bajo su propio riesgo!

Función Restaurar-Papelera de reciclaje

Otro lector también creó un script completo para restaurar archivos de la papelera de reciclaje y lo envolvió en una buena función.

Puedes encontrar el guión completo de George aquí en su GitHub.

Otros artículos relacionados

Habilitación del archivo local para todos los usuarios con PowerShell

Habilitación del archivo local para todos los usuarios con PowerShell

El archivo local que obtiene con Exchange Online proporciona a sus usuarios espacio de almacenamiento adicional. Con PowerShell podemos habilitar ...
Leer Más
Asignar usuarios a la aplicación Azure AD con PowerShell

Asignar usuarios a la aplicación Azure AD con PowerShell

Las aplicaciones empresariales de Azure AD son una excelente manera de conectar aplicaciones de terceros a su Azure Active Directory ...
Leer Más
Archivar buzones de usuarios en Office 365 con políticas de retención

Archivar buzones de usuarios en Office 365 con políticas de retención

Cuando los usuarios se van, desea conservar su correo o buzón. Exportarlo a archivos pst no es la forma de ...
Leer Más
Outlook 2010 solo comienza en modo seguro desde el 8 de diciembre de 2015

Outlook 2010 solo comienza en modo seguro desde el 8 de diciembre de 2015

Después de cerrar y abrir Outlook 2010, me quedé atascado en el modo seguro, sin importar lo que intentara, Outlook ...
Leer Más
¡Terminal para Windows 10 está terminado!

¡Terminal para Windows 10 está terminado!

Hace un año escribí sobre la nueva Terminal para Windows 10. En 2019 todavía era una versión beta, pero ya ...
Leer Más
Eliminar la licencia de Office 365 de un ordenador con PowerShell

Eliminar la licencia de Office 365 de un ordenador con PowerShell

Uno de mis usuarios recibió un aviso en Office 2016 de que necesitaba reactivar su suscripción a Office 365. Después ...
Leer Más

Deja un comentario