Blog Archives
Quota Templates in Powershell
I’m currently working on a few migration type things and need to set up some quota templates. The actual sizes of those templates is TBA, so I figure a set of quick Powershell functions will help me set them up as an when I need them.
The majority of the code is from Ryan Dennis at SharePointRyan.com, though I believe he built on work from Gary LaPointe. But then, doesn’t everyone?
function New-SPQuotaTemplate { <# .Synopsis This advanced function creates a new Site Quota Template. .Example C:\PS>New-SPQuotaTemplate -Name "Custom" -StorageMaximumLevel 2GB -StorageWarningLevel 1GB -UserCodeMaximiumLevel 100 -UserCodeWarningLevel 75 This example creates an SP Quota Template called Custom with a maximum size of 2GB and a warning size of 1GB. Sandboxed solutions are limited to 100, with a warning level of 75. .Example C:\PS>New-SPQuotaTemplate -Name "Custom" -StorageMaximumLevel 4GB -StorageWarningLevel 3GB .Notes Name: New-SPQuotaTemplate Author: Ryan Dennis Last Edit: 4/27/2012 Keywords: Quota Template, Quotas and Locks Modified By: Mike Landers, 02/04/2013 .Link http://www.sharepointryan.com http://twitter.com/SharePointRyan #Requires -Version 2.0 #> [CmdletBinding()] Param( [Parameter(Mandatory=$true)][String]$Name, [Parameter(Mandatory=$true)][Int64]$StorageMaximumLevel, [Parameter(Mandatory=$true)][Int64]$StorageWarningLevel, [Parameter(Mandatory=$false)][System.Double]$UserCodeMaximumLevel, [Parameter(Mandatory=$false)][System.Double]$UserCodeWarningLevel ) # Instantiate an instance of an SPQuotaTemplate class # Write-Verbose "Instantiating an instance of an SPQuotaTemplate class" $Quota = New-Object Microsoft.SharePoint.Administration.SPQuotaTemplate # Set the Properties # Write-Verbose "Setting properties on the Quota object" $Quota.Name = $Name $Quota.StorageMaximumLevel = $StorageMaximumLevel $Quota.StorageWarningLevel = $StorageWarningLevel $Quota.UserCodeMaximumLevel = $UserCodeMaximumLevel $Quota.UserCodeWarningLevel = $UserCodeWarningLevel # Get an Instance of the SPWebService Class # Write-Verbose "Getting an instance of an SPWebService class" $Service = [Microsoft.SharePoint.Administration.SPWebService]::ContentService # Use the Add() method to add the quota template to the collection # Write-Host "Adding the $($Name) Quota Template to the Quota Templates Collection" -foreground Green $Service.QuotaTemplates.Add($Quota) # Call the Update() method to commit the changes # $Service.Update() Write-Host "Quota Template $Name added successfully" -foreground Green } function Get-SPQuotaTemplate { <# .Synopsis This advanced function retrieves a SharePoint Site Quota Template. .Example C:\PS>Get-SPQuotaTemplate -Name "Custom" This example retrieves a SharePoint Quota Template called Custom in the current farm. .Example C:\PS>Get-SPQuotaTemplate This example retrieves all SharePoint Quota Templates in the current farm. .Notes Name: Get-SPQuotaTemplate Author: Ryan Dennis Last Edit: 5/10/2012 Keywords: Quota Template, Quotas and Locks .Link http://www.sharepointryan.com http://twitter.com/SharePointRyan #> [CmdletBinding()] Param( [Parameter(Mandatory=$false)][String]$Name ) $Templates = [Microsoft.SharePoint.Administration.SPWebService]::ContentService.QuotaTemplates if ($Name) { $Templates | Where-Object {$_.Name -eq $Name} } else { $Templates } } function Remove-SPQuotaTemplate { <# .Example C:\PS>Remove-SPQuotaTemplate -Name "Custom" This example removes a SharePoint Quota Template called Custom in the current farm. .Link http://stuffaboutsharepoint.com http://twitter.com/micaituk #> [CmdletBinding()] Param( [Parameter(Mandatory=$true)][String]$Name ) $Templates = [Microsoft.SharePoint.Administration.SPWebService]::ContentService.QuotaTemplates $TemplateCheck = $Templates | Where-Object {$_.Name -eq $Name} if ($TemplateCheck -ne $null) { Write-Host "`nFound Template $Name" -foreground Green $Service = [Microsoft.SharePoint.Administration.SPWebService]::ContentService $Template = $Service.QuotaTemplates[$Name] Write-Host "Deleting Template $Name" -foreground Green $Service.QuotaTemplates.Delete($Name) $Service.Update() Write-Host "Template $Name deleted successfully`n" -foreground Green Write-Host } else { Write-Host "`nTemplate $Name does not exist, no changes made`n" -foreground Red } }