Export-Import Site Columns in SharePoint using PowerShell

It’s a frequent requirement to copy site columns between SharePoint environments, isn’t it? Today had a requirement to copy a bunch of site columns from the development environment to the staging environment.

We used to package site columns as a WSP Solution package in such requirements: Create Site Column Feature for SharePoint 2010, This time, let’s use PowerShell to Export and Import Site Columns!

PowerShell Script to Export Site columns:

#Get the Source Web
$sourceWeb = Get-SPWeb "https://dev.crescent.com"

#Create a XML File to Export Fields
$xmlFile = "C:\SiteColumns.xml"
New-Item $xmlFile -type file -force

#Wrap Field Schema XML inside <Fields> Element 
Add-Content $xmlFile "`n<Fields>"

#Export All Site Columns of specific Group to XML file
$sourceWeb.Fields | ForEach-Object {
	if ($_.Group -eq "Crescent Travel Request") {
		Add-Content $xmlFile $_.SchemaXml
	}
}
#Closing Wrapper
Add-Content $xmlFile "</Fields>"

#Dispose the web object
$sourceWeb.Dispose()

PowerShell Script to Import Site Columns from XML:

#Get the Target Web
$TargetWeb = Get-SPWeb "https://test.crescent.com"

#Get XML file exported
[xml]$fieldsXML = Get-Content("C:\SiteColumns.xml")

#Loop Through Each Field
$fieldsXML.Fields.Field | ForEach-Object {
	#Check if the target web has the field already!
	if ($TargetWeb.Fields.ContainsField( $_.Name) -Eq $false){ 
		#Add Site column to Target Web
		$TargetWeb.fields.AddFieldAsXml($_.OuterXml)
	}
}

Thanks Phil for the idea: https://get-spscripts.com/2011/01/export-and-importcreate-site-columns-in.html

Salaudeen Rajack

Salaudeen Rajack - Information Technology Expert with Two-decades of hands-on experience, specializing in SharePoint, PowerShell, Microsoft 365, and related products. He has held various positions including SharePoint Architect, Administrator, Developer and consultant, has helped many organizations to implement and optimize SharePoint solutions. Known for his deep technical expertise, He's passionate about sharing the knowledge and insights to help others, through the real-world articles!

10 thoughts on “Export-Import Site Columns in SharePoint using PowerShell

  • Thank you a million!
    I sincerely appreciate your help.

    Reply
  • Thank you.
    You didn’t dispose web in import script 😉

    #Dispose the web object
    $TargetWeb.Dispose()

    Reply
  • Exactly what I was looking for!!

    Reply
  • Thank you so much Salaudeen!! I tried $_.Name didn’t work I tried $_.DisplayName didn’t work!
    You are the Best StaticName did work!!!

    Appreciate your help.
    Regards,
    Khushi

    Reply
  • How can I restrict the export only the selected column from the group? Not all the columns of the entire group?

    Reply
  • I did try to put the if {$_.Name -eq “ColumnName” } within the if ($_.Group -eq “GroupName”). But it is not exporting the selected column.

    Reply
    • Khushi,

      There is no “Name” property in SPField class. Use properties such as: Title, StaticName, InternalName.

      Reply
  • thanks, the only script that worked for me 🙂

    Reply
  • Does not work for me… Empty XML…

    Reply
    • Check your Site columns Group! I’ve used “Crescent Travel Request”, Update it accordingly!!

      Reply

Leave a Reply

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