Anforderung: Alle Dokumente einer SharePoint-Websitesammlung im CSV-Format abrufen.
PowerShell-Befehl zum Abrufen des Dokumenteninventars einer SharePoint-Website:
SharePoint-Websitesammlungen füllen sich im Laufe der Zeit oft mit zahlreichen Dateien und Dokumenten. Ein strukturiertes Dokumenteninventar ermöglicht es Ihnen, den Überblick zu behalten – insbesondere darüber, welche Dateien wo abgelegt sind. In diesem Blogbeitrag erfahren Sie, wie Sie mit PowerShell ein vollständiges Inventar aller Dokumente Ihrer SharePoint-Websites erstellen und die Ergebnisse übersichtlich in eine CSV-Datei exportieren.
Hier ist der PowerShell-Befehl, der alle Dokumentdetails von einer bestimmten Website abruft:
Add-PSSnapin Microsoft.SharePoint.PowerShell -erroraction SilentlyContinue
#Parameter
$SiteURL = "https://sharepoint.one/sites/primestar"
$ReportFile = "C:\Temp\SP2016_Dokumenten-Inventar-Report.csv"
#Funktion zum Abrufen des Dokumenteninventarberichts:
Function Export-DocsInventory($List)
{
#Array zur Speicherung der Speicherdaten für alle Dateien
$DocInventoryCollection = @()
#Anfrage zur Stapelverarbeitung
$Query = New-Object Microsoft.SharePoint.SPQuery
$Query.ViewAttributes = "Scope='Recursive'"
$Query.RowLimit = 5000
$Counter = 1
Do {
#Die durch die Abfrage definierten Listenelemente abrufen:
$ListItems = $List.GetItems($Query)
$Query.ListItemCollectionPosition = $ListItems.ListItemCollectionPosition
#Durchlaufe jedes Listenelement:
ForEach($Item in $ListItems)
{
Write-Host "Processing File: $($File.Name) ($Counter of $($List.ItemCount))"
#Dateiinventar abrufen:
$File = $Item.File
$FileSize = $File.TotalLength
$DocInventory = New-Object PSObject
$DocInventory | Add-Member -type NoteProperty -name "File Name" -value $File.Name
$DocInventory | Add-Member -type NoteProperty -name "File Size(KB)" -value $($FileSize/1KB)
$DocInventory | Add-Member -type NoteProperty -name "Created on" -value $File.TimeCreated
$DocInventory | Add-Member -type NoteProperty -name "Last Modified" -value $File.TimeLastModified
$DocInventory | Add-Member -type NoteProperty -name "Created by" -value $File.Author.Name
$DocInventory | Add-Member -type NoteProperty -name "Parent Folder" -value $File.ParentFolder.URL
$DocInventory | Add-Member -type NoteProperty -name "URL" -value $File.URL
$DocInventoryCollection += $DocInventory
$Counter++
}
} While ($Query.ListItemCollectionPosition -ne $Null)
#Daten in eine CSV-Datei exportieren:
$DocInventoryCollection | Export-csv $ReportFile -notypeinformation -Append
}
#Websitesammlung abrufen:
$Site = Get-SPSite $SiteURL
$ResultData = @()
If(Test-Path $ReportFile) { Remove-Item $ReportFile }
#Alle Websites der Websitesammlung abrufen:
Foreach($web in $Site.AllWebs)
{
Write-host -f Yellow "Processing Site: "$Web.URL
#Alle Dokumentbibliotheken abrufen – Ausgeblendete und Systembibliotheken ausschliessen:
$DocumentLibraries = $web.lists | Where-Object { ($_.hidden -eq $false) -and ($_.IsSiteAssetsLibrary -eq $false) -and ($_.BaseType -eq "DocumentLibrary")}
#Alle Listen und Bibliotheken durchlaufen
ForEach ($Library in $DocumentLibraries)
{
#Rufen Sie die Funktion auf, um Daten zu erhalten:
Export-DocsInventory $Library
}
}
Zusammenfassend lässt sich sagen, dass das Auslesen aller Dokumente einer SharePoint-Websitesammlung eine effiziente Grundlage für die Verwaltung und Organisation von Dateien innerhalb einer Organisation bietet. Mit PowerShell können Sie problemlos Dokumentlisten aus mehreren Websitesammlungen und Unterwebsites abrufen. Die exportierte CSV-Datei lässt sich anschliessend in Microsoft Excel weiter filtern und sortieren, sodass Sie Ihre Daten gezielt analysieren und strukturieren können.
Um einen Bericht über alle Dokumente in einer SharePoint Online-Websitesammlung zu erstellen, verwenden Sie: SharePoint Online: Abrufen des gesamten Dokumenteninventars einer Website mithilfe von PowerShell

