Reporting Server
Verified with Windows 11 25H2 — updated on July 30, 2026
Supported on: At least Windows Server 2008 R2 or Windows 7
Path in the GPO console
Computer Configuration\Administrative Templates\System\App-V\Reporting Description
Reporting Server URL: Displays the URL of reporting server. Reporting Time: When the client data should be reported to the server. Acceptable range is 0~23, corresponding to the 24 hours in a day. A good practice is, don't set this time to a busy hour, e.g. 9AM. Delay reporting for the random minutes: The maximum minutes of random delay on top of the reporting time. For a busy system, the random delay will help reduce the server load. Repeat reporting for every (days): The periodical interval in days for sending the reporting data. Data Cache Limit: This value specifies the maximum size in megabytes (MB) of the XML cache for storing reporting information. The default value is 20 MB. The size applies to the cache in memory. When the limit is reached, the log file will roll over. When a new record is to be added (bottom of the list), one or more of the oldest records (top of the list) will be deleted to make room. A warning will be logged to the Client log and the event log the first time this occurs, and will not be logged again until after the cache has been successfully cleared on transmission and the log has filled up again. Data Block Size: This value specifies the maximum size in bytes to transmit to the server at once on a reporting upload, to avoid permanent transmission failures when the log has reached a significant size. The default value is 65536. When transmitting report data to the server, one block at a time of application records that is less than or equal to the block size in bytes of XML data will be removed from the cache and sent to the server. Each block will have the general Client data and global package list data prepended, and these will not factor into the block size calculations; the potential exists for an extremely large package list to result in transmission failures over low bandwidth or unreliable connections.
Registry
SOFTWARE\Policies\Microsoft\AppV\Client\Reporting Value name: ReportingEnabled
Enabled: ReportingEnabled = 1
Disabled: ReportingEnabled = 0
MDM / Intune (CSP)
./Device/Vendor/MSFT/Policy/Config/AppVirtualization/AllowReportingServer 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: Reporting Server
; State: Enabled
; Supported on: At least Windows Server 2008 R2 or Windows 7
[HKEY_LOCAL_MACHINE\SOFTWARE\Policies\Microsoft\AppV\Client\Reporting]
"ReportingEnabled"=dword:00000001
"ReportingServerURL"=""
"ReportingStartTime"=dword:00000003
"ReportingRandomDelay"=dword:0000001e
"ReportingInterval"=dword:00000001
"ReportingDataCacheLimit"=dword:00000014
"ReportingDataBlockSize"=dword:00010000 More formats (PowerShell, Intune, SCCM)
PowerShell
# Exported from gporais.com
# Policy: Reporting Server
# State: Enabled
# Supported on: At least Windows Server 2008 R2 or Windows 7
$path = 'HKLM:\SOFTWARE\Policies\Microsoft\AppV\Client\Reporting'
New-Item -Path $path -Force | Out-Null
Set-ItemProperty -Path $path -Name 'ReportingEnabled' -Value 1 -Type DWord
Set-ItemProperty -Path $path -Name 'ReportingServerURL' -Value '' -Type String
Set-ItemProperty -Path $path -Name 'ReportingStartTime' -Value 3 -Type DWord
Set-ItemProperty -Path $path -Name 'ReportingRandomDelay' -Value 30 -Type DWord
Set-ItemProperty -Path $path -Name 'ReportingInterval' -Value 1 -Type DWord
Set-ItemProperty -Path $path -Name 'ReportingDataCacheLimit' -Value 20 -Type DWord
Set-ItemProperty -Path $path -Name 'ReportingDataBlockSize' -Value 65536 -Type DWord Intune XML
OMA-URI: ./Device/Vendor/MSFT/Policy/Config/AppVirtualization/AllowReportingServer
Data type: String
Value:
<enabled/>
<data id="Reporting_Server_URL_Prompt" value=""/>
<data id="Start_Time" value="3"/>
<data id="Random_Delay" value="30"/>
<data id="Interval" value="1"/>
<data id="Data_Cache_Limit" value="20"/>
<data id="Data_Block_Size" value="65536"/> Intune Remediation
# === Detection script ===
# Exported from gporais.com
# Policy: Reporting Server
# State: Enabled
# Supported on: At least Windows Server 2008 R2 or Windows 7
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\AppV\Client\Reporting' -Name 'ReportingEnabled' -Expected 1 -Kind DWord)
(Test-RegistryValue -Path 'HKLM:\SOFTWARE\Policies\Microsoft\AppV\Client\Reporting' -Name 'ReportingServerURL' -Expected '' -Kind String)
(Test-RegistryValue -Path 'HKLM:\SOFTWARE\Policies\Microsoft\AppV\Client\Reporting' -Name 'ReportingStartTime' -Expected 3 -Kind DWord)
(Test-RegistryValue -Path 'HKLM:\SOFTWARE\Policies\Microsoft\AppV\Client\Reporting' -Name 'ReportingRandomDelay' -Expected 30 -Kind DWord)
(Test-RegistryValue -Path 'HKLM:\SOFTWARE\Policies\Microsoft\AppV\Client\Reporting' -Name 'ReportingInterval' -Expected 1 -Kind DWord)
(Test-RegistryValue -Path 'HKLM:\SOFTWARE\Policies\Microsoft\AppV\Client\Reporting' -Name 'ReportingDataCacheLimit' -Expected 20 -Kind DWord)
(Test-RegistryValue -Path 'HKLM:\SOFTWARE\Policies\Microsoft\AppV\Client\Reporting' -Name 'ReportingDataBlockSize' -Expected 65536 -Kind DWord)
)
if ($checks -notcontains $false) {
Write-Output 'Compliant'
exit 0
}
Write-Output 'Non-compliant'
exit 1
# === Remediation script ===
# Exported from gporais.com
# Policy: Reporting Server
# State: Enabled
# Supported on: At least Windows Server 2008 R2 or Windows 7
$path = 'HKLM:\SOFTWARE\Policies\Microsoft\AppV\Client\Reporting'
New-Item -Path $path -Force | Out-Null
Set-ItemProperty -Path $path -Name 'ReportingEnabled' -Value 1 -Type DWord
Set-ItemProperty -Path $path -Name 'ReportingServerURL' -Value '' -Type String
Set-ItemProperty -Path $path -Name 'ReportingStartTime' -Value 3 -Type DWord
Set-ItemProperty -Path $path -Name 'ReportingRandomDelay' -Value 30 -Type DWord
Set-ItemProperty -Path $path -Name 'ReportingInterval' -Value 1 -Type DWord
Set-ItemProperty -Path $path -Name 'ReportingDataCacheLimit' -Value 20 -Type DWord
Set-ItemProperty -Path $path -Name 'ReportingDataBlockSize' -Value 65536 -Type DWord SCCM scripts
# Exported from gporais.com
# Policy: Reporting Server
# State: Enabled
# Supported on: At least Windows Server 2008 R2 or Windows 7
# 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: Reporting Server
# State: Enabled
# Supported on: At least Windows Server 2008 R2 or Windows 7
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\AppV\Client\Reporting' -Name 'ReportingEnabled' -Expected 1 -Kind DWord)
(Test-RegistryValue -Path 'HKLM:\SOFTWARE\Policies\Microsoft\AppV\Client\Reporting' -Name 'ReportingServerURL' -Expected '' -Kind String)
(Test-RegistryValue -Path 'HKLM:\SOFTWARE\Policies\Microsoft\AppV\Client\Reporting' -Name 'ReportingStartTime' -Expected 3 -Kind DWord)
(Test-RegistryValue -Path 'HKLM:\SOFTWARE\Policies\Microsoft\AppV\Client\Reporting' -Name 'ReportingRandomDelay' -Expected 30 -Kind DWord)
(Test-RegistryValue -Path 'HKLM:\SOFTWARE\Policies\Microsoft\AppV\Client\Reporting' -Name 'ReportingInterval' -Expected 1 -Kind DWord)
(Test-RegistryValue -Path 'HKLM:\SOFTWARE\Policies\Microsoft\AppV\Client\Reporting' -Name 'ReportingDataCacheLimit' -Expected 20 -Kind DWord)
(Test-RegistryValue -Path 'HKLM:\SOFTWARE\Policies\Microsoft\AppV\Client\Reporting' -Name 'ReportingDataBlockSize' -Expected 65536 -Kind DWord)
)
if ($checks -notcontains $false) {
Write-Output 'Compliant'
exit 0
}
Write-Output 'Non-compliant'
exit 1
# === Remediation script ===
# Exported from gporais.com
# Policy: Reporting Server
# State: Enabled
# Supported on: At least Windows Server 2008 R2 or Windows 7
$path = 'HKLM:\SOFTWARE\Policies\Microsoft\AppV\Client\Reporting'
New-Item -Path $path -Force | Out-Null
Set-ItemProperty -Path $path -Name 'ReportingEnabled' -Value 1 -Type DWord
Set-ItemProperty -Path $path -Name 'ReportingServerURL' -Value '' -Type String
Set-ItemProperty -Path $path -Name 'ReportingStartTime' -Value 3 -Type DWord
Set-ItemProperty -Path $path -Name 'ReportingRandomDelay' -Value 30 -Type DWord
Set-ItemProperty -Path $path -Name 'ReportingInterval' -Value 1 -Type DWord
Set-ItemProperty -Path $path -Name 'ReportingDataCacheLimit' -Value 20 -Type DWord
Set-ItemProperty -Path $path -Name 'ReportingDataBlockSize' -Value 65536 -Type DWord Building a multi-setting collection? Add this setting and generate combined .reg / PowerShell / GPO scripts.