Its a frequent requirement to copy site columns between SharePoint environments, isn't it? Today had a requirement to copy bunch of site columns from development environment to 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, Lets use PowerShell to Export and Import Site Columns!
PowerShell Script to Export Site columns:
PowerShell Script to Import Site Columns from XML:
We used to package site columns as a WSP Solution package in such requirements: Create Site Column Feature for SharePoint 2010 ,This time, Lets use PowerShell to Export and Import Site Columns!
PowerShell Script to Export Site columns:
#Get the Source Web $sourceWeb = Get-SPWeb "http://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 "http://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: http://get-spscripts.com/2011/01/export-and-importcreate-site-columns-in.html