How to Rename SharePoint Column Programmatically (PowerShell / C#)?

Here is how we can rename SharePoint list or site field or column programmatically with PowerShell and C# object model code:

PowerShell script to Rename a SharePoint Field:

Add-PSSnapin Microsoft.SharePoint.PowerShell -ErrorAction SilentlyContinue

$Web= Get-SPWeb "https://sharepoint.crescent.com"

#Get the "Risk Metrics" List
$list= $web.Lists.TryGetList("Risk Metrics")

#Get "Project Name" Field
$field = $list.fields | where {$_.Title -eq "Project Name"}

#Set Field Display Name and Update
$field.Title ="Program Name"
$field.Update()

Rename a SharePoint Field Programmatically (C#):

using(SPSite site=new SPSite("https://sharepoint.crescent.com"))
{
    //Get the "Risk Metrics" List
     SPList list = site.RootWeb.Lists["Risk Metrics"];

    //Get "Project Name" Field
    SPField field = list.Fields["Project Name"];

    //Set Field Display Name and Update
    field.Title = "Program Name";
    field.Update();

    //You can also use: list.Fields["Project Name"].Title = "Project Name";
     //list.Update();                 
} 

PowerShell to change field display name in SharePoint site collection:

Add-PSSnapin "Microsoft.SharePoint.Powershell" -EA SilentlyContinue

#Variables
$SiteURL = "https://sharepoint.crescent.com/"
$OldColumnName ="Department"
$NewColumnName ="Entity"

#Get the Site
$site = Get-SPSite $SiteURL

 #Iterate through each web (Sub-Site)
 foreach ($web in $site.AllWebs)
 {   
  #Array to Hold Lists with specific column
  $ListsToProcess= @()
  #Get All Lists
  $Lists = $web.Lists
  #ITerate through each list
     foreach ($list in $lists)
     {
         #Iterate through each column
         foreach ($column in $list.Fields)
         {
             #Check for the specific column
             if ($column.Title -eq $OldColumnName)
             {
                   Write-Host "Found the Column in list: " $list.Title " at "$web.Url
                   #Send it to an Array
                   $ListsToProcess+=$List
             }
         }
     }
  
  #Process each list and rename the columns
  foreach ($list in $ListsToProcess)
     {
         #Get the Old column by its name
         $column = $list.fields | where {$_.Title -eq $OldColumnName}
   
         #rename sharepoint list column powershell
         $column.Title = $NewColumnName
         $column.Update()
  }
  $web.Dispose()
 }
$site.Dispose()

Similarly, to rename a site column, use:

$Column = $web.Fields.getFieldByInternalName("Title")
$Column.Title = "Project Title"
$Column.PushChangesToLists = $True
$Column.Update()

Salaudeen Rajack

Salaudeen Rajack - SharePoint Expert with Two decades of SharePoint Experience. Love to Share my knowledge and experience with the SharePoint community, through real-time articles!

One thought on “How to Rename SharePoint Column Programmatically (PowerShell / C#)?

  • Hi Salaudeen,

    How to rename the column/field using sharepoint webservices ?Can i do that ?

    Reply

Leave a Reply

Your email address will not be published. Required fields are marked *