Change SharePoint Site Collection Quota using PowerShell

In some cases, I have seen site collection quotas are turned to “Individual Quota” in the database attachment method, even I copied the quota templates before database attachment. All quota settings are lost! I don’t know the cause of this issue and want to apply the site collection quota to existing sites.

To apply quota for SharePoint site collection using PowerShell, the syntax goes like this:
Set-SPSite -Identity “Site-collection-URL” -QuotaTemplate “Quota-Template-Name”

E.g.

Set-SPSite -Identity "http://sharePoint.company.com/sites/sales" -QuotaTemplate "Gold - 1 GB"

Where “Gold – 1 GB” is our existing quota defined! We can apply quotas in bulk with PowerShell now!

Change quota for SharePoint Site Collections programmatically:

To set site collection quota for SharePoint sites programmatically using PowerShell, The code goes like this:

[void][System.Reflection.Assembly]::LoadWithPartialName("Microsoft.SharePoint")
[Void]System.Reflection.Assembly]::LoadWithPartialName("Microsoft.SharePoint.Administration") 

function global:Get-SPSite($url)
{
    return new-Object Microsoft.SharePoint.SPSite($url)
}

$contentService =[Microsoft.SharePoint.Administration.SPWebService]::ContentService

$QuotaTemplate = $contentService.QuotaTemplates["Gold - 1 GB"]
$site = Get-SPSite "http://sharepoint.company.com/"
$site.quota=$QuotaTemplate 

Set Individual Quotas using PowerShell:

#Set the site URL variable accordingly!
$SiteURL = "http://sales.crescent.com"

Set-SPSite -Identity $SiteURL -MaxSize 1GB -WarningSize 900MB 

Bulk update SharePoint Site collection quotas:

In another case, Got a requirement to change quota template for all site collections under a specific managed path (say: Departments)

$WebAppURL = "http://sharepoint.crescent.com"

$TemplateName ="Gold - 1 GB"

$contentService = [Microsoft.SharePoint.Administration.SPWebService]::ContentService
$quotaTemplate = $contentService.QuotaTemplates[$TemplateName]

Get-SPWebApplication $WebAppURL | Get-spsite -limit all | Where-Object {$_.ServerRelativeUrl.StartsWith("/departments/")} |  ForEach-Object { $_.Quota = $quotaTemplate }


To Remove a Quota Assigned (either via Quota Template or Individual Quota) to a Site collection, Use:

$Site = Get-SPSite -Identity "http://your-site-collection.com/"
$Site.Quota = $null           


SharePoint 2007 – Set quotas in Bulk with STSADM:
We can set site collection quota in bulk using stsadm -o updatequota command line.

E.g. stsadm -o updatequota –quotaname “Name of the Quota defined in Central Admin” 
It’s also possible to limit the quota changes within a content database.

Salaudeen Rajack

Information Technology Professional with Two decades of SharePoint Experience.

One thought on “Change SharePoint Site Collection Quota using PowerShell

Leave a Reply