Búsqueda de sitios web

SharePoint Online: eliminar todos los archivos de una biblioteca de documentos mediante PowerShell


Requisito: Eliminar todos los documentos de una biblioteca en SharePoint Online.

¿Cómo eliminar todos los documentos de una biblioteca en SharePoint Online?

En SharePoint Online, es posible que en ocasiones necesite eliminar todos los archivos de una biblioteca de documentos. Por ejemplo, si está importando una gran cantidad de documentos a la biblioteca o si está limpiando archivos antiguos. Veamos cómo puedes eliminar rápidamente todos los documentos de una biblioteca.

Consejos: ¡También puedes usar la vista Explorador para eliminar varios archivos! Vaya a la biblioteca >> Haga clic en la opción "Abrir con el Explorador" en la pestaña de la cinta de la Biblioteca. ¡Seleccione y elimine archivos!

Puede eliminar varios archivos, carpetas y subcarpetas de una biblioteca de documentos de SharePoint Online con unos pocos clics:

  1. Navegue a su biblioteca de documentos de SharePoint Online en el navegador, coloque el cursor sobre el encabezado y haga clic en la marca de verificación para seleccionar todos los archivos.

  2. Haga clic en el botón "Eliminar" en la barra de enlaces superior.
  3. En el cuadro de diálogo Eliminar, confirme la operación de eliminación haciendo clic en el botón "Eliminar".

  4. Verá que aparece un pequeño cuadro de estado en la parte superior superior de la biblioteca de documentos, indicándole que el elemento se ha eliminado.

Una vez que se eliminan todos los elementos de la biblioteca de documentos, la vista de lista se actualiza y los archivos eliminados se mueven a la papelera de reciclaje del sitio de SharePoint.

Tenga en cuenta que debe asegurarse de que ningún archivo esté prestado para otros usuarios antes de eliminarlo de la biblioteca. De lo contrario, es posible que reciba el error "El archivo está desprotegido o bloqueado". Aquí hay otra publicación sobre cómo registrar todos los archivos de la biblioteca de SharePoint Online: SharePoint Online: registro masivo de todos los archivos desprotegidos mediante PowerShell

¿Estás cansado de eliminar archivos manualmente en SharePoint Online? En ocasiones, es posible que desees eliminar varios documentos a la vez. Si bien esto puede ser una tarea que requiere mucho tiempo, aquí hay un script de PowerShell para automatizar el proceso.

SharePoint Online: eliminar todos los archivos de la biblioteca de documentos mediante PowerShell

¿Sabía que puede usar PowerShell para eliminar todos los archivos de una biblioteca de documentos de SharePoint Online? Esto puede resultar útil si desea limpiar una biblioteca antes de moverla o eliminarla. Este artículo le mostrará cómo hacer esto usando PowerShell. Este script de PowerShell elimina todos los archivos de una biblioteca determinada, ¡sin eliminar ninguna carpeta que contenga!


#Load SharePoint CSOM Assemblies
Add-Type -Path "C:\Program Files\Common Files\Microsoft Shared\Web Server Extensions\16\ISAPI\Microsoft.SharePoint.Client.dll"
Add-Type -Path "C:\Program Files\Common Files\Microsoft Shared\Web Server Extensions\16\ISAPI\Microsoft.SharePoint.Client.Runtime.dll"

#Function to Delete all files from a given Folder
Function Delete-AllFilesFromFolder([Microsoft.SharePoint.Client.Folder]$Folder)
{
    Try {
        #Get All Files from the Folder
        $Ctx = $Folder.Context
        $Files = $Folder.Files
        $Ctx.Load($Files)
        $Ctx.ExecuteQuery()

        #Iterate through each File in the Root folder
        Foreach($File in $Files)
        {
            #Delete the file
            $Folder.Files.GetByUrl($File.ServerRelativeUrl).Recycle() | Out-Null
            Write-host -f Green "Deleted File '$($File.Name)' from '$($File.ServerRelativeURL)'"
        }
        $Ctx.ExecuteQuery()

        #Process all Sub Folders of the given folder
        $SubFolders = $Folder.Folders
        $Ctx.Load($SubFolders)
        $Ctx.ExecuteQuery()
        Foreach($Folder in $SubFolders)
        {
            #Exclude "Forms" and Hidden folders
            If( ($Folder.Name -ne "Forms") -and (-Not($Folder.Name.StartsWith("_"))))
            {
                #Call the function recursively
                Delete-AllFilesFromFolder -Folder $Folder
            }
        }
    }
    Catch {
    write-host -f Red "Error:" $_.Exception.Message
    }
}

#Variables for Processing
$SiteURL = "https://Crescent.sharepoint.com/sites/Marketing"
$LibraryRelativeURL = "/sites/Marketing/Shared Documents"

#Get Credentials to connect
$Cred = Get-Credential
$Credentials = New-Object Microsoft.SharePoint.Client.SharePointOnlineCredentials($Cred.Username, $Cred.Password)
 
#Setup the context
$Ctx = New-Object Microsoft.SharePoint.Client.ClientContext($SiteURL)
$Ctx.Credentials = $Credentials

#Get the Root Folder of the Library
$RootFolder=$Ctx.Web.GetFolderByServerRelativeUrl($LibraryRelativeURL)
$Ctx.Load($RootFolder)

#Call the function to delete all Files from a Folder
Delete-AllFilesFromFolder -Folder $RootFolder 

Tenga en cuenta que estos scripts utilizan el método "Reciclar" para enviar archivos a la papelera de reciclaje. ¡Puedes utilizar el método "DeleteObject" para eliminar archivos de forma permanente!

PowerShell para eliminar todos los archivos y carpetas de la biblioteca de documentos de SharePoint Online

Si desea eliminar todos los archivos y subcarpetas de una biblioteca, utilice este script de eliminación masiva:


#Load SharePoint CSOM Assemblies
Add-Type -Path "C:\Program Files\Common Files\Microsoft Shared\Web Server Extensions\16\ISAPI\Microsoft.SharePoint.Client.dll"
Add-Type -Path "C:\Program Files\Common Files\Microsoft Shared\Web Server Extensions\16\ISAPI\Microsoft.SharePoint.Client.Runtime.dll"

#Variables for Processing
$SiteURL = "https://Crescent.sharepoint.com/sites/marketing"
$LibraryRelativeURL = "/Sites/Marketing/Shared Documents"

Try {
    #Get Credentials to connect
    $Cred = Get-Credential
    $Credentials = New-Object Microsoft.SharePoint.Client.SharePointOnlineCredentials($Cred.Username, $Cred.Password)
 
    #Setup the context
    $Ctx = New-Object Microsoft.SharePoint.Client.ClientContext($SiteURL)
    $Ctx.Credentials = $Credentials

    #Get the Library and Files
    $Folder=$Ctx.Web.GetFolderByServerRelativeUrl($LibraryRelativeURL)
    $Ctx.Load($Folder)
    $Files = $Folder.Files
    $Ctx.Load($Files)
    $Ctx.ExecuteQuery()

    #Iterate through each File in the Root folder
    Foreach($File in $Files)
    {
        #Delete the file
        $Folder.Files.GetByUrl($File.ServerRelativeUrl).Recycle() | Out-Null
        Write-host -f Green "Deleted File '$($File.Name)' from '$($File.ServerRelativeURL)'"
    }
    $Ctx.ExecuteQuery()

    #Process all Sub Folders
    $SubFolders = $Folder.Folders
    $Ctx.Load($SubFolders)
    $Ctx.ExecuteQuery()
    Foreach($SubFolder in $SubFolders)
    {
        #Exclude "Forms" and Hidden folders
        If( ($SubFolder.Name -ne "Forms") -and (-Not($SubFolder.Name.StartsWith("_"))))
        {
            #Delete the folder
            $Folder.Folders.GetByUrl($SubFolder.ServerRelativeUrl).Recycle()| Out-Null
            Write-host -f Green "Deleted Folder '$($SubFolder.Name)' from '$($SubFolder.ServerRelativeUrl)'"
        }
        $Ctx.ExecuteQuery()
    }
}
Catch {
write-host -f Red "Error:" $_.Exception.Message
}

Si desea eliminar un archivo en particular, use: Eliminar archivos en SharePoint Online usando PowerShell

PnP PowerShell para eliminar todos los archivos de la biblioteca de documentos de SharePoint Online

¿Cómo elimino archivos de forma masiva en SharePoint Online? Bueno, este script de PowerShell elimina todos los archivos de todas las carpetas y subcarpetas de la biblioteca de documentos determinada. (¡No elimines las carpetas, por cierto!)


#Parameters
$SiteURL = "https://crescent.sharepoint.com/sites/icdocs"
$ListName = "Images"

#Connect to the Site
Connect-PnPOnline -URL $SiteURL -Interactive

#Get the web & document Library
$Web = Get-PnPWeb
$List = Get-PnPList -Identity $ListName

#Function to delete all items in a folder - and sub-folders recursively
Function Delete-AllFilesFromFolder($Folder)
{
    #Get the site relative path of the Folder
    If($Folder.Context.web.ServerRelativeURL -eq "/")
    {
        $FolderSiteRelativeURL = $Folder.ServerRelativeUrl
    }
    Else
    {        
        $FolderSiteRelativeURL = $Folder.ServerRelativeUrl.Replace($Folder.Context.web.ServerRelativeURL,[string]::Empty)
    }

    #Get All files in the folder
    $Files = Get-PnPFolderItem -FolderSiteRelativeUrl $FolderSiteRelativeURL -ItemType File
    
    #Delete all files
    ForEach ($File in $Files)
    {
        Write-Host ("Deleting File: '{0}' at '{1}'" -f $File.Name, $File.ServerRelativeURL)
        
        #Delete Item
        Remove-PnPFile -ServerRelativeUrl $File.ServerRelativeURL -Force -Recycle
    }

    #Process all Sub-Folders
    $SubFolders = Get-PnPFolderItem -FolderSiteRelativeUrl $FolderSiteRelativeURL -ItemType Folder
    Foreach($Folder in $SubFolders)
    {
        #Exclude "Forms" and Hidden folders
        If( ($Folder.Name -ne "Forms") -and (-Not($Folder.Name.StartsWith("_"))))
        {
            #Call the function recursively
            Delete-AllFilesFromFolder -Folder $Folder
        }
    }
}

#Get the Root Folder of the Document Library and call the function
Delete-AllFilesFromFolder -Folder $List.RootFolder

También podemos usar el cmdlet Move-PnPListItemToRecycleBin para eliminar archivos y enviarlos a la papelera de reciclaje.


#Config Variables
$SiteURL = "https://crescent.sharepoint.com/sites/marketing"
$LibraryName = "Project Documents"
 
#Connect to PnP Online
Connect-PnPOnline -Url $SiteURL -Credentials (Get-Credential)

#Get All Files from the document library - Exclude Folder Objects
$Files = Get-PnPListItem -List $LibraryName -PageSize 1000 | Where {$_["FileLeafRef"] -like "*.*"}

#Loop through each File
Write-host -f Green "Number of Files Found:"$Files.Count
ForEach($File in $Files)
{  
    Write-Host ("Deleting File '{0}' at {1}" -f $File["FileLeafRef"], $File["FileRef"])
    #Send File
    Move-PnPListItemToRecycleBin -List $LibraryName -Identity $File.Id -Force
}

Vaciar una biblioteca de documentos de SharePoint Online usando PnP PowerShell

¿Qué tal vaciar una biblioteca de documentos eliminando todos los archivos, carpetas y subcarpetas de ella?


#Parameters
$SiteURL = "https://crescent.sharepoint.com/sites/marketing"
$LibraryName = "Documents"
 
#Connect to the Site
Connect-PnPOnline -URL $SiteURL -Interactive
 
#Get the web & Root folder of the library
$Web = Get-PnPWeb
$Library = Get-PnPList -Identity $LibraryName -Includes RootFolder
$RootFolder = $Library.RootFolder

#Function to delete all Files and sub-folders from a Folder
Function Empty-PnPFolder($Folder)
{
    #Get the site relative path of the Folder
    If($Folder.Context.web.ServerRelativeURL -eq "/")
    {
        $FolderSiteRelativeURL = $Folder.ServerRelativeUrl
    }
    Else
    {        
        $FolderSiteRelativeURL = $Folder.ServerRelativeUrl.Replace($Folder.Context.web.ServerRelativeURL,[string]::Empty)
    }
 
    #Delete all files in the Folder
    $Files = Get-PnPFolderItem -FolderSiteRelativeUrl $FolderSiteRelativeURL -ItemType File
    ForEach ($File in $Files)
    {
        #Delete File
        Remove-PnPFile -ServerRelativeUrl $File.ServerRelativeURL -Force -Recycle
        Write-Host -f Green ("Deleted File: '{0}' at '{1}'" -f $File.Name, $File.ServerRelativeURL)       
    }
 
    #Process all Sub-Folders
    $SubFolders = Get-PnPFolderItem -FolderSiteRelativeUrl $FolderSiteRelativeURL -ItemType Folder
    Foreach($SubFolder in $SubFolders)
    {
        #Exclude "Forms" and Hidden folders
        If(($SubFolder.Name -ne "Forms") -and (-Not($SubFolder.Name.StartsWith("_"))))
        {
            #Call the function recursively
            Empty-PnPFolder -Folder $SubFolder
 
            #Delete the folder
            $ParentFolderURL = $FolderSiteRelativeURL.TrimStart("/")
            Remove-PnPFolder -Name $SubFolder.Name -Folder $ParentFolderURL -Force -Recycle
            Write-Host -f Green ("Deleted Folder: '{0}' at '{1}'" -f $SubFolder.Name, $SubFolder.ServerRelativeURL)
        }
    }
}
 
#Call the function to empty document library
Empty-PnPFolder -Folder $RootFolder

Si bien el script anterior funciona perfectamente bien con bibliotecas más pequeñas con <5000 archivos, en bibliotecas más grandes aparece "Get-PnPFolderItem: el intento de operación está prohibido porque excede el umbral de vista de lista". error ya que Get-PnPFolderItem no puede manejar listas y bibliotecas grandes. Entonces, aquí está el script alternativo para vaciar una biblioteca de documentos eliminando todos los archivos y carpetas que contiene más rápido con el método PnP Batch:


#Parameters
$SiteURL = "https://crescent.sharepoint.com/sites/Inventory"
$ListName = "Archive"

Try {
    #Connect to PnP Online
    Connect-PnPOnline -Url $SiteURL -Interactive
    $List =  Get-PnPList $ListName
    $ItemCount =  $List.ItemCount
    If($ItemCount -eq 0) { Write-host "Document Library is Already Empty!" -f Yellow; Break}

    #Get All Items from the Library
    $global:counter = 0
    $ListItems = Get-PnPListItem -List $ListName -PageSize 500 -Fields ID -ScriptBlock { Param($items) $global:counter += $items.Count; Write-Progress -PercentComplete `
            ($global:Counter / $ItemCount * 100) -Activity "Getting Items from List" -Status "Getting Items $global:Counter of $($ItemCount)"}
    Write-Progress -Activity "Completed Getting Items from Library $($List.Title)" -Completed

    #Sort List Items based on Server Relative URL - Descending
    $SortedItems = $ListItems | Select-Object @{Name="ServerRelativeURL";Expression={$_.FieldValues.FileRef}}, ID | Sort-Object -Descending -Property ServerRelativeURL
    
    #Delete List Items in the Batch
    $Batch = New-PnPBatch
    ForEach ($Item in $SortedItems)
    {
        Remove-PnPListItem -List $ListName -Identity $Item.ID -Recycle -Batch $Batch
        #Write-host "Deleted Item:"$Item.ServerRelativeURL
    }
    Invoke-PnPBatch -Batch $Batch -Details

    Write-host -f Green "All Items in the Library deleted Successfully!"
 }
Catch {
    write-host "Error: $($_.Exception.Message)" -foregroundcolor Red
}

Una forma más rápida de eliminar todos los elementos de una biblioteca de documentos

Si bien los métodos anteriores funcionan perfectamente, eliminar todos los elementos de bibliotecas más grandes lleva mucho tiempo. Entonces, aquí está el comando ScriptBlock PowerShell para eliminar elementos por lotes más rápido.


$SiteURL = "https://crescent.sharepoint.com/sites/papers"
$ListName = "Preservation Hold Library"
 
#Connect to PnP Online
Connect-PnPOnline -Url $SiteURL -Interactive

Get-PnPList -Identity $ListName | Get-PnPListItem -PageSize 100 -ScriptBlock {
    Param($items) Invoke-PnPQuery } | ForEach-Object { $_.Recycle() | Out-Null
}

¡Este script elimina todos los archivos y carpetas de la biblioteca de documentos dada! Para eliminar la biblioteca de documentos, utilice: ¿Cómo eliminar una biblioteca de documentos en SharePoint Online usando PowerShell?

En conclusión, eliminar todos los archivos de una biblioteca de documentos de SharePoint Online puede ser un proceso desafiante y que requiere mucho tiempo. Sin embargo, el uso de PowerShell puede hacer que este proceso sea más eficiente y sencillo. Con el script proporcionado en esta guía, puede eliminar fácilmente todos los archivos de una biblioteca de documentos de SharePoint Online en tan solo unos pocos pasos.

Preguntas frecuentes:

¿Se pueden eliminar permanentemente los archivos eliminados de SharePoint Online?

Los archivos eliminados en SharePoint Online se conservan durante un cierto período de tiempo (normalmente 93 días) antes de que se eliminen permanentemente. Los elementos eliminados de la Papelera de reciclaje del sitio se mueven a la Papelera de reciclaje de la colección de sitios, donde un administrador de la colección de sitios puede restaurarlos. Si un elemento se elimina de la Papelera de reciclaje de la colección de sitios o excede el tiempo de retención, ¡se elimina permanentemente!

¿Durante cuánto tiempo se conservan los archivos eliminados en SharePoint Online?

Los archivos eliminados en SharePoint Online se conservan durante 93 días después de eliminarlos de su ubicación original. Cuando se elimina un archivo de un sitio de SharePoint Online, va a la Papelera de reciclaje del sitio, donde se conserva durante 93 días a menos que alguien lo elimine o vacíe la Papelera de reciclaje. Si el archivo se elimina dentro de los 93 días de la Papelera de reciclaje del sitio (o papelera de reciclaje de primera etapa), ingresa a la Papelera de reciclaje de la colección de sitios (o papelera de reciclaje de segunda etapa). Después del período de retención de 93 días en total con ambas etapas de la papelera de reciclaje, los archivos eliminados se eliminan permanentemente y no se pueden restaurar.

¿Cómo elimino una plantilla de biblioteca en SharePoint Online?

Suponiendo que tiene permisos de edición, puede eliminar cualquier biblioteca de documentos o plantilla de lista haciendo clic en el engranaje de configuración, eligiendo "Información del sitio" y luego haciendo clic en "Configuración del sitio". Ahora, haga clic en Listar plantillas en Galerías, Buscar y luego elimine la plantilla que desee. Alternativamente, puede usar PowerShell para eliminar una plantilla de biblioteca de documentos en SharePoint Online

¿Cómo elimino todos los elementos de una lista de SharePoint?

Para eliminar todos los elementos de una lista de SharePoint, puede utilizar la vista "Editar en vista de cuadrícula" o "Edición rápida" para seleccionar todos los elementos y luego eliminarlos de forma masiva. Alternativamente, puede usar comandos de PowerShell para eliminar todos los elementos de la lista.

¿Cómo elimino varias versiones de documentos en SharePoint?

Para eliminar varias versiones de documentos en SharePoint Online, vaya a la biblioteca de documentos y seleccione los archivos cuyas versiones desea eliminar. Luego, haga clic derecho en el archivo y seleccione "Historial de versiones". Desde allí, puede eliminar todas las versiones anteriores de un documento haciendo clic en "Eliminar todas las versiones". Alternativamente, puede usar PowerShell para eliminar todas las versiones anteriores de documentos en SharePoint Online.

Artículos relacionados