Merge-MtMaesterResult
SYNOPSIS
Section titled “SYNOPSIS”Merges multiple MaesterResults objects into a single multi-tenant result for combined HTML reporting.
SYNTAX
Section titled “SYNTAX”FromObjects (Default)
Section titled “FromObjects (Default)”Merge-MtMaesterResult [-MaesterResults] <PSObject[]> [-ProgressAction <ActionPreference>] [<CommonParameters>]FromPath
Section titled “FromPath”Merge-MtMaesterResult [-Path] <String[]> [-ProgressAction <ActionPreference>] [<CommonParameters>]DESCRIPTION
Section titled “DESCRIPTION”Takes an array of MaesterResults objects (each from a separate Invoke-Maester run against a different tenant) and combines them into a single object with a “Tenants” array. The resulting object can be passed to Get-MtHtmlReport to generate a multi-tenant report with a tenant selector in the sidebar.
Accepts either in-memory MaesterResults objects (from Invoke-Maester -PassThru or pipeline) or file paths/directories that are loaded automatically via Import-MtMaesterResult.
All results are included as-is - no deduplication is performed when the same TenantId appears multiple times. This is by design to support future scenarios such as historical trend reports where multiple runs from the same tenant are intentional.
EXAMPLES
Section titled “EXAMPLES”EXAMPLE 1
Section titled “EXAMPLE 1”# Merge from file paths (one-liner)Merge-MtMaesterResult -Path ./production.json, ./development.json | Get-MtHtmlReport | Out-File report.htmlEXAMPLE 2
Section titled “EXAMPLE 2”# Merge from a directory of JSON filesMerge-MtMaesterResult -Path ./results/ | Get-MtHtmlReport | Out-File report.htmlEXAMPLE 3
Section titled “EXAMPLE 3”# Merge from a glob patternMerge-MtMaesterResult -Path *.json | Get-MtHtmlReport | Out-File report.htmlEXAMPLE 4
Section titled “EXAMPLE 4”# Pipeline: Import then mergeImport-MtMaesterResult -Path *.json | Merge-MtMaesterResult | Get-MtHtmlReport | Out-File report.htmlEXAMPLE 5
Section titled “EXAMPLE 5”# In-memory: run against two tenants and merge$result1 = Invoke-Maester -PassThru# ... reconnect to second tenant ...$result2 = Invoke-Maester -PassThru$merged = Merge-MtMaesterResult -MaesterResults @($result1, $result2) $html = Get-MtHtmlReport -MaesterResults $merged $html | Out-File -FilePath “MultiTenantReport.html” -Encoding UTF8
PARAMETERS
Section titled “PARAMETERS”-MaesterResults
Section titled “-MaesterResults”An array of MaesterResults objects, each representing test results from a different tenant. Accepts pipeline input from Import-MtMaesterResult.
Type: PSObject[]Parameter Sets: FromObjectsAliases:
Required: TruePosition: 1Default value: NoneAccept pipeline input: True (ByValue)Accept wildcard characters: FalseOne or more paths to JSON result files, glob patterns, or directories. Files are loaded via Import-MtMaesterResult internally.
- File path: ./production.json
- Glob: ./results/*.json
- Directory: ./results/ (discovers TestResults-*.json inside)
Type: String[]Parameter Sets: FromPathAliases:
Required: TruePosition: 1Default value: NoneAccept pipeline input: FalseAccept wildcard characters: False-ProgressAction
Section titled “-ProgressAction”Determines how PowerShell responds to progress updates generated by a script, cmdlet, or provider, such as the progress bars generated by Write-Progress.
Type: ActionPreferenceParameter Sets: (All)Aliases: proga
Required: FalsePosition: NamedDefault value: NoneAccept pipeline input: FalseAccept wildcard characters: FalseCommonParameters
Section titled “CommonParameters”This cmdlet supports the common parameters: -Debug, -ErrorAction, -ErrorVariable, -InformationAction, -InformationVariable, -OutVariable, -OutBuffer, -PipelineVariable, -Verbose, -WarningAction, and -WarningVariable. For more information, see about_CommonParameters.
INPUTS
Section titled “INPUTS”OUTPUTS
Section titled “OUTPUTS”Design notes for future development
Section titled “Design notes for future development”Multi-tenant reports (current)
Section titled “Multi-tenant reports (current)”This command wraps all results into a Tenants[] array. The HTML report frontend detects the Tenants property and renders a tenant selector in the sidebar. No deduplication is performed - if the same TenantId appears multiple times, all instances are included.
Historical / trend reports (planned)
Section titled “Historical / trend reports (planned)”A future command (e.g. New-MtTrendReport) can reuse Import-MtMaesterResult to load results, then group by TenantId and sort by ExecutedAt within each group. Each result already carries TenantId and ExecutedAt, so the intelligence is:
- Different TenantIds, similar dates -> multi-tenant (use Merge-MtMaesterResult)
- Same TenantId, different dates -> historical trend (use future trend command)
- Mixed -> group by TenantId, each group has a timeline
Import-MtMaesterResult is intentionally a “dumb loader” that returns everything. The consuming command (Merge, Compare, Trend) decides how to interpret the data.
Pipeline architecture
Section titled “Pipeline architecture”The intended pipeline pattern is:
Import-MtMaesterResult -> [Merge | Compare | Trend] -> Get-MtHtmlReport -> Out-File
Merge-MtMaesterResult also accepts -Path directly for convenience (calls Import internally), so the user can skip the Import step for simple scenarios:
Merge-MtMaesterResult -Path *.json | Get-MtHtmlReport | Out-File report.html