Search code examples
powershellsharepointsharepoint-2010count

This powershell doesnt give item count to all the sub or sub-sub or sub-sub-sub folders


I am trying to get a count of each folders in a document library. There are many folders under the parent. Each folder may have few more folders and each one of this may have child, grand child folders.

I can add lot more coding but I have a feeling it could be done better way. Please suggest.

$web = Get-SPWeb "http://inside.cnv.uk/sales/SouthWest"
$list = $web.Lists["SalesManJR"]
$folders = $list.RootFolder.Subfolders
foreach ($folder in $folders)
{ 
    if (!$folder.Name.Equals("Forms"))
    {       
        write-host "Folder Name: " $folder.Name  " Count: "  $folder.Files.Count
        $subfolderURL = $list.RootFolder.SubFolders[$list.Title+"/"+$folder.Name]
        $subfolders = $subfolderURL.SubFolders
        foreach ($subfolder in $subfolders)
        {
            write-host "  Sub-Folder Name: " $subfolder.Name " Count: " $subfolder.Files.Count      
        }       
    }
}
$web.Dispose()

Solution

  • The following code works.

    $web = Get-SPWeb "http://inside.cnv.uk/sales/SouthWest"
    # $list name is list display name
    $list = $web.Lists["SalesManJR"]
    $folders = $list.RootFolder.Subfolders
    
    foreach ($folder in $folders)
    { 
        if (!$folder.Name.Equals("Forms"))
        {       
            write-host ""
            write-host "Folder Name: " $folder.Name  " Count: "  $folder.Files.Count
            $subfolderURL = $list.RootFolder.SubFolders[$list.Title+"/"+$folder.Name]
            $subfolders = $subfolderURL.SubFolders
            foreach ($subfolder in $subfolders)
            {
                write-host " Folder Name: " $subfolder.Name " Count: " $subfolder.ItemCount     
                #write-host "  Sub-Folder Name: " $subfolder.Name " Count: " $subfolder.Files.Count     
    
                # Sub Folder Level 2            
                $subfolders2 = $subfolder.SubFolders
                foreach ($subfolder2 in $subfolders2)
                {
                    write-host "  Folder Name: " $subfolder2.Name " Count: " $subfolder2.ItemCount      
                    #write-host "  Sub-Folder Name: " $subfolder.Name " Count: " $subfolder.Files.Count
    
                    # Sub Folder Level 3            
                    $subfolders3 = $subfolder2.SubFolders
                    foreach ($subfolder3 in $subfolders3)
                    {
                        write-host "  Folder Name: " $subfolder3.Name " Count: " $subfolder3.ItemCount
    
                        # Sub Folder Level 4            
                        $subfolders4 = $subfolder3.SubFolders
                        foreach ($subfolder4 in $subfolders4)
                        {
                            write-host "    Folder Name: " $subfolder4.Name " Count: " $subfolder4.ItemCount                    
                        }                   
                    }
                }
            }       
        }
    }
    
    $web.Dispose()