default MpPerformanceReport.Result Deserialized.MpPerformanceReport.Result Overview ($_ | gm -Name:'Overview' -MemberType:NoteProperty).Count -gt 0 Overview ======== ($_ | fl | Out-String).Trim("`r`n".ToCharArray()) TopFiles ($_ | gm -Name:'TopFiles' -MemberType:NoteProperty).Count -gt 0 TopFiles ======== MpPerformanceReport.NestedCollection Deserialized.MpPerformanceReport.NestedCollection ($_ | fc | Out-String).Trim("`r`n".ToCharArray()) ($_ | ft | Out-String).Trim("`r`n".ToCharArray()) TopExtensions ($_ | gm -Name:'TopExtensions' -MemberType:NoteProperty).Count -gt 0 TopExtensions ============= MpPerformanceReport.NestedCollection Deserialized.MpPerformanceReport.NestedCollection ($_ | fc | Out-String).Trim("`r`n".ToCharArray()) ($_ | ft | Out-String).Trim("`r`n".ToCharArray()) TopProcesses ($_ | gm -Name:'TopProcesses' -MemberType:NoteProperty).Count -gt 0 TopProcesses ============ MpPerformanceReport.NestedCollection Deserialized.MpPerformanceReport.NestedCollection ($_ | fc | Out-String).Trim("`r`n".ToCharArray()) ($_ | ft | Out-String).Trim("`r`n".ToCharArray()) TopPaths ($_ | gm -Name:'TopPaths' -MemberType:NoteProperty).Count -gt 0 TopPaths ======== MpPerformanceReport.NestedCollection Deserialized.MpPerformanceReport.NestedCollection ($_ | fc | Out-String).Trim("`r`n".ToCharArray()) ($_ | ft | Out-String).Trim("`r`n".ToCharArray()) Folder ($_ | gm -Name:'Folder' -MemberType:NoteProperty).Count -gt 0 Folder ====== MpPerformanceReport.NestedCollection Deserialized.MpPerformanceReport.NestedCollection ($_ | fc | Out-String).Trim("`r`n".ToCharArray()) ($_ | ft | Out-String).Trim("`r`n".ToCharArray()) TopScans ($_ | gm -Name:'TopScans' -MemberType:NoteProperty).Count -gt 0 TopScans ======== ($_ | ft | Out-String).Trim("`r`n".ToCharArray()) default MpPerformanceReport.Result Deserialized.MpPerformanceReport.Result $null -ne $_.Overview ($_.Overview | fl | Out-String).TrimStart() $null -ne $_.TopFiles ($_.TopFiles | fl | Out-String).TrimStart() $null -ne $_.TopExtensions ($_.TopExtensions | fl | Out-String).TrimStart() $null -ne $_.TopPaths ($_.TopPaths | fl | Out-String).TrimStart() $null -ne $_.TopProcesses ($_.TopProcesses | fl | Out-String).TrimStart() $null -ne $_.TopScans ($_.TopScans | fl | Out-String).TrimStart() default MpPerformanceReport.Result Deserialized.MpPerformanceReport.Result ForEach($sectionName in @('TopFiles', 'TopExtensions', 'TopProcesses', 'TopScans', 'TopPaths')) { if ($null -ne $_.$sectionName) { $sectionName } } default MpPerformanceReport.Result Deserialized.MpPerformanceReport.Result 13 ($_.Overview | fl | Out-String).TrimStart() ($_.TopExtensions | fw -Column:1 | Out-String).TrimStart() ($_.TopProcesses | fw -Column:1 | Out-String).TrimStart() ($_.TopFiles | fw -Column:1 | Out-String).TrimStart() ($_.TopScans | fw -Column:1 | Out-String).TrimStart() ($_.TopPaths | fw -Column:1 | Out-String).TrimStart() default MpPerformanceReport.ScannedFilePathStats Deserialized.MpPerformanceReport.ScannedFilePathStats MpPerformanceReport.ScannedFileExtensionStats Deserialized.MpPerformanceReport.ScannedFileExtensionStats MpPerformanceReport.ScannedPathStats Deserialized.MpPerformanceReport.ScannedPathStats MpPerformanceReport.ScannedProcessStats Deserialized.MpPerformanceReport.ScannedProcessStats ($_ | ft | Out-String).Trim("`r`n".ToCharArray()) 4 Files ($_ | gm -Name:'Files' -MemberType:NoteProperty).Count -eq 1 Files: MpPerformanceReport.NestedCollection Deserialized.MpPerformanceReport.NestedCollection ($_ | ft | Out-String).Trim("`r`n".ToCharArray()) 4 Scans ($_ | gm -Name:'Scans' -MemberType:NoteProperty).Count -eq 1 Scans: $properties = 'ScanType',@{Name='Duration'; Expression={$_.Duration}; Alignment='Right'},'Reason','SkipReason' if (($_ | gm -Name:'ProcessName' -MemberType:NoteProperty).Count -eq 1) { $properties += 'ProcessName' } if (($_ | gm -Name:'ProcessPath' -MemberType:NoteProperty).Count -eq 1) { $properties += 'ProcessPath' } ($_ | ft -Property:$properties | Out-String).Trim("`r`n".ToCharArray()) ($_ | ft | Out-String).Trim("`r`n".ToCharArray()) Extensions ($_ | gm -Name:'Extensions' -MemberType:NoteProperty).Count -eq 1 Extensions: MpPerformanceReport.NestedCollection Deserialized.MpPerformanceReport.NestedCollection ($_ | ft | Out-String).Trim("`r`n".ToCharArray()) 4 Scans ($_ | gm -Name:'Scans' -MemberType:NoteProperty).Count -eq 1 Scans: $properties = 'ScanType',@{Name='Duration'; Expression={$_.Duration}; Alignment='Right'},'Reason','SkipReason','ProcessName','Path' ($_ | ft -Property:$properties | Out-String).Trim("`r`n".ToCharArray()) ($_ | ft | Out-String).Trim("`r`n".ToCharArray()) Folder ($_ | gm -Name:'Folder' -MemberType:NoteProperty).Count -eq 1 Folder: MpPerformanceReport.NestedCollection Deserialized.MpPerformanceReport.NestedCollection ($_ | ft | Out-String).Trim("`r`n".ToCharArray()) 4 Scans ($_ | gm -Name:'Scans' -MemberType:NoteProperty).Count -eq 1 Scans: $properties = 'ScanType',@{Name='Duration'; Expression={$_.Duration}; Alignment='Right'},'Reason','SkipReason','ProcessName','Path' ($_ | ft -Property:$properties | Out-String).Trim("`r`n".ToCharArray()) 4 Folder ($_ | gm -Name:'Folder' -MemberType:NoteProperty).Count -eq 1 Folder: ($_ | Out-String).Trim("`r`n".ToCharArray()) ($_ | ft | Out-String).Trim("`r`n".ToCharArray()) Processes ($_ | gm -Name:'Processes' -MemberType:NoteProperty).Count -eq 1 Processes: MpPerformanceReport.NestedCollection Deserialized.MpPerformanceReport.NestedCollection ($_ | ft | Out-String).Trim("`r`n".ToCharArray()) 4 Scans ($_ | gm -Name:'Scans' -MemberType:NoteProperty).Count -eq 1 Scans: $properties = 'ScanType',@{Name='Duration'; Expression={$_.Duration}; Alignment='Right'},'Reason','SkipReason','ProcessName','Path' ($_ | ft -Property:$properties | Out-String).Trim("`r`n".ToCharArray()) ($_ | ft | Out-String).Trim("`r`n".ToCharArray()) Scans ($_ | gm -Name:'Scans' -MemberType:NoteProperty).Count -eq 1 Scans: $properties = 'ScanType',@{Name='Duration'; Expression={$_.Duration}; Alignment='Right'},'Reason','SkipReason' if (($_ | gm -Name:'Comments' -MemberType:NoteProperty).Count -eq 1) { $properties += @{Name='Comments'; Expression={$_.Comments.Count}; Alignment='Right'} } if (($_ | gm -Name:'ProcessName' -MemberType:NoteProperty).Count -eq 1) { $properties += 'ProcessName' } if (($_ | gm -Name:'Path' -MemberType:NoteProperty).Count -eq 1) { $properties += 'Path' } ($_ | ft -Property:$properties | Out-String).Trim("`r`n".ToCharArray()) default MpPerformanceReport.ScanStats Deserialized.MpPerformanceReport.ScanStats $null -ne $_.ProcessPath ProcessPath $null -ne $_.Path Path $null -ne $_.Extension Extension Count TotalDuration MinDuration AverageDuration MaxDuration MedianDuration $null -ne $_.Extensions ($_.Extensions | fl | Out-String).Trim() $null -ne $_.Files ($_.Files | fl | Out-String).Trim() $null -ne $_.Processes ($_.Processes | fl | Out-String).Trim() $null -ne $_.Scans ($_.Scans | fl | Out-String).Trim() default MpPerformanceReport.ScannedFilePathStats Deserialized.MpPerformanceReport.ScannedFilePathStats Right Right Right Right Right Right Count TotalDuration MinDuration AverageDuration MaxDuration MedianDuration Path default MpPerformanceReport.ScannedFileExtensionStats Deserialized.MpPerformanceReport.ScannedFileExtensionStats Right Right Right Right Right Right Count TotalDuration MinDuration AverageDuration MaxDuration MedianDuration Extension default MpPerformanceReport.ScannedPathStats Deserialized.MpPerformanceReport.ScannedPathStats Right Right Right Right Right Right Count TotalDuration MinDuration AverageDuration MaxDuration MedianDuration Path default MpPerformanceReport.ScannedProcessStats Deserialized.MpPerformanceReport.ScannedProcessStats Right Right Right Right Right Right Count TotalDuration MinDuration AverageDuration MaxDuration MedianDuration ProcessPath default MpPerformanceReport.ScannedFilePathStats Deserialized.MpPerformanceReport.ScannedFilePathStats Path default MpPerformanceReport.ScannedFileExtensionStats Deserialized.MpPerformanceReport.ScannedFileExtensionStats Extension default MpPerformanceReport.ScannedPathStats Deserialized.MpPerformanceReport.ScannedPathStats Path default MpPerformanceReport.ScannedProcessStats Deserialized.MpPerformanceReport.ScannedProcessStats ProcessPath default MpPerformanceReport.ScanInfo Deserialized.MpPerformanceReport.ScanInfo Right Right ScanType Duration Reason SkipReason $_.Comments.Count ProcessName Path default MpPerformanceReport.ScanInfo Deserialized.MpPerformanceReport.ScanInfo ScanType StartTime EndTime Duration ($null -ne $_.Reason) -and ($_.Reason.Length -gt 0) Reason SkipReason Path $null -ne $_.ProcessPath ProcessPath $null -ne $_.ProcessId ProcessId $null -ne $_.Image Image $null -ne $_.Comments ($_.Comments | fl | Out-String).Trim("`r`n".ToCharArray()) default MpPerformanceReport.ScanInfo Deserialized.MpPerformanceReport.ScanInfo Path default MpPerformanceReport.ScanInfo Deserialized.MpPerformanceReport.ScanInfo ($_ | ft | Out-String).Trim("`r`n".ToCharArray()) default MpPerformanceReport.Overview Deserialized.MpPerformanceReport.Overview ($_ | fl | Out-String).Trim("`r`n".ToCharArray()) default MpPerformanceReport.Overview Deserialized.MpPerformanceReport.Overview StartTime EndTime ($null -ne $_.RealTimeScans) -and ($_.RealTimeScans -gt 0) RealTimeScans ($null -ne $_.OnDemandScans) -and ($_.OnDemandScans -gt 0) OnDemandScans ($null -ne $_.FileScans) -and ($_.FileScans -gt 0) FileScans ($null -ne $_.ProcessScans) -and ($_.ProcessScans -gt 0) ProcessScans ($null -ne $_.RealTimeScansDuration) -and ($_.RealTimeScansDuration -gt 0) RealTimeScansDuration ($null -ne $_.OnDemandScansDuration) -and ($_.OnDemandScansDuration -gt 0) OnDemandScansDuration ($null -ne $_.FileScansDuration) -and ($_.FileScansDuration -gt 0) FileScansDuration ($null -ne $_.ProcessScansDuration) -and ($_.ProcessScansDuration -gt 0) ProcessScansDuration MaxScanDuration MedianScanDuration ($null -ne $_.SkipScanCount) -and ($_.SkipScanCount -gt 0) SkipScanCount ($null -ne $_.PerfHints) -and ($_.PerfHints.Count -gt 0) ($_.PerfHints | fl | Out-String).Trim("`r`n".ToCharArray())