Specify default quota limit and warning level
Verified with Windows 11 25H2 — updated on July 30, 2026
Supported on: At least Windows 2000
Path in the GPO console
Computer Configuration\Administrative Templates\System\Disk Quotas Description
This policy setting specifies the default disk quota limit and warning level for new users of the volume. This policy setting determines how much disk space can be used by each user on each of the NTFS file system volumes on a computer. It also specifies the warning level, the point at which the user's status in the Quota Entries window changes to indicate that the user is approaching the disk quota limit. This setting overrides new users’ settings for the disk quota limit and warning level on their volumes, and it disables the corresponding options in the "Select the default quota limit for new users of this volume" section on the Quota tab. This policy setting applies to all new users as soon as they write to the volume. It does not affect disk quota limits for current users, or affect customized limits and warning levels set for particular users (on the Quota tab in Volume Properties). If you disable or do not configure this policy setting, the disk space available to users is not limited. The disk quota management feature uses the physical space on each volume as its quota limit and warning level. When you select a limit, remember that the same limit applies to all users on all volumes, regardless of actual volume size. Be sure to set the limit and warning level so that it is reasonable for the range of volumes in the group. This policy setting is effective only when disk quota management is enabled on the volume. Also, if disk quotas are not enforced, users can exceed the quota limit you set. When users reach the quota limit, their status in the Quota Entries window changes, but users can continue to write to the volume.
Registry
Software\Policies\Microsoft\Windows NT\DiskQuota MDM / Intune (CSP)
./Device/Vendor/MSFT/Policy/Config/ADMX_DiskQuota/DQ_Limit Microsoft Learn documentation Mapping data: Microsoft Learn (CC BY 4.0)
Export Builder
BETAConfigure the state, scope and options, then generate .reg, PowerShell, Intune and SCCM outputs — or add the setting to a multi-setting collection.
These exports write the registry — this is not a managed GPO. ⓘ
.reg file
Windows Registry Editor Version 5.00
; Exported from gporais.com
; Policy: Specify default quota limit and warning level
; State: Enabled
; Supported on: At least Windows 2000
[HKEY_LOCAL_MACHINE\Software\Policies\Microsoft\Windows NT\DiskQuota]
"Limit"=dword:00000064
"LimitUnits"=dword:00000002
"Threshold"=dword:00000064
"ThresholdUnits"=dword:00000002 More formats (PowerShell, Intune, SCCM)
PowerShell
# Exported from gporais.com
# Policy: Specify default quota limit and warning level
# State: Enabled
# Supported on: At least Windows 2000
$path = 'HKLM:\Software\Policies\Microsoft\Windows NT\DiskQuota'
New-Item -Path $path -Force | Out-Null
Set-ItemProperty -Path $path -Name 'Limit' -Value 100 -Type DWord
Set-ItemProperty -Path $path -Name 'LimitUnits' -Value 2 -Type DWord
Set-ItemProperty -Path $path -Name 'Threshold' -Value 100 -Type DWord
Set-ItemProperty -Path $path -Name 'ThresholdUnits' -Value 2 -Type DWord Intune XML
OMA-URI: ./Device/Vendor/MSFT/Policy/Config/ADMX_DiskQuota/DQ_Limit
Data type: String
Value:
<enabled/>
<data id="DQ_LimitValue" value="100"/>
<data id="DQ_LimitUnits" value="2"/>
<data id="DQ_ThresholdValue" value="100"/>
<data id="DQ_ThresholdUnits" value="2"/> Intune Remediation
# === Detection script ===
# Exported from gporais.com
# Policy: Specify default quota limit and warning level
# State: Enabled
# Supported on: At least Windows 2000
function Test-RegistryValue {
param(
[Parameter(Mandatory = $true)][string]$Path,
[Parameter(Mandatory = $true)][string]$Name,
[object]$Expected,
[ValidateSet('String', 'DWord', 'MultiString')][string]$Kind = 'String',
[switch]$Absent
)
try {
$item = Get-ItemProperty -LiteralPath $Path -Name $Name -ErrorAction Stop
} catch {
return $Absent.IsPresent
}
if ($Absent.IsPresent) { return $false }
$actual = $item.$Name
if ($Kind -eq 'DWord') { return ([int64]$actual) -eq ([int64]$Expected) }
if ($Kind -eq 'MultiString') {
$actualValues = @($actual)
$expectedValues = @($Expected)
if ($actualValues.Count -ne $expectedValues.Count) { return $false }
for ($i = 0; $i -lt $expectedValues.Count; $i++) {
if ([string]$actualValues[$i] -ne [string]$expectedValues[$i]) { return $false }
}
return $true
}
return [string]$actual -eq [string]$Expected
}
$checks = @(
(Test-RegistryValue -Path 'HKLM:\Software\Policies\Microsoft\Windows NT\DiskQuota' -Name 'Limit' -Expected 100 -Kind DWord)
(Test-RegistryValue -Path 'HKLM:\Software\Policies\Microsoft\Windows NT\DiskQuota' -Name 'LimitUnits' -Expected 2 -Kind DWord)
(Test-RegistryValue -Path 'HKLM:\Software\Policies\Microsoft\Windows NT\DiskQuota' -Name 'Threshold' -Expected 100 -Kind DWord)
(Test-RegistryValue -Path 'HKLM:\Software\Policies\Microsoft\Windows NT\DiskQuota' -Name 'ThresholdUnits' -Expected 2 -Kind DWord)
)
if ($checks -notcontains $false) {
Write-Output 'Compliant'
exit 0
}
Write-Output 'Non-compliant'
exit 1
# === Remediation script ===
# Exported from gporais.com
# Policy: Specify default quota limit and warning level
# State: Enabled
# Supported on: At least Windows 2000
$path = 'HKLM:\Software\Policies\Microsoft\Windows NT\DiskQuota'
New-Item -Path $path -Force | Out-Null
Set-ItemProperty -Path $path -Name 'Limit' -Value 100 -Type DWord
Set-ItemProperty -Path $path -Name 'LimitUnits' -Value 2 -Type DWord
Set-ItemProperty -Path $path -Name 'Threshold' -Value 100 -Type DWord
Set-ItemProperty -Path $path -Name 'ThresholdUnits' -Value 2 -Type DWord SCCM scripts
# Exported from gporais.com
# Policy: Specify default quota limit and warning level
# State: Enabled
# Supported on: At least Windows 2000
# SCCM Configuration Item guidance:
# Create a Configuration Item of type "Setting: Script".
# Discovery script: use the Detection script below.
# Remediation script: use the Remediation script below.
# Compliance rule: the Discovery script output equals 'Compliant'.
# === Detection script ===
# Exported from gporais.com
# Policy: Specify default quota limit and warning level
# State: Enabled
# Supported on: At least Windows 2000
function Test-RegistryValue {
param(
[Parameter(Mandatory = $true)][string]$Path,
[Parameter(Mandatory = $true)][string]$Name,
[object]$Expected,
[ValidateSet('String', 'DWord', 'MultiString')][string]$Kind = 'String',
[switch]$Absent
)
try {
$item = Get-ItemProperty -LiteralPath $Path -Name $Name -ErrorAction Stop
} catch {
return $Absent.IsPresent
}
if ($Absent.IsPresent) { return $false }
$actual = $item.$Name
if ($Kind -eq 'DWord') { return ([int64]$actual) -eq ([int64]$Expected) }
if ($Kind -eq 'MultiString') {
$actualValues = @($actual)
$expectedValues = @($Expected)
if ($actualValues.Count -ne $expectedValues.Count) { return $false }
for ($i = 0; $i -lt $expectedValues.Count; $i++) {
if ([string]$actualValues[$i] -ne [string]$expectedValues[$i]) { return $false }
}
return $true
}
return [string]$actual -eq [string]$Expected
}
$checks = @(
(Test-RegistryValue -Path 'HKLM:\Software\Policies\Microsoft\Windows NT\DiskQuota' -Name 'Limit' -Expected 100 -Kind DWord)
(Test-RegistryValue -Path 'HKLM:\Software\Policies\Microsoft\Windows NT\DiskQuota' -Name 'LimitUnits' -Expected 2 -Kind DWord)
(Test-RegistryValue -Path 'HKLM:\Software\Policies\Microsoft\Windows NT\DiskQuota' -Name 'Threshold' -Expected 100 -Kind DWord)
(Test-RegistryValue -Path 'HKLM:\Software\Policies\Microsoft\Windows NT\DiskQuota' -Name 'ThresholdUnits' -Expected 2 -Kind DWord)
)
if ($checks -notcontains $false) {
Write-Output 'Compliant'
exit 0
}
Write-Output 'Non-compliant'
exit 1
# === Remediation script ===
# Exported from gporais.com
# Policy: Specify default quota limit and warning level
# State: Enabled
# Supported on: At least Windows 2000
$path = 'HKLM:\Software\Policies\Microsoft\Windows NT\DiskQuota'
New-Item -Path $path -Force | Out-Null
Set-ItemProperty -Path $path -Name 'Limit' -Value 100 -Type DWord
Set-ItemProperty -Path $path -Name 'LimitUnits' -Value 2 -Type DWord
Set-ItemProperty -Path $path -Name 'Threshold' -Value 100 -Type DWord
Set-ItemProperty -Path $path -Name 'ThresholdUnits' -Value 2 -Type DWord Building a multi-setting collection? Add this setting and generate combined .reg / PowerShell / GPO scripts.