SharePoint Online: Get All Items Created or Modified by a Specific User

Requirement: Find All List Items Created or Modified by a Specific User

PowerShell to Get All Files Created or Modified by a Particular User
#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"

#Set Variables
$SiteURL = "https://crescent.sharepoint.com/sites/marketing" 
$ListName = "Team Documents" 
$UserAccount = "Salaudeen@Crescent.com"
$CSVPath = "C:\Temp\UserData.csv"
 
#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

#Resolve User account
$User = $Ctx.web.EnsureUser($UserAccount)
$Ctx.Load($User)
$Ctx.ExecuteQuery()
 
#Get the List
$List=$Ctx.Web.Lists.GetByTitle($ListName) 
$Ctx.Load($List)
$Ctx.ExecuteQuery()           

#Define CAML Query to filter items created or modified by a specific user
$Query = New-Object Microsoft.SharePoint.Client.CamlQuery
$Query.ViewXml ="@
<View Scope='RecursiveAll'>
    <Query>
        <OrderBy><FieldRef Name='Created' Ascending='FALSE'/></OrderBy>
            <Where>
                <Or>
                    <Eq>
                        <FieldRef Name='Author' LookupId='TRUE'/><Value Type='User'>$($user.Id)</Value>
                    </Eq>
                    <Eq>
                        <FieldRef Name='Editor' LookupId='TRUE' /><Value Type='User'>$($user.Id)</Value>
                    </Eq>
                </Or>
            </Where>
        </Query>
</View>"

#Get List Items matching CAML Query
$ListItems = $List.GetItems($Query)
$Ctx.Load($ListItems)
$Ctx.ExecuteQuery()
Write-host "Total Number of List Items Found:"$ListItems.count

$DataCollection = @()
#Iterate through each item
ForEach($ListItem in $ListItems)
{
    #Collect data
    $Data = New-Object PSObject -Property ([Ordered] @{
        Name  = $ListItem.FieldValues.FileLeafRef
        RelativeURL = $ListItem.FieldValues.FileRef
        CreatedBy =  $ListItem.FieldValues.Author.Email
        CreatedOn = $ListItem.FieldValues.Created
        ModifiedBy =  $ListItem.FieldValues.Editor.Email
        ModifiedOn = $ListItem.FieldValues.Modified
        FileSize = $ListItem.FieldValues.File_x0020_Size
    })
    $DataCollection += $Data
}
$DataCollection

#Export data to CSV File
$DataCollection | Export-Csv -Path $CSVPath -NoTypeInformation
SharePoint Online: Get All Items Created or Modified by a Specific User SharePoint Online: Get All Items Created or Modified by a Specific User Reviewed by Salaudeen Rajack on August 25, 2019 Rating: 5

No comments:

Please Login and comment to get your questions answered!

Powered by Blogger.