1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
| #Load SharePoint CSOM AssembliesAdd-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 Export-VersionHistory(){ param ( [Parameter(Mandatory=$true)] [string] $SiteURL, [Parameter(Mandatory=$true)] [string] $ListName, [Parameter(Mandatory=$true)] [string] $CSVFile ) Try { #Delete the Output report file if exists if (Test-Path $CSVFile) { Remove-Item $CSVFile } #Get Credentials to connect $Cred= Get-Credential $Credentials = New-Object Microsoft.SharePoint.Client.SharePointOnlineCredentials($Cred.Username, $Cred.Password) #Setup the context $Ctx = New-Object Microsoft.SharePoint.Client.ClientContext($SiteURL) $Ctx.Credentials = $Credentials #Get the List $List = $Ctx.Web.Lists.GetByTitle($ListName) $Ctx.Load($List) $Ctx.ExecuteQuery() #Get all items $Query = [Microsoft.SharePoint.Client.CamlQuery]::CreateAllItemsQuery() $ListItems = $List.GetItems($Query) $Ctx.Load($ListItems) $Ctx.ExecuteQuery() #Array to hold result $VersionHistoryData = @() #Iterate throgh each item Foreach ($Item in $ListItems) { write-host "Processing Item:" $item.id -f Yellow #Get all versions of the list item $Versions = $Item.versions $ctx.Load($Versions) $Ctx.ExecuteQuery() If($Versions.count -gt 0) { #Iterate each version Foreach($Version in $Versions) { #Get the Creator object of the version $CreatedBy = $Version.createdby $Ctx.Load($CreatedBy) $Ctx.ExecuteQuery() #Send Data to object array $VersionHistoryData += New-Object PSObject -Property @{ 'Item ID' = $Item.ID 'Title' = $Version.FieldValues["Title"] 'Version Label' = $Version.VersionLabel 'Version ID' = ($Version.VersionId/512) 'Created On' = (Get-Date ($Version.Created) -Format "yyyy-MM-dd/HH:mm:ss") 'Created By' = $CreatedBy.Email } } } } #Export the data to CSV $VersionHistoryData | Export-Csv $CSVFile -Append -NoTypeInformation write-host -f Green "Version History Exported Successfully to:" $CSVFile } Catch { write-host -f Red "Error Exporting version History to CSV!" $_.Exception.Message }}#Set parameter values$SiteURL="https://crescent.sharepoint.com"$ListName="Projects"$CSVFile="C:\Temp\VersionHistory.csv"#Call the function to generate version History ReportExport-VersionHistory -SiteURL $SiteURL -ListName $ListName -CSVFile $CSVFile |
#Read more: http://www.sharepointdiary.com/2018/01/sharepoint-online-export-list-version-history-to-excel-using-powershell.html#ixzz5PexIZeRS
No comments:
Post a Comment