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.
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"
- 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
Post a Comment