SharePoint Online'da "Klasörü silebilmeniz için önce bu klasördeki tüm öğeleri silmeniz gerekir" Hatasını Düzeltme


Sorun: Alt klasörleri ve dosyaları olan bir klasörü silmeye çalışırken, SharePoint Online veya OneDrive'da "Klasörü silebilmeniz için önce bu klasördeki tüm öğeleri silmeniz gerekir" hata mesajını aldım .

Ayrıca “İstek, alınan etkinlik tarafından iptal edildi. Boş olmayan bir klasörü silmeye çalışıyorsanız, zaman zaman beklemede olması mümkündür" hatası.

Temel Neden:

Genellikle silmeden önce klasörü boşaltmamız gerekmez. Ancak site koruma-saklama politikasındaysa veya eKeşif muhafazasındaysa bu hata mesajını alabiliriz. Site beklemeye alındığında belgeler silinebilir ancak dosya ve alt klasörlerin bulunduğu bir klasörü doğrudan silemeyiz. Veri kaybını önlemek için Korumayı bekletme bu şekilde çalışır.

“Klasörü silebilmeniz için önce bu klasördeki tüm öğeleri silmeniz gerekir” Hatasının çözümü:

Ya Genel Yönetici olarak Office 365 Güvenlik ve Uyumluluk merkezinden site için Saklama ilkesini veya eKeşif Bekletmesini devre dışı bırakırsınız (ve etkili olması için biraz zaman tanırsınız!) ya da hata mesajında belirtildiği gibi, klasör içindeki tüm dosyaları ve alt klasörleri silin. Birinci! Her klasördeki dosyaları silmek zaman alabilir, bu nedenle dosyaların bulunduğu bir klasörü silmek için "Dosya Gezgini'nde Görüntüle"yi veya bunu kolaylaştırmak için PowerShell'i kullanabilirsiniz.

SharePoint Online: PowerShell kullanarak Dosyaların Bulunduğu Klasörü Silme

Bu PowerShell betiği, Remove-PnPListItem cmdlet'ini kullanarak SharePoint Online'da verilen klasörün tüm dosyalarını ve alt klasörlerini siler.


#Config Variables
$SiteURL = "https://crescent.sharepoint.com/sites/marketing"
$ListName ="Branding"
$FolderServerRelativeURL = "/sites/Marketing/Branding/2019"
 
Try {
    #Connect to PnP Online
    Connect-PnPOnline -Url $SiteURL -Interactive
      
    #Get All Items from Folder in Batch
    $ListItems = Get-PnPListItem -List $ListName -FolderServerRelativeUrl $FolderServerRelativeURL -PageSize 2000 | Sort-Object ID -Descending
  
    #Powershell to delete all files from a folder
    ForEach ($Item in $ListItems)
    {
        Remove-PnPListItem -List $ListName -Identity $Item.Id -Recycle -Force
        Write-host "Removed File:"$Item.FieldValues.FileRef
    }
}
Catch {
    write-host "Error: $($_.Exception.Message)" -foregroundcolor Red
}

Daha fazlası burada: PowerShell kullanarak SharePoint Online'da bir Klasör Nasıl Boşaltılır?

Daha büyük bir kitaplığınız varsa, FolderServerRelativeURL parametresine sahip Get-PnPListItem cmdlet'i “PageSize” kullanmış olsanız bile başarısız olabilir. İşte SharePoint Online'da belirli bir klasördeki her şeyi silmek için kullanılan PowerShell betiği:


#Config Variables
$SiteURL = "https://crescent.sharepoint.com/sites/mumbai"
$ListName ="Work"
$FolderServerRelativeURL = "/sites/mumbai/w/Arun Tiwari/New folder/*"

Try {
    #Connect to PnP Online
    Connect-PnPOnline -Url $SiteURL -UseWebLogin
    $List = Get-PnPList $ListName
       
    #Get All Items from Folder in Batch
    $global:counter = 0;
    $ListItems = Get-PnPListItem -List $ListName -PageSize 2000 -Fields ID,FileDirRef,FileRef -ScriptBlock `
        { Param($items) $global:counter += $items.Count; Write-Progress -PercentComplete ($global:Counter / ($List.ItemCount) * 100) -Activity `
                "Getting Items from Folder '$FolderServerRelativeURL'" -Status "Getting Items $global:Counter of $($List.ItemCount)";}

    #Get List Items from the folder and Sort List Items based on Server Relative URL - Descending
    $ItemsFromFolder = $ListItems | Where {$_.FieldValues["FileDirRef"] -like $FolderServerRelativeURL } | Select-Object @{Name="ServerRelativeURL";Expression={$_.FieldValues.FileRef}}, ID | Sort-Object -Descending -Property ServerRelativeURL
    Write-host "Total Number of Items Found in the Folder:"$ItemsFromFolder.count
         
    #Delete List Items in Batch
    $Batch = New-PnPBatch
    ForEach ($Item in $ItemsFromFolder)
    {
        Remove-PnPListItem -List $ListName -Identity $Item.ID -Recycle -Batch $Batch
        Write-host "Item Queued for deletion:"$Item.ServerRelativeURL
    }
    Invoke-PnPBatch -Batch $Batch -Details

}
Catch {
    write-host "Error: $($_.Exception.Message)" -foregroundcolor Red
}

Bu hata, dosyalarınızı teslim aldığınızda ortaya çıkabilir! Düzeltmek için hepsini kontrol edin: SharePoint Online: PowerShell'den Tüm Belgeleri Toplu Teslim Etme

Sonuç olarak, "Klasörü silebilmeniz için önce bu klasördeki tüm öğeleri silmeniz gerekir" hata mesajı, klasör içindeki öğelerin silinmesi veya taşınmasıyla kolayca çözülebilir. Bu makalede özetlenen adımları izleyerek bu hatayı kolayca çözebilir ve klasörü gerektiği gibi silebilirsiniz.

İlgili makaleler