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 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 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 Report Export -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