Update “Created By”, “Last Modified” Metadata Fields of a List Item using PowerShell

Ever wanted to update SharePoint list or library item’s metadata fields such as: “Created By” “Modified By” “Created” “Last Modified”? These column values must be updated while copying items from one list to another, programmatically.

Today, Had an another requirement to update metadata fields in a document stored in SharePoint document library. Lets update these metadata fields such as “Created By” “Modified By” “Created” “Last Modified” using PowerShell.

sharepoint change created by and modified by powershell

Update created by field using PowerShell in SharePoint:

The below script changes created by in SharePoint list item.

Add-PSSnapin Microsoft.SharePoint.Powershell -ErrorAction SilentlyContinue
 
#Set Configuration Parameters
$WebURL = "http://portal.crescent.com/IQ/"
$ListName = "Questionnaire"
$ItemID = "147"
$UserName = "Crescent\Hamid"
 
#Get the Web, List, Item and User objects
$Web= Get-SPWeb $WebURL
$List= $web.Lists[$ListName]
$Item = $List.GetItembyID($ItemID)
$Author =$web.EnsureUser($UserName)
 
#update the created by & modified by columns
$Item["Author"] = $Author
$Item["Editor"] = $Author
$Item.SystemUpdate()

PowerShell Script to Update Metadata Fields in SharePoint:

Add-PSSnapin Microsoft.SharePoint.Powershell -ErrorAction SilentlyContinue

#Define the Parameters
$WebURL = "http://sharepoint.crescent.com/projects/1033/"
$LibraryName = "Project Documents"
$DocumentName = "Project Schedules.xlsx"
$UserName = "Global\EricCo"
$DateValue = "2013-01-01 10:05" # Should be in "yyyy-mm-dd HH:mm" format

#Get the Web 
$web= Get-SPWeb $WebURL
#Get the Library
$list= $web.Lists[$LibraryName]
#Get the User
$Author =$web.EnsureUser($UserName)
#Get the document
$Document = $list.Items | where {$_.Name -eq $DocumentName}

#update created by column sharepoint programmatically
$Document["Author"] = $Author
#set modified by programmatically
$Document["Editor"] = $Author

#Set Created Date value
$Document["Created"] =  $DateValue
#Set Last Modified Date 
$Document["Modified"] = $DateValue

$Document.UpdateOverwriteVersion() #Can use $Document.SystemUpdate() as well..

To update Created By, Created, Modified By, Modified field values in SharePoint Online, Refer: SharePoint Online: Update Created By / Modified By, Created / Modified Field Values using PowerShell

Salaudeen Rajack

Salaudeen Rajack is a SharePoint Architect with Two decades of SharePoint Experience. He loves sharing his knowledge and experiences with the SharePoint community, through his real-world articles!

5 thoughts on “Update “Created By”, “Last Modified” Metadata Fields of a List Item using PowerShell

  • September 22, 2020 at 2:20 PM

    Hi How to update the created date = modified date for all the documents in a library

    Reply
  • August 27, 2020 at 9:14 AM

    Hi Salaudeen, how can i update only those items which are created by particular
    users only ??

    Reply
  • June 24, 2019 at 2:44 PM

    can i update the created by field for particular items
    i need to update all items created by domain1user_name to be domain2user_name
    my issue is that i moved all users in domain1 to domain2 with the same names but share point see them as a new different users
    i have only one list and all users have permission to access it and using a filter view to make every one see his data only ” created_by = [ME] ”
    so script moving permissions did not solve my problem to let every one see his old items created by his old user_name
    thanks and sorry for long text

    Reply

Leave a Reply