Listing all the performance collection rules in a management group

Performance monitors will look at at performance counter value and change state when a particular condition is detected. However if you want to collect performance counters for viewing in the console or reporting, you need to create a performance collection rule. 

Here is sample script I put together to show what performance rules are present, and some details about each rule as as collection frequency, the perf conter name, and where the data is written.

function GetPerfCounterName ([String] $configuration)
{

$config = [xml] ("<config>" + $configuration + "</config>")

return ($config.Config.ObjectName + "\" + $config.Config.CounterName)

}

function GetFrequency ([String] $configuration)
{

$config = [xml] ("<config>" + $configuration + "</config>")

$frequency = $config.Config.Frequency;

if($frequency -eq $null)
{
$frequency = $config.Config.IntervalSeconds;
}

return ($frequency)

}

function GetDisplayName($performanceRule)
{
if($performanceRule.DisplayName -eq $null)
{
return ($performanceRule.Name);
}
else
{
return ($performanceRule.DisplayName);
}

}

function GetWriteActionNames($performanceRule)
{
$writeActions = "";
 

 foreach($writeAction in $performanceRule.WriteActionCollection)
{

   $writeActions += " " + $writeAction.Name;

}

 return ($writeActions);
}

$perf_collection_rules = get-rule -criteria:"Category='PerformanceCollection'"

$perf_collection_rules | select-object @{name="Type";expression={foreach-object {(Get-MonitoringClass -id:$_.Target.Id).DisplayName}}},@{name="RuleDisplayName";expression={foreach-object {GetDisplayName $_}}} ,@{name="CounterName";expression={foreach-object {GetPerfCounterName $_.DataSourceCollection[0].Configuration}}},@{name="Frequency";expression={foreach-object {GetFrequency $_.DataSourceCollection[0].Configuration}}},@{name="WriteActions";expression={foreach-object {GetWriteActionNames $_}}} | sort Type,RuleDisplayName,CounterName | export-csv "c:\perf_collection_rules.csv"

 

The write action column contains information about where the perf counter is written. 

 WriteToDB or CollectionPerformanceData - write to the operational DB

WriteToDW or CollectPerfDataWarehouse - write to the data warehouse

WC - This is used to storing baseline data for a perf counter into the operational DB.

In order to run this script, you will need to open the OpsMgr Command Shell and then just paste in the script.