Export Import Quota Templates in SharePoint with PowerShell
In SharePoint database attach method migration, Quota templates must be created manually between farms. Its a pain when you have multiple quotas defined. These PowerShell scripts simplifies the process by exporting quotas to a XML file and import it again to another farm.
PowerShell Script to Export/Import Quotas between environments:
Once Exported, We can copy the exported xml file to target environment and run the Import script.
PowerShell Script to Import Quota Templates:
PowerShell Script to Export/Import Quotas between environments:
[void][System.Reflection.Assembly]::LoadWithPartialName("Microsoft.SharePoint") [Void][System.Reflection.Assembly]::LoadWithPartialName("Microsoft.SharePoint.Administration") function Export-QuotaTemplates([string]$FileName) { #Get the SharePoint Web Application Service $ContentService =[Microsoft.SharePoint.Administration.SPWebService]::ContentService #Define Quota Templates XML -Container wrap $QuotaTemplateXML = '<QuotaTemplates>' #Get all Quota Templates foreach ($QuotaTemplate in $contentService.QuotaTemplates) { #Add Quota Templates to XML $QuotaTemplateXML += '<QuotaTemplate>' $QuotaTemplateXML += '<ID>'+ $QuotaTemplate.QuotaID +'</ID>' $QuotaTemplateXML += '<Name>'+ $QuotaTemplate.Name +'</Name>' $QuotaTemplateXML += '<StorageMaximumLevel>'+ [int](($QuotaTemplate.StorageMaximumLevel/ 1024)/1024) +'</StorageMaximumLevel>' $QuotaTemplateXML += '<StorageWarningLevel>'+ [int](($QuotaTemplate.StorageWarningLevel/ 1024)/1024) +'</StorageWarningLevel>' <# These two Properties applicable only for SharePoint 2010 and above! $QuotaTemplateXML += '<UserCodeMaximumLevel>'+ $QuotaTemplate.UserCodeMaximumLevel +'</UserCodeMaximumLevel>' $QuotaTemplateXML += '<UserCodeWarningLevel>'+ $QuotaTemplate.UserCodeWarningLevel +'</UserCodeWarningLevel>' #> $QuotaTemplateXML += '</QuotaTemplate>' } #Wrap Into the closing element $QuotaTemplateXML += '</QuotaTemplates>' $QuotaTemplateXML| Out-File $FileName Write-Host "Exported Quota Templates!" } #Call Import Quota Templates Function Export-QuotaTemplates "QuotaTemplates.xml"
Once Exported, We can copy the exported xml file to target environment and run the Import script.
PowerShell Script to Import Quota Templates:
[void][System.Reflection.Assembly]::LoadWithPartialName("Microsoft.SharePoint") [Void][System.Reflection.Assembly]::LoadWithPartialName("Microsoft.SharePoint.Administration") function Import-QuotaTemplates([string]$FileName) { #Get the XML File Contents [xml]$QuotaTemplateXML = Get-Content $FileName $ContentService =[Microsoft.SharePoint.Administration.SPWebService]::ContentService #Get existing Quotas collection $QuotaTemplateColl = $ContentService.QuotaTemplates #Iterate throught each Quota Template foreach($QuotaTemplate in $QuotaTemplateXML.QuotaTemplates.QuotaTemplate) { Write-Host "Processing:" $QuotaTemplate.Name #Check if Quota Template already exists! if ($QuotaTemplateColl[$QuotaTemplate.Name] -ne $null) { Write-Host " >> Quota template: " $QuotaTemplate.Name " Already exists!" } else #Create the Quota Template { $NewQuotaTemplate = new-object Microsoft.SharePoint.Administration.SPQuotaTemplate $NewQuotaTemplate.Name = $QuotaTemplate.Name $NewQuotaTemplate.StorageMaximumLevel = $QuotaTemplate.StorageMaximumLevel $NewQuotaTemplate.StorageWarningLevel = $QuotaTemplate.StorageWarningLevel <# These two Properties applicable only for SharePoint 2010 and above! $NewQuotaTemplate.UserCodeMaximumLevel = $QuotaTemplate.UserCodeMaximumLevel $NewQuotaTemplate.UserCodeWarningLevel = $QuotaTemplate.UserCodeWarningLevel #> $QuotaTemplateColl.Add($NewQuotaTemplate) Write-Host " >> Quota template ", $NewQuotaTemplate.Name ," is imported to the Quota Templates" } } } #Call Import Quota Templates Function Import-QuotaTemplates "QuotaTemplates.xml"
The quota template was created in the target farm however they all had 1 MB for site storage. The source templates site quotas were all different.
ReplyDeleteI know this is years old. But this worked for me (SP2016) once I removed the conversion to MB in the export script.
Delete