Create Site Column and Content Type using PowerShell in SharePoint 2013/2016

In this SharePoint 2013 article, we will discuss how to create site column and content type using PowerShell in SharePoint 2013/2016.

Automating deployment process will always improve productivity and can eradicate manual errors. In this article, I am enhancing our PowerShell knowledge by adding one more feather creating “Site Columns and Content Types”. This will definitely help while setting up a larger site collection with multiple site columns and content types.

Create Site Column and Content Types Using PowerShell in SharePoint 2013/2016

The below PowerShell script will create a new content type group, content type, Site column group with one site column in SharePoint.

try {
$url = "http://sharepoint13:12345/"
$web = get-spweb $url
$MSTechnologyCTName = "MSTechnology Content Type"
$columnName = "Technology"
$contentTypes = $web.AvailableContentTypes | Select-Object Name
$cntTypeflag = $false
# We are taking Item as parent content type to inherit from "0x01" is the ID for Item content type
$parentcntType = $web.contenttypes | where {$_.ID -eq "0x01"} | Select-Object Name
foreach ($contType in $contentTypes) {
if ($contType.Name -eq $MSTechnologyCTName) {
$cntTypeflag = $true
Write-Host "Content Type=" $contType.Name -foregroundcolor White -BackgroundColor Green
}
}

if (!$cntTypeflag) {
$MSTechnologyCTParent = $web.availablecontenttypes[$parentcntType]
$MSTechnologyCT = new-object Microsoft.SharePoint.SPContentType($MSTechnologyCTParent, $web.contenttypes, $MSTechnologyCTName)
$MSTechnologyCT.Group = "MSTechnology Content Types Group"
$web.ContentTypes.Add($MSTechnologyCT)
$web.fields.add($columnName, "Text", $false)
$MSTechnologyfield = $web.Fields.GetField($columnName)
$MSTechnologyfield.Group = "MSTechnology Site Columns Group"
$MSTechnologyfield.Title = $columnName
$MSTechnologyfield.Update()
$MSTechnology_fieldLink = New-OBject Microsoft.SharePoint.SPFieldLink($MSTechnologyfield)
$MSTechnologyCT.FieldLinks.Add($MSTechnology_fieldLink)
$MSTechnologyCT.Update()
}
else {
Write-Host "Content Type existed in site collection"
}
}
catch {
Write-Host "`nError:: $($_.Exception.Message)" -foregroundcolor red -BackgroundColor Yellow
}

Let us walk through the code Line by Line:

Line 1: As per the MS best practices, I have rapped my code inside a try-catch block

Line 2: Created a variable $url for site collection http://sharepoint13:12345

Line 3: We are creating object to site collection http://sharepoint13:12345

Line 4 to 7: I am creating variables for various values like name of the content type to be created, column name to be created, content type existence flag and then I am fetching all the existing content types in the site collection with the below line of code.

$web.AvailableContentTypes | Select-Object Name

Note: In this statement, I am selecting the name of a content type from the entire collection of properties

Line 9: While creating content type we must define the parent content type from which we are inheriting the new content type. In the below line I am getting the name of “Item” content type.

$parentcntType = $web.contenttypes | where {$_.ID -eq “0x01”} | Select-Object Name

You can see more about the parent content types and the hexadecimal formats in the MSDN article:

Line 10 to 15: I am looping through the content types and ensuring that “MSTechnology Content Type” does not exist in case if it exists I am showing an error message that it already exists.

Line 18 to 29: I am creating below artifacts:

  • Site column “Technology”
  • Site column group “MSTechnology Site Columns Group”
  • Site Content Type Group “MSTechnology Content Types Group”
  • Creating “MSTechnology Content Type”

Once you run the script you can verify the new artifacts in the site collection by navigating to Site Settings -> Site Columns.

Newly created site column & Group with PowerShell script:

create site column using powershell sharepoint

Newly Created site content type & group with PowerShell script:

create content type using powershell sharepoint

You may like following PowerShell SharePoint tutorials:

This SharePoint 2013 tutorial helps us to create a site column, content type using PowerShell in SharePoint 2013/2016.

free sharepoint training

SharePoint Online FREE Training

JOIN a FREE SharePoint Video Course (3 Part Video Series)

envelope
envelope

Krishna Vandanapu

I am Krishna.Vandanapu a SharePoint architect working in IT from last 13+ years, I worked in SharePoint 2007, 2010, 2013, 2016 and Office 365. I have extensive hands on experience in customizing SharePoint sites from end to end. Expertise in SharePoint migration tools like Sharegate, Doc Ave and Metalogix. Migrated SharePoint sites from SharePoint 2007 to 2010 and 2010 to 2013 several times seamlessly. Implementing CSOM with Microsoft best practices. Spent quality time in configuring SharePoint application services like User Profile, Search, Managed Meta data services etc. Now exploring SharePoint Framework and SharePoint 2019

>