Introduction to FSRM Storage Reports

File Server Resource Manager (FSRM) includes a powerful Storage Reports module that enables administrators to generate detailed reports about disk usage, file activity, and quota compliance on Windows Server 2022. Storage Reports help you understand how storage is being consumed, identify waste, enforce compliance, and plan capacity. Reports can be run on demand, scheduled to run automatically, and delivered by email to administrators.

FSRM Storage Reports are accessed through the FSRM console or via PowerShell using the FSRM cmdlet set. Before using reports, FSRM must be installed. If you have not already installed it, run the following command on your Windows Server 2022 system:

Install-WindowsFeature -Name FS-Resource-Manager -IncludeManagementTools

After installation, verify the service is running:

Get-Service -Name SrmSvc

Report Types Available in FSRM

FSRM on Windows Server 2022 provides eight built-in report types, each targeting a different aspect of storage analysis:

Quota Usage: Shows how much space is consumed versus the configured quota for each quota path. This report is useful for identifying users or directories approaching their limit.

Large Files: Lists files exceeding a specified size threshold across a scope of directories. Useful for finding large, potentially unnecessary files consuming disproportionate storage.

Files by Owner: Groups disk usage by file owner (based on NTFS ownership metadata). This is a key tool for per-user storage accountability.

Files by File Group: Categorises files by FSRM file groups (e.g., Audio Files, Video Files, Office Documents). Useful for understanding what types of content are taking up space.

Least Recently Accessed Files: Lists files that have not been accessed for a configurable period, such as 90 days. Useful for archiving or deletion candidates.

Most Recently Accessed Files: Lists the most actively accessed files. Useful for understanding hot data.

Duplicate Files: Identifies files with identical names and sizes in the same directory tree. This does not perform a full hash comparison but is a useful starting point for deduplication.

Files by Property: Available when Classification is configured; filters files by classification property values (e.g., confidentiality level, department).

Configuring Report Parameters

Report parameters control what thresholds or filters the report applies. These are set per report task. For example, when configuring a Large Files report, you specify the minimum file size. For a Least Recently Accessed report, you specify how many days of inactivity qualify a file.

Using PowerShell, you can inspect available report types and create tasks with specific parameters. The following example creates a Storage Report task that identifies files larger than 100 MB:

New-FsrmStorageReport `
    -Name "LargeFilesReport" `
    -Namespace @("C:SharesData") `
    -ReportType LargeFiles `
    -LargeFileMinimum 104857600 `
    -ReportFormat Html,Csv

The -LargeFileMinimum parameter accepts a byte value — 104857600 bytes equals 100 MB. The -ReportFormat parameter accepts a comma-separated list of formats including Html, Csv, and Xml.

For a Least Recently Accessed report targeting files idle for 180 days:

New-FsrmStorageReport `
    -Name "StaleFilesReport" `
    -Namespace @("D:FileShares") `
    -ReportType LeastRecentlyAccessed `
    -LeastAccessedMinimum 180 `
    -ReportFormat Html

For a Files by Owner report across multiple namespaces:

New-FsrmStorageReport `
    -Name "OwnerReport" `
    -Namespace @("C:Users","D:Departments") `
    -ReportType FilesByOwner `
    -ReportFormat Html,Csv

Report Output Formats

FSRM can produce reports in three formats: HTML, CSV, and XML. HTML reports are human-readable and can be opened in any browser. CSV is suitable for import into Excel or other data tools. XML enables programmatic processing or integration with monitoring platforms.

Report output files are saved by default to %SystemDrive%StorageReports, organised into subfolders by report name. You can override the output location using the -MailTo parameter when combined with scheduling, or by modifying the FSRM global settings:

Set-FsrmSetting -ReportLocationOnDemand "D:ReportsOnDemand" `
                 -ReportLocationScheduled "D:ReportsScheduled" `
                 -ReportLocationIncident "D:ReportsIncidents"

Scheduling Storage Reports with New-FsrmScheduledTask

Storage reports become most valuable when scheduled to run automatically and deliver results to administrators. FSRM uses its own scheduling mechanism that integrates with Windows Task Scheduler in the background.

To create a scheduled storage report that runs every Monday at 2:00 AM, first create a schedule object, then attach it to a storage report task:

# Create a weekly schedule: Monday at 02:00
$schedule = New-FsrmScheduledTask -Time "02:00" -Weekly Monday

# Create the Storage Report Task with the schedule
New-FsrmStorageReport `
    -Name "WeeklyLargeFilesReport" `
    -Namespace @("D:Shares") `
    -ReportType LargeFiles `
    -LargeFileMinimum 52428800 `
    -ReportFormat Html,Csv `
    -Schedule $schedule

To schedule a daily report at midnight:

$dailySchedule = New-FsrmScheduledTask -Time "00:00" -Daily

New-FsrmStorageReport `
    -Name "DailyQuotaUsageReport" `
    -Namespace @("C:Shares") `
    -ReportType QuotaUsage `
    -ReportFormat Html `
    -Schedule $dailySchedule

To update an existing report’s schedule:

$newSchedule = New-FsrmScheduledTask -Time "03:00" -Weekly Sunday
Set-FsrmStorageReport -Name "WeeklyLargeFilesReport" -Schedule $newSchedule

List all current Storage Report tasks on the server:

Get-FsrmStorageReport

Emailing Reports Automatically

FSRM can email completed reports directly to administrators. You must first configure FSRM’s global SMTP settings, then assign a recipient to the report task.

Configure the SMTP server globally:

Set-FsrmSetting `
    -SmtpServer "mail.yourdomain.com" `
    -AdminEmailAddress "[email protected]" `
    -FromEmailAddress "[email protected]"

Send a test email to confirm SMTP settings are working:

Send-FsrmTestEmail -ToEmailAddress "[email protected]"

When creating or updating a report task, add the -MailTo parameter to have the report emailed upon completion:

Set-FsrmStorageReport `
    -Name "WeeklyLargeFilesReport" `
    -MailTo "[Admin Email]"

The [Admin Email] token automatically resolves to the address configured in the FSRM global settings. You can also specify a literal email address:

Set-FsrmStorageReport `
    -Name "WeeklyLargeFilesReport" `
    -MailTo "[email protected]"

Running On-Demand Reports with Start-FsrmStorageReport

You do not need to wait for a scheduled run. Reports can be triggered immediately using Start-FsrmStorageReport. The report runs in the background and results are saved to the configured output location.

Start-FsrmStorageReport -Name "WeeklyLargeFilesReport" -Queue

The -Queue switch queues the report for background processing. To wait for the report to complete before the command returns, omit -Queue and use -Wait instead:

Start-FsrmStorageReport -Name "WeeklyLargeFilesReport" -Wait

You can also define a one-time ad-hoc report without saving it as a persistent task using Get-FsrmStorageReport piped to start, or by specifying parameters inline. For a quick large-file scan of a specific path:

New-FsrmStorageReport `
    -Name "AdHocLargeFiles" `
    -Namespace @("E:Projects") `
    -ReportType LargeFiles `
    -LargeFileMinimum 20971520 `
    -ReportFormat Html

Start-FsrmStorageReport -Name "AdHocLargeFiles" -Wait

Integrating FSRM Reports with Monitoring Tools

FSRM produces structured HTML and CSV output that can be consumed by monitoring systems. A common integration pattern is to have FSRM write CSV reports to a network share monitored by a SIEM or log aggregation platform such as Splunk, Elastic, or Microsoft Sentinel. Sentinel can ingest CSV files via a custom connector or Logic App.

For PRTG or Nagios-style monitoring, you can write a PowerShell wrapper that runs the FSRM report, parses the output CSV, and raises an alert if thresholds are exceeded. For example, check if any quota has usage over 90%:

$reportPath = "D:ReportsOnDemandQuotaUsageReportQuotaUsage.csv"
$data = Import-Csv $reportPath

foreach ($row in $data) {
    $usagePct = [double]$row.'Usage %'
    if ($usagePct -gt 90) {
        Write-Warning "Quota path $($row.Path) is at $usagePct% usage."
        # Insert your alerting call here (e.g., Send-MailMessage or webhook)
    }
}

This kind of wrapper can be scheduled as a separate Task Scheduler job that runs after the FSRM scheduled report, giving you automated alerting on top of FSRM’s native reporting.

Customising Report Templates

FSRM’s HTML report templates are stored in the FSRM installation directory and can be modified. On Windows Server 2022, the default location is:

C:WindowsSystem32srmreport_templates

You will find XSL stylesheets that control the HTML output formatting of each report type. These can be edited to add your organisation’s branding, logo, or custom footer. Make sure to back up the originals before editing:

Copy-Item "C:WindowsSystem32srmreport_templates" `
          "D:Backupssrm_template_backup" -Recurse

For XML output, the raw XML can be processed with custom XSLT transformations to produce fully branded reports in any format required by your organisation. This is especially useful for compliance reporting where specific formatting is mandated.

Viewing and Managing Report Tasks

To view all FSRM Storage Report tasks configured on the server:

Get-FsrmStorageReport | Format-List Name, Namespace, ReportType, Schedule

To remove a report task that is no longer needed:

Remove-FsrmStorageReport -Name "AdHocLargeFiles"

To check the status of a running report:

Get-FsrmStorageReport -Name "WeeklyLargeFilesReport" | Select-Object Name, LastRunStatus, LastRun

FSRM Storage Reports, when combined with quotas and file screens, form a comprehensive storage governance framework on Windows Server 2022. Regular reporting ensures administrators maintain visibility over disk usage trends and can act proactively before capacity or compliance issues become critical.