Sharepoint 2010 Create Custom Site Column and Add to Content Type using Powershell

Sometimes we need to add column to existing content type. For the same there are two ways.

  • one is delete content type. If it has used some where else than first need to delete that target and after that delete this content type and create from scratch. So its a very long process. 
  • Another way is create a site column first and add that column to content type(Using Powershell) as below. It will help you for sure.


clear 
Remove-PSSnapin Microsoft.SharePoint.Powershell -ErrorAction SilentlyContinue 
Add-PSSnapin Microsoft.SharePoint.Powershell

Function AddFieldToContentType($web, $ctype, $fieldName, $DisplayName)
{
    $ct = $web.ContentTypes[$ctype]
    $fieldXMLString = '<Field Type="Text"
    Name= "'+$fieldName+'"
    DisplayName= "'+$DisplayName+'"
    Group="IPM Document Group"
    Required="FALSE"
    ShowInDisplayForm="TRUE"
    ShowInEditForm="TRUE"
    ShowInListSettings="TRUE"
    ShowInNewForm="TRUE"></Field>'
   
    $web.Fields.AddFieldAsXml($fieldXMLString) #Create Custom Site Column
    $field = $web.fields.getfield($fieldName) 
   
$fieldLink = new-object Microsoft.SharePoint.SPFieldLink($field)
$ct.fieldlinks.add($fieldLink) #Add Custom Column to Content Type
$ct.update()
}

$url = "Site Collection Url"
$site = Get-SPSite($url);
$web =  $site.OpenWeb();

AddFieldToContentType $web "Content Type Name"  "Column Field Name" "Column Display Name

Comments