Operating System Performance

Microsoft.Windows.Server.Html5.Dashboard.OperatingSystemPerformance.View (View)

Element properties:

TargetSystem.Entity
TypeMicrosoft.SystemCenter.HTMLWidgetType
AccessibilityPublic
VisibleTrue

Source Code:

<View ID="Microsoft.Windows.Server.Html5.Dashboard.OperatingSystemPerformance.View" Accessibility="Public" Enabled="true" Target="System!System.Entity" TypeID="SCInternal!Microsoft.SystemCenter.HTMLWidgetType" Visible="true">
<Category>Operations</Category>
<WidgetConfiguration>
<Configuration>{"widgetDisplay":{"col":1,"row":1,"payload":"f940ac24-ff3b-98cd-e634-de3ddb408d56","dragHandle":".draggable","resizeHandle":".resizable","sizex":11,"sizey":5},"widgetParameters":{"script":"#////////////////////////////////////////////////////////////////////////////////////////////\n$class = get-scomclass -Name Microsoft.Windows.Server.OperatingSystem \n$serverOSes = Get-SCOMClassInstance -class $class\n$avg_stat = @{} \n$dat1Objects = @()\n$unitReplacements = @{ \n\"Physical Memory (MB)\" = @{ \"name\" = \"Total RAM (GB)\"; \"coeff\" = 1048576 }; \n}\n#///////// Functions Section ///////////////////// START\nfunction RecalculateMinMaxForAvgStatItem \n{ \nparam($name, $value)\n$avg_stat[$name][\"min\"] = ($avg_stat[$name][\"min\"], $value | Measure -Min).Minimum \n$avg_stat[$name][\"max\"] = ($avg_stat[$name][\"max\"], $value | Measure -Max).Maximum \n}\n\n# Function to convert results to &#x201C;PerformanceDataStatistics&#x201D; type to return the collection to the VMM column generator component of the State Widget: \nfunction CreateStatistics { \nparam($value)\n$stat = $ScriptContext.CreateInstance(\"xsd://Microsoft.SystemCenter.Visualization.Library!Microsoft.SystemCenter.Visualization.DataProvider/PerformanceDataStatistics\") \nif ($value -ne $null) { \n $stat[\"AverageValue\"] = [double]$value \n $stat[\"Value\"] = [double]$value \n} \n $stat \n}\n\n# Initialize Stat Item: \nfunction InitAvgStatItem { \nparam($name)\nif ($avg_stat[$name] -eq $null) { \n $avg_stat[$name] = @{} \n $avg_stat[$name][\"min\"] = 0 \n $avg_stat[$name][\"max\"] = [Int32]::MinValue \n} \n} \n\nfunction AddColumnValue { \nparam($dat1Object, $name, $value)\n$v = $value\n# Transform units value \nif($unitReplacements[$name] -ne $null) { \n $r = $unitReplacements[$name] \n if ($v -ne $null) { \n $v = $v = $v / $r[\"coeff\"] \n } \n $name = $r[\"name\"] \n }\nInitAvgStatItem $name \nif ($v -ne $null) { \n $dat1Object[$name] = CreateStatistics($v) \n RecalculateMinMaxForAvgStatItem $name $v \n} \nelse \n{ \n $dat1Object[$name] = $null \n} \n}\n#///////// Functions Section ///////////////////// END\n#///////// Main Section ///////////////////// START\nforeach ($serverOS in $serverOSes) { \n$dat1Object = $ScriptContext.CreateFromObject($serverOS, \"Id=Id,State=HealthState,Path=Path\", $null)\n$dat1Object[\"Name\"]=$serverOS.Path \nif ($dat1Object -ne $null) { \n\n#Last 16 hours \n$aggregationInterval = 16 \n $dt = New-TimeSpan -hour $aggregationInterval \n $now = Get-Date \n $from = $now.Subtract($dt)\n $perfRules = $serverOS.GetMonitoringPerformanceData() \n foreach ($perfRule in $perfRules) { \n#Get % Processor Time Stat \n if($perfRule.CounterName -eq \"% Processor Time\") { \n $dat1 = $perfRule.GetValues($from, $now) | % { $_.SampleValue } | Measure-Object -Average \n AddColumnValue $dat1Object $perfRule.CounterName $dat1.Average \n } \n#Get Processor Queue Length Stat \n if($perfRule.CounterName -eq \"Processor Queue Length\") { \n $dat1 = $perfRule.GetValues($from, $now) | % { $_.SampleValue } | Measure-Object -Average \nAddColumnValue $dat1Object $perfRule.CounterName $dat1.Average \n } \n#Get % Memory Used Stat \n if($perfRule.CounterName -eq \"PercentMemoryUsed\") { \n $dat1 = $perfRule.GetValues($from, $now) | % { $_.SampleValue } | Measure-Object -Average \nAddColumnValue $dat1Object $perfRule.CounterName $dat1.Average \n } \n \n } \n $dat1Objects += $dat1Object \n } \n} \nforeach ($dat1Object in $dat1Objects) \n{ \nforeach ($metric in $avg_stat.Keys) \n{ \n $stat = $avg_stat[$metric] \n $dat1Object[$metric][\"MinimumValue\"] = [double]$stat[\"min\"]\n if ($stat[\"max\"] -ne [Int32]::MinValue) \n { \n $dat1Object[$metric][\"MaximumValue\"] = [double]$stat[\"max\"] \n } \n else \n { \n $dat1Object[$metric][\"MaximumValue\"] = [double]0 \n } \n} \n$ScriptContext.ReturnCollection.Add($dat1Object) \n}\n#///////// Main Section ///////////////////// END \n \n \n#//////////////////////////////////////////////////////////////////////////////////////////// \n\n"},"widgetRefreshInterval":5}</Configuration>
<Type>HtmlPowershellWidget</Type>
</WidgetConfiguration>
</View>