Apagar arquivos e pastas recursivamente no Teams

Este artigo aborda como usar o PowerShell para apagar ficheiros e pastas recursivamente no Teams / SharePoint. Apagar pastas e arquivos no Teams / SharePoint pode ser uma tarefa desafiadora, especialmente quando se trata de pastas com milhares de arquivos e sub-pastas. Nesse caso, o PowerShell pode ser uma ferramenta útil para automatizar esse processo.

Para começar, você precisa conectar-se ao seu site SharePoint usando o comando Connect-PnPOnline. Em seguida, você precisará obter a referência para o web e a pasta que você deseja excluir.

O script abaixo é um exemplo de como apagar todos os arquivos e sub-pastas de uma pasta no SharePoint:

#Parameters
$SiteURL = "https://example.sharepoint.com/personal/example"
$FolderSiteRelativeURL = "/personal/example"
 
#Connect to the Site
Connect-PnPOnline -URL $SiteURL -UseWebLogin
 
#Get the web & folder
$Web = Get-PnPWeb
$Folder = Get-PnPFolder -Url $FolderSiteRelativeURL
 
#Function to delete all Files and sub-folders from a Folder
Function Empty-PnPFolder([Microsoft.SharePoint.Client.Folder]$Folder)
{
    #Get the site relative path of the Folder
    If($Web.ServerRelativeURL -eq "/")
    {
        $FolderSiteRelativeURL = $Folder.ServerRelativeUrl
    }
    Else
    {        
        $FolderSiteRelativeURL = $Folder.ServerRelativeUrl.Replace($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 folder
Empty-PnPFolder -Folder $Folder

Substitua as variaveis $SiteURL pelo seu link do Sharepoint e $FolderSiteRelativeURL pela diretoria onde estão os ficheiros e diretorias que quer apagar.
$SiteURL = "https://sos-admins.sharepoint.com/personal/spo_oky_sos-admins_com"
$FolderSiteRelativeURL = "/personal/spo_oky_sos-admins_com/Documents/test"

Desta forma apaga todos os ficheiros e pastas dentro da pasta pessoal /Documents/test do Teams.

Este script utiliza o cmdlet Get-PnPFolderItem para obter uma lista de todos os arquivos e sub-pastas na pasta especificada, e em seguida chama recursivamente a função Empty-PnPFolder para excluir todos os arquivos e sub-pastas. Também utiliza os cmdlets Remove-PnPFile e Remove-PnPFolder para apagar os ficheiros e pastas.