Búsqueda de sitios web

SharePoint Online: Informe del inventario de documentos del sitio (biblioteca, carpeta, subcarpeta y archivos) mediante PowerShell


Requisito: Generar un informe de inventario que contenga todas las bibliotecas, carpetas, subcarpetas y detalles de archivos de documentos de una colección de sitios de SharePoint Online.

SharePoint Online: informe de inventario del sitio mediante PowerShell

¿Necesita crear un informe de inventario de todos los documentos en un sitio de SharePoint Online? Bueno, ¡puedes usar PowerShell para hacer eso! En esta publicación de blog, le mostraré cómo crear un informe de inventario de todos los documentos de un sitio utilizando el script PowerShell. Así como información sobre cada documento como nombre de archivo, tipo de archivo, fecha de última modificación, etc.

Queríamos encontrar la cantidad de archivos, carpetas y subcarpetas en cada biblioteca de documentos en un sitio de SharePoint Online. Este script de PowerShell extrae el inventario de todas las bibliotecas de documentos, carpetas, subcarpetas y archivos de una colección de sitios de SharePoint Online determinada en un informe CSV.


#Function to collect site Inventory
Function Get-PnPSiteInventory
{
[cmdletbinding()]
   param([parameter(Mandatory = $true, ValueFromPipeline = $true)] $Web)

    #Skip Apps
    If($Web.url -notlike "$SiteURL*") { return }
   
    Write-host "Getting Site Inventory from Site '$($Web.URL)'" -f Yellow
 
    #Exclude certain libraries
    $ExcludedLists = @("Form Templates", "Preservation Hold Library") 
                               
    #Get All Document Libraries from the Web
    $Lists= Get-PnPProperty -ClientObject $Web -Property Lists
    $Lists | Where-Object {$_.BaseType -eq "DocumentLibrary" -and $_.Hidden -eq $false -and $_.Title -notin $ExcludedLists -and $_.ItemCount -gt 0} -PipelineVariable List | ForEach-Object {
        #Get Items from List   
        $global:counter = 0;
        $ListItems = Get-PnPListItem -List $_ -PageSize $Pagesize -Fields Author, Created -ScriptBlock `
                 { Param($items) $global:counter += $items.Count; Write-Progress -PercentComplete ($global:Counter / ($_.ItemCount) * 100) -Activity "Getting Inventory from '$($_.Title)'" -Status "Processing Items $global:Counter to $($_.ItemCount)";}
        Write-Progress -Activity "Completed Retrieving Inventory from Library $($List.Title)" -Completed
     
            #Get Root folder of the List
            $Folder = Get-PnPProperty -ClientObject $_ -Property RootFolder
            
            $SiteInventory = @()
            #Iterate through each Item and collect data           
            ForEach($ListItem in $ListItems)
            {  
                #Collect item data
                $SiteInventory += New-Object PSObject -Property ([ordered]@{
                    SiteName  = $Web.Title
                    SiteURL  = $Web.URL
                    LibraryName = $List.Title
                    ParentFolderURL = $Folder.ServerRelativeURL
                    Name = $ListItem.FieldValues.FileLeafRef
                    Type = $ListItem.FileSystemObjectType
                    ItemRelativeURL = $ListItem.FieldValues.FileRef
                    CreatedBy = $ListItem.FieldValues.Author.Email
                    CreatedAt = $ListItem.FieldValues.Created
                    ModifiedBy = $ListItem.FieldValues.Editor.Email
                    ModifiedAt = $ListItem.FieldValues.Modified
                })
            }
            #Export the result to CSV file
            $SiteInventory | Export-CSV $CSVReport -NoTypeInformation -Append
        }
}

#Parameters
$SiteURL = "https://crescent.SharePoint.com/sites/Marketing"
$CSVReport = "C:\Temp\SiteInventory.csv"
$Pagesize = 2000

#Connect to Site collection
Connect-PnPOnline -Url $SiteURL -Interactive

#Delete the Output Report, if exists
If (Test-Path $CSVReport) { Remove-Item $CSVReport }    
  
#Call the Function for all Webs
Get-PnPSubWeb -Recurse -IncludeRootWeb | ForEach-Object { Get-PnPSiteInventory $_ }
   
Write-host "Site Inventory Report has been Exported to '$CSVReport'"  -f Green

Una vez ejecutado, este script genera un archivo CSV en este formato:

Si necesita generar un informe de inventario de documentos para una única biblioteca de documentos, use este script: SharePoint Online: PowerShell para enumerar todos los archivos del inventario en una biblioteca de documentos

En conclusión, crear un inventario de documentos en SharePoint puede ser una tarea que requiere mucho tiempo, especialmente cuando tiene varias bibliotecas de documentos y miles de documentos. Sin embargo, utilizando PowerShell, puedes automatizar el proceso y generar un inventario de documentos de forma rápida y eficiente. Al utilizar el script proporcionado en este tutorial, puede generar rápida y fácilmente un inventario de documentos que contenga información importante como el título, la URL, el título de la biblioteca, el autor y la fecha de creación de cada documento en un archivo CSV. Este inventario se puede utilizar para diversos fines, como auditoría, cumplimiento y generación de informes.

Artículos relacionados