4

I want to delete particular folders from SharePoint Document library.

I have done this using C#, Its working fine. But I want to modify the same code to powershell.

i tried below code with powershell. I want to modify this C# to Powershell Code I am having doubt in this line:

string documentLibraryFolderurl= SPContext.Current.Web.Url + "/" + oList + "/" + str + "/" + "Test" + "/" + CategoryName;
if (oWeb.GetFolder(documentLibraryFolderurlAward).Exists == true)
SPFolder folder = oWeb.GetFolder(documentLibraryFolderurlAward);
folder.Delete();

can anyone help me on this?

3 Answers 3

1

I'll assume that you know the web you want to get... Using SPContext is possible with a bit of munging but in my opinion is not required in most PS scripts. So your PS should look like:

#Get the web
$web = Get-SPWeb http://SharePoint/site/web
#Get the list. You don't need the list if you know the list path just pass it as a string instead.
$list = $web.Lists.TryGetList("Documents")
if ($list) {
    #I'm assuming you have the $str and $categoryName vars. It looks much the same if you want:
    $folder = $list.Rootfolder.ServerRelativeUrl + "/" + $str + "/" + "Test" + "/" + $CategoryName
    #or it could simply be:
    $folder = "$($list.RootFolder.ServerRelativeUrl)/$str/Test/$CategoryName"
    #Then get the folder:
    $folder = $web.GetFolder($folder)
    if ($folder.Exists) {
        $folder.Delete()
    }
}
1
Add-PSSnapin Microsoft.SharePoint.PowerShell    

$web = Get-SPWeb -Identity "http://thegowtham.sharepoint.com"    

$listname = $web.GetList("http://thegowtham.sharepoint.com /Library")    

function DeleteFiles   
{    
  param($folderUrl)    
  $folder = $web.GetFolder($folderUrl)      
  foreach ($file in $folder.Files)   
  {    
    # Delete file by deleting parent SPListItem    
    Write-Host("DELETED FILE: " + $file.name)    
    $list.Items.DeleteItemById($file.Item.Id)    
  }    

}    

# Delete root files    

DeleteFiles($listname.RootFolder.Url)    

# Delete files in folders    

foreach ($folder in $listname.Folders)   
{    
  DeleteFiles($folder.Url)    
}    

# Delete folders    

foreach ($folder in $list.Folders)   
{    
  try   
  {  
    Write-Host("DELETED FOLDER: " + $folder.name)    
    $list.Folders.DeleteItemById($folder.ID)    
  }    
  catch   
  {  
    Write-Host(“Deletion of parent folder already deleted this folder”)    
  }    
} 
2
  • I want to delete particulae folders using folder names if( $spFolder.Name = "Test") $splList.Folders.DeleteItemById($spFolder.ID) I was running powershell script error is coming "'Name' is a ReadOnly property."
    – elina
    Commented Oct 23, 2017 at 9:42
  • The correct condition would be if( $spFolder.Name == "Test") (double ==) Commented Sep 25, 2018 at 7:18
1

We can use the below PnPPowerShell Powershell commands to delete the folder from SharePoint library

PS:> Remove-PnPFolder -Name FolderNametobeDelete -Folder "Shared Document/ParentFolder"

The PnPPowerShell is available from the below URL, https://github.com/SharePoint/PnP-PowerShell . We have to install PnPPowerShell modules based on the SharePoint version.

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Not the answer you're looking for? Browse other questions tagged or ask your own question.