I need the report of all the files(url, name) present in Sharepoint Online site collection and its subsites. How can i achieve this?

Mukherjee, Nilanjan 51 Reputation points
2021-08-11T07:21:39.8+00:00

I need the report of all the files(url, name) present in Sharepoint site collection and its subsites. How can i achieve this?

SharePoint
SharePoint
A group of Microsoft Products and technologies used for sharing and managing content, knowledge, and applications.
11,229 questions
0 comments No comments
{count} votes

Accepted answer
  1. Echo Du_MSFT 17,306 Reputation points
    2021-08-12T03:28:33.84+00:00

    Hello @Mukherjee, Nilanjan ,

    Welcome to Q&A Forum!

    Please run the following PowerShell script as an admin:

    $Cred = Get-Credential  
    #Set Variables  
    $SiteURL = "https://crescenttech.sharepoint.com/sites/sitename"  
    $ReportOutput = "C:\Temp\FilesReport.csv"  
       
    #Connect to PNP Online  
    Connect-PnPOnline -Url $SiteURL -Credentials $Cred  
      
    #Delete the Output report file if exists  
    If (Test-Path $ReportOutput) { Remove-Item $ReportOutput}   
      
    $DocumentsData = @()   
      
    #Get all subsites  
    $Subsites =Get-PnPSubWebs -Recurse    
      
    #Get all document libraries - Exclude Hidden Libraries  
    $DocumentLibraries = Get-PnPList | Where-Object {$_.BaseTemplate -eq 101 -and $_.Hidden -eq $false} #Or $_.BaseType -eq "DocumentLibrary"  
    #$DocumentLibraries | Select Title, DefaultViewURL, ItemCount  
    Foreach ($DocLib in $DocumentLibraries)   
    {  
      
     $Files = Get-PnPListItem -List $DocLib.Title -PageSize 500 | Where {$_["FileLeafRef"] -like "*.*"}    
      
     #Iterate through each item  
     Foreach ($File in $Files)  
     {  
     $DocumentsData += New-Object PSObject -Property @{    
     FileName = $File.FieldValues['FileLeafRef']    
     FileURL = $File.FieldValues['FileRef']   
     SiteURL = $SiteURL  
     }  
     }  
    }  
       
    ForEach($Subsite in $Subsites)   
    {    
            $FinalSubsiteurl = $Subsite.Url  
            Connect-PnPOnline -Url $FinalSubsiteurl -Credentials $Cred  
            #Get all document libraries - Exclude Hidden Libraries  
            $SubDocumentLibraries = Get-PnPList | Where-Object {$_.BaseTemplate -eq 101 -and $_.Hidden -eq $false}  
            Foreach ($SubDocLib in $SubDocumentLibraries)   
     {  
      
     $Files = Get-PnPListItem -List $SubDocLib.Title -PageSize 500 | Where {$_["FileLeafRef"] -like "*.*"}    
      
     #Iterate through each item  
     Foreach ($File in $Files)  
     {  
     $DocumentsData += New-Object PSObject -Property @{    
     FileName = $File.FieldValues['FileLeafRef']    
     FileURL = $File.FieldValues['FileRef']   
     SiteURL = $FinalSubsiteurl  
     }  
     }  
     }  
      
    }  
    #Export the results to CSV  
    $DocumentsData | Export-Csv -Path $ReportOutput -NoTypeInformation  
         
    Write-host "Document Library Inventory Exported to CSV Successfully!"   
    

    122591-csv1.png

    Thanks,
    Echo Du

    ========================
    Updated Answer ======================

    Hi @Mukherjee, Nilanjan ,

    You can execute the following command script as an admin:

     #Set Variables  
     $SiteURL = "https://crescenttech.sharepoint.com/sites/sitename"  
     $ReportOutput = "C:\Temp\FilesReport.csv"  
           
     #Connect to PNP Online  
     Connect-PnPOnline -Url $SiteURL -Interactive  
          
     #Delete the Output report file if exists  
     If (Test-Path $ReportOutput) { Remove-Item $ReportOutput}   
          
     $DocumentsData = @()   
          
     #Get all subsites  
     $Subsites =Get-PnPSubWebs -Recurse    
          
     #Get all document libraries - Exclude Hidden Libraries  
     $DocumentLibraries = Get-PnPList | Where-Object {$_.BaseTemplate -eq 101 -and $_.Hidden -eq $false} #Or $_.BaseType -eq "DocumentLibrary"  
     #$DocumentLibraries | Select Title, DefaultViewURL, ItemCount  
     Foreach ($DocLib in $DocumentLibraries)   
     {  
          
         $Files = Get-PnPListItem -List $DocLib.Title -PageSize 500 | Where {$_["FileLeafRef"] -like "*.*"}    
                          
         #Iterate through each item  
         Foreach ($File in $Files)  
         {  
             $DocumentsData += New-Object PSObject -Property @{    
                 FileName = $File.FieldValues['FileLeafRef']    
                 FileURL = $File.FieldValues['FileRef']   
                 SiteURL = $SiteURL  
             }      
         }  
     }  
           
     ForEach($Subsite in $Subsites)   
     {    
             $FinalSubsiteurl = $Subsite.Url  
             Connect-PnPOnline -Url $FinalSubsiteurl -Interactive  
             #Get all document libraries - Exclude Hidden Libraries  
             $SubDocumentLibraries = Get-PnPList | Where-Object {$_.BaseTemplate -eq 101 -and $_.Hidden -eq $false}  
             Foreach ($SubDocLib in $SubDocumentLibraries)   
             {  
          
                 $Files = Get-PnPListItem -List $SubDocLib.Title -PageSize 500 | Where {$_["FileLeafRef"] -like "*.*"}    
                          
                 #Iterate through each item  
                 Foreach ($File in $Files)  
                 {  
                     $DocumentsData += New-Object PSObject -Property @{    
                             FileName = $File.FieldValues['FileLeafRef']    
                             FileURL = $File.FieldValues['FileRef']   
                             SiteURL = $FinalSubsiteurl  
                         }      
                 }  
             }  
          
     }  
     #Export the results to CSV  
     $DocumentsData | Export-Csv -Path $ReportOutput -NoTypeInformation  
             
     Write-host "Document Library Inventory Exported to CSV Successfully!"   
    

    Thanks,
    Echo Du

    ===============================

    If an Answer is helpful, please click "Accept Answer" and upvote it.
    Note: Please follow the steps in our documentation to enable e-mail notifications if you want to receive the related email notification for this thread.


2 additional answers

Sort by: Most helpful
  1. Mukherjee, Nilanjan 51 Reputation points
    2021-08-12T09:05:29.487+00:00

    Hello @Echo Du_MSFT ,

    I have followed the same steps but something is going wrong. Attaching screenshot!

    122731-122707-png3.png

    122732-122665-png4.png


  2. Mukherjee, Nilanjan 51 Reputation points
    2021-08-16T07:45:51.87+00:00

    Hello @Echo Du_MSFT ,

    I will update you shortly on this.

    Regards,
    Nilanjan


Your answer

Answers can be marked as Accepted Answers by the question author, which helps users to know the answer solved the author's problem.