SharePoint Online: Belge Kitaplığı Meta Verilerini Excel'e Aktarma


Gereksinim: SharePoint Çevrimiçi Belge Kitaplığı Meta Verilerini bir CSV dosyasına aktarın.

Belge Kitaplığı Meta Verilerini PowerShell kullanarak CSV'ye aktarma:

SharePoint Online belge kitaplığı meta verilerini Excel'e aktarmanız mı gerekiyor? Belki bir rapor oluşturmanız veya verileri başka bir uygulamada kullanmanız gerekebilir. Sorun değil! Meta verileri SharePoint Online'daki herhangi bir belge kitaplığından Excel'e kolayca aktarabilirsiniz. Bu makalede size nasıl yapılacağını göstereceğiz.

Bir belge kitaplığının meta verilerini Excel'e aktarmak için herhangi bir SharePoint Online kitaplığında "Excel'e Aktar" düğmesini kullanabilirsiniz. Ancak bu işlevsellik size Sürüm Sayısı, Dosya boyutu vb. ayrıntıları vermez. Belirli bir belge kitaplığı altındaki tüm belgelerin meta verilerini ayıklamak ve bunları Excel'e aktarmak için PowerShell CSOM betiği burada verilmiştir:


#Load SharePoint CSOM Assemblies
Add-Type -Path "C:\Program Files\Common Files\Microsoft Shared\Web Server Extensions\16\ISAPI\Microsoft.SharePoint.Client.dll"
Add-Type -Path "C:\Program Files\Common Files\Microsoft Shared\Web Server Extensions\16\ISAPI\Microsoft.SharePoint.Client.Runtime.dll"
   
#Function to get all files of a folder
Function Get-FilesFromFolder([Microsoft.SharePoint.Client.Folder]$Folder)
{
    Write-host -f Yellow "Processing Folder:"$Folder.ServerRelativeUrl

    #Get All Files of the Folder
    $Ctx.load($Folder.files)
    $Ctx.ExecuteQuery()
    
    $DataCollection = @()
    ForEach ($File in $Folder.files)
    {
        #Get Metadata associated with the File
        $ListItem = $File.ListItemAllFields
        $ctx.Load($ListItem)
        $ctx.Load($File.Author)
        $ctx.Load($File.ModifiedBy)
        $Ctx.ExecuteQuery()

        Write-host -f Green "Extracting Metadata from:"$File.Name
        $Data = New-Object PSObject
        $Data | Add-Member NoteProperty Name($File.Name)
        $Data | Add-Member NoteProperty Status($ListItem["Status"])
        $Data | Add-Member NoteProperty CreatedBy($File.Author.Title)
        $Data | Add-Member NoteProperty Size($File.Length/1KB)
        $Data | Add-Member NoteProperty Versions($File.MajorVersion)
        $Data | Add-Member NoteProperty CreatedOn($File.TimeCreated)
        $Data | Add-Member NoteProperty ModifiedBy($File.ModifiedBy.Title) #LoginName
        $Data | Add-Member NoteProperty LastModifiedOn($File.TimeLastModified)
        $Data | Add-Member NoteProperty URL($SiteURL+$File.ServerRelativeUrl)         
        $DataCollection += $Data
    }
    #Export the metadata to CSV
    $DataCollection | Export-Csv $ReportOutput -Append -NoTypeInformation
        
    #Recursively Call the function to get files of all folders and SubFolders
    $Ctx.load($Folder.Folders)
    $Ctx.ExecuteQuery()

    #Exclude "Forms" system folder and iterate through each folder
    ForEach($SubFolder in $Folder.Folders | Where {$_.Name -ne "Forms"})
    {
        Get-FilesFromFolder -Folder $SubFolder
    }
}

Function Extract-SPODocLibraryMetaData()
{
    param
    (
        [Parameter(Mandatory=$true)] [string] $SiteURL,
        [Parameter(Mandatory=$true)] [string] $LibraryName
    )
    Try {
        #Setup Credentials to connect
        $Cred = Get-Credential
        $Cred = New-Object Microsoft.SharePoint.Client.SharePointOnlineCredentials($Cred.UserName,$Cred.Password)
    
        #Setup the context
        $Ctx = New-Object Microsoft.SharePoint.Client.ClientContext($SiteURL)
        $Ctx.Credentials = $Cred

        #Get the Library and Its Root Folder
        $Library=$Ctx.web.Lists.GetByTitle($LibraryName)
        $Ctx.Load($Library)
        $Ctx.Load($Library.RootFolder)
        $Ctx.ExecuteQuery()

        #Delete the Output Report, if exists
        If(Test-Path $ReportOutput) {  Remove-Item $ReportOutput }

        #Call the function to get Files of the Root Folder
        Get-FilesFromFolder -Folder $Library.RootFolder

     }
    Catch {
        write-host -f Red "Error Getting Metadata from Library!" $_.Exception.Message
    }
}
#Config Parameters
$SiteURL= "https://crescent.sharepoint.com"
$LibraryName="Project Docs"
$ReportOutput ="C:\Temp\DocMetadata.csv"

#Call the function to get list items from folder
Extract-SPODocLibraryMetaData -SiteURL $SiteURL -LibraryName $LibraryName 

SharePoint Online için bu PowerShell betiği, belge kitaplığındaki dosyaların listesini alır ve tüm belge meta verilerini bir CSV dosyasına aktarır.

Tüm belgeleri bir SharePoint Online site koleksiyonundan almanız gerekiyorsa şunu kullanın: SharePoint Online: PowerShell kullanarak Site Koleksiyonundaki Tüm Belge Envanterini Alma

PnP PowerShell kullanarak Belge Envanterini CSV'ye Aktarma

Benzer şekilde, belge envanterini SharePoint Online'dan dışarı aktarmak için PnP PowerShell'i kullanabilirsiniz:


#Parameters
$SiteURL = "https://crescent.sharepoint.com/sites/marketing"
$ListName= "Documents"
$ReportOutput = "C:\Temp\DocInventory.csv"

#Connect to SharePoint Online site
Connect-PnPOnline $SiteURL -Interactive

#Array to store results
$Results = @()

#Get all Items from the document library with given fields
$ListItems = Get-PnPListItem -List $ListName -PageSize 500 -Fields "FileLeafRef", "SMTotalFileStreamSize", "FileDirRef","Author","Created","File_x0020_Type"

#Iterate through each item
Foreach ($Item in $ListItems) 
{
    #Filter Files only
    If (($Item.FileSystemObjectType) -eq "File")
    {
        $Results += New-Object PSObject -Property ([ordered]@{
            FileName          = $Item["FileLeafRef"]
            FileType          = $Item["File_x0020_Type"]            
            RootFolder        = $Item["FileDirRef"]
            RelativeURL       = $Item["FileRef"]
            FileSize          = ($Item["SMTotalFileStreamSize"]) 
            CreatedBy         = $Item["Author"].Email
            CreatedOn         = $Item["Created"]
        })
    }
}

#Export the results
$Results
$Results | Export-Csv -Path $ReportOutput -NoTypeInformation

Özetle, bir belge kitaplığından meta veriler, meta verilerin SharePoint ortamı dışında kullanımını kolaylaştırmak için SharePoint Online'da Excel'e aktarılabilir. Excel'deki verileri sıralama, filtreleme ve analiz etme yeteneği sayesinde kullanıcılar, SharePoint'te yönettikleri içeriğe ilişkin daha derin içgörüler elde edebilir ve bu bilgileri daha bilinçli kararlar vermek için kullanabilir.

İlgili makaleler