Private/Start-MonitoringLoop.ps1
function Start-MonitoringLoop { [CmdletBinding()] param( [Parameter(Mandatory=$true)] [PerformanceCounter[]] $Counters, [Parameter(Mandatory=$true)] [hashtable] $Config, [Parameter(Mandatory=$true)] [int] $UpdateInterval, [Parameter(Mandatory=$true)] [int] $MaxDataPoints ) $SampleCount = 0 $StartTime = Get-Date while ( $true ) { $SampleCount++ # Collect data from all counters foreach ( $Counter in $Counters ) { try { $Value = $Counter.GetCurrentValue() $Counter.AddDataPoint($Value, $MaxDataPoints) } catch { Write-Warning "Error reading counter '$($Counter.Title)': $($_.Exception.Message)" } } Show-SessionHeader -ConfigName $Config.Name -StartTime $StartTime -SampleCount $SampleCount # Separate counters by format $graphCounters = @() $tableCounters = @() foreach ( $Counter in $Counters ) { if ( $Counter.HistoricalData.Count -gt 3 ) { # Need some data points switch ($Counter.Format) { "graph" { $graphCounters += $Counter } "table" { $tableCounters += $Counter } "both" { $graphCounters += $Counter $tableCounters += $Counter } default { $graphCounters += $Counter } # Default to graph } } else { Write-Host "$($Counter.GetFormattedTitle()): Collecting data... ($($Counter.HistoricalData.Count)/3 samples)" -ForegroundColor Yellow Write-Host "" } } # Show graphs first foreach ( $Counter in $graphCounters ) { try { Show-CounterGraph -Counter $Counter } catch { Write-Host "$($Counter.Title) Graph error: $($_.Exception.Message)" -ForegroundColor Red Write-Host "" } } # Show table if there are any table counters if ( $tableCounters.Count -gt 0 ) { try { Show-CounterTable -Counters $tableCounters } catch { Write-Host "Table display error: $($_.Exception.Message)" -ForegroundColor Red Write-Host "" } } Start-Sleep -Seconds $UpdateInterval } } |