- I would like to have the report of items modified in last 24 hours from site collection
- Could anyone suggest me the best approach to hang with it either by going with SPaudit or with SPSiteDataQuery to get detail information and how can i do it.
2 Answers
You can do this with search and PowerShell as follows:
#Use Nuget to to get the latest CSOM dlls. 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" Add-Type -Path "c:\Program Files\Common Files\Microsoft Shared\Web Server Extensions\16\ISAPI\Microsoft.SharePoint.Client.Search.dll" $pass = Read-Host -Prompt "Password:" -AsSecureString $user = "[email protected]" $creds = New-Object Microsoft.SharePoint.Client.SharePointOnlineCredentials($user, $pass) $url = "https://some-tenant.sharepoint.com" $ctx = New-Object Microsoft.SharePoint.Client.ClientContext($url) $ctx.Credentials = $creds function Get-SearchResults { param ( [string]$query ) $keyWordQry = New-Object Microsoft.SharePoint.Client.Search.Query.KeywordQuery($ctx) $keyWordQry.TrimDuplicates = $false $keyWordQry.EnableStemming = $false $keyWordQry.QueryText = $query $searchExec = New-Object Microsoft.SharePoint.Client.Search.Query.SearchExecutor($ctx) $results = $searchExec.ExecuteQuery($keyWordQry) $ctx.ExecuteQuery() Write-Output $results } $query = "Write>=" + (Get-date).AddDays(-1).ToString("dd/MM/yyyy") #This returns a generic list that you can filter to get the results you need. #In this instance just the path of the modified object is being returned. $srchRes = Get-SearchResults -query $query $srchRes.Value[0].ResultRows | % {$_["Path"]} This is a basic example to get you started but you should consider paging the search results before you use this regularly. You do that by specifying a startrow and a rowlimit property for the KeywordQuery object.
You can try the following script :
$dir_to_look="D:\TestFolder" $month_backdate=$(Get-Date).AddDays(-1) Get-Childitem $dir_to_look -Recurse | where-object {!($_.psiscontainer)} | where { $_.LastWriteTime -gt $month_backdate } | foreach { Write-Host "$($_.LastWriteTime) :: $($_.Fullname) " } | export-csv -path \\share\filename.csv or
function Get-OldFiles { param($date) $folders = get-childitem “D:\TestFolder” -recurse | Where-Object {$_.psIsContainer -eq $true} foreach ($folder in $folders) { $oldfiles = Dir $folder.fullname *.* | where-object {$_.LastWriteTime -le $date} if ($oldfiles.count) { [float]$totalsize = ($oldfiles | Measure-Object -Sum length).Sum / 1KB $data = @{‘Folder’=$folder.fullname;’Count’=$oldfiles.count;’Size(Kb)’=$totalsize} New-Object -Type PSObject -Prop $data } } } Get-OldFiles ’dd/mm/yyyy′ | Export-CSV \\sharename\file.csv -NoTypeInformation Alternatively, you may try this automated solution which assists you to accomplish this tasks.
- Find No Luck in both the approach , 2nd option is generating the excel but with no data , Hope you look further in helping meMSA– MSA2017-07-04 11:15:12 +00:00Commented Jul 4, 2017 at 11:15
- 1This is not a SharePoint solution. This will only work on a local folder...Bunzab– Bunzab2017-07-04 12:27:16 +00:00Commented Jul 4, 2017 at 12:27
- There is a possibility to implement in content search web part or search results web part to show latest modified items.Nag1987– Nag19872017-07-04 15:26:30 +00:00Commented Jul 4, 2017 at 15:26