Freigeben über


Export Unit Monitors (including Thresholds)

This one is a modification of what you can find here.  The main difference is we can select specific Management Packs with this script.  Replace the parameters with your criteria.  To find management pack system name, you can run get-managementpack | select name | sort name.

 

function GetThreshold ([String] $configuration)
{
$config = [xml] ("<config>" + $configuration + "</config>")
$threshold = $config.Config.Threshold
if($threshold -eq $null)
{
$threshold = $config.Config.MemoryThreshold
}
if($threshold -eq $null)
{
$threshold = $config.Config.CPUPercentageThreshold
}
if($threshold -eq $null)
{
if($config.Config.Threshold1 -ne $null -and $config.Config.Threshold2 -ne $null)
{
$threshold = "first threshold is: " + $config.Config.Threshold1 + " second threshold is: " + $config.Config.Threshold2
}
}
if($threshold -eq $null)
{
if($config.Config.ThresholdWarnSec -ne $null -and $config.Config.ThresholdErrorSec -ne $null)
{
$threshold = "warning threshold is: " + $config.Config.ThresholdWarnSec + " error threshold is: " + $config.Config.ThresholdErrorSec
}
}
if($threshold -eq $null)
{
if($config.Config.LearningAndBaseliningSettings -ne $null)
{
$threshold = "no threshold (baseline monitor)"
}
}
return $threshold
}
$perfMonitors = get-managementpack -name ' [Management Pack System Name] ' | get-monitor | where {$_.XmlTag -eq 'UnitMonitor'}
$perfMonitors | select-object @{name="Target";expression={foreach-object {(Get-MonitoringClass -Id:$_.Target.Id).DisplayName}}},DisplayName, @{name="Threshold";expression={foreach-object {GetThreshold $_.Configuration}}}, @{name="AlertOnState";expression={foreach-object {$_.AlertSettings.AlertOnState}}}, @{name="AutoResolveAlert";expression={foreach-object {$_.AlertSettings.AutoResolve}}}, @{name="AlertSeverity";expression={foreach-object {$_.AlertSettings.AlertSeverity}}} | sort Target, DisplayName | export-csv " [path\file.csv] "

 

Command Shell Main Menu

Comments

  • Anonymous
    January 01, 2003
    Try this: function GetThreshold ([String] $configuration) { $config = [xml] ("<config>" + $configuration + "</config>") $threshold = $config.Config.Threshold if($threshold -eq $null) { $threshold = $config.Config.MemoryThreshold } if($threshold -eq $null) { $threshold = $config.Config.CPUPercentageThreshold } if($threshold -eq $null) { if($config.Config.Threshold1 -ne $null -and $config.Config.Threshold2 -ne $null) { $threshold = "first threshold is: " + $config.Config.Threshold1 + " second threshold is: " + $config.Config.Threshold2 } } if($threshold -eq $null) { if($config.Config.ThresholdWarnSec -ne $null -and $config.Config.ThresholdErrorSec -ne $null) { $threshold = "warning threshold is: " + $config.Config.ThresholdWarnSec + " error threshold is: " + $config.Config.ThresholdErrorSec } } if($threshold -eq $null) { if($config.Config.LearningAndBaseliningSettings -ne $null) { $threshold = "no threshold (baseline monitor)" } } return $threshold } $perfMonitors = get-managementpack -name 'Microsoft.Windows.Server.AD.2008.Monitoring' | get-monitor | where {$.XmlTag -eq 'UnitMonitor'} $perfMonitors | select-object @{name="Target";expression={foreach-object {(Get-MonitoringClass -Id:$.Target.Id).DisplayName}}},DisplayName, @{name="Threshold";expression={foreach-object {GetThreshold $.Configuration}}}, @{name="AlertOnState";expression={foreach-object {$.AlertSettings.AlertOnState}}}, @{name="AutoResolveAlert";expression={foreach-object {$.AlertSettings.AutoResolve}}}, @{name="AlertSeverity";expression={foreach-object {$.AlertSettings.AlertSeverity}}} | sort Target, DisplayName  | export-csv "C:Microsoft.Windows.Server.AD.2003.Monitoring.csv"

  • Anonymous
    January 01, 2003
    MPViewer doesn't show performance threshold information, whereas the script here does.  I don't have a version for rules - this is just an example.

  • Anonymous
    January 01, 2003
    Hi Jonathan, With the help of MP Viewer i am unable to get the monitors and rules for exchange 2010 MP. Could you please help me on this.

  • Anonymous
    January 01, 2003
    I think that's unusual.  Shouldn't take more than a couple minutes at the most.  Something is not right.

  • Anonymous
    May 24, 2011
    Hello, If I try the "same" powershell command from the PS Command prompt i do not get an error but the exported file is still empty... >get-managementpack -path [.] -name 'Microsoft.Windows.Server.AD.2008.Monitoring' | get-monitor | where {$.XmlTag -eq 'UnitMonitor'} | select-object @{name="Target";ex pression={foreach-object {(Get-MonitoringClass -Id:$.Target.Id).DisplayName}}},Disp layName, @{name="Threshold";expression={foreach-object {GetThreshold $.Configuratio n}}}, @{name="AlertOnState";expression={foreach-object {$.AlertSettings.AlertOnStat e}}}, @{name="AutoResolveAlert";expression={foreach-object {$.AlertSettings.AutoRes olve}}}, @{name="AlertSeverity";expression={foreach-object {$.AlertSettings.AlertSe verity}}} | sort Target, DisplayName | export-csv "C:Microsoft.Windows.Server.AD.20 03.Monitoring.csv" PS C:usersdominiqueddocuments > Thanks, Dom

  • Anonymous
    May 24, 2011
    Hello, 1 hour that the ps is running is it usual? Thanks, Dom

  • Anonymous
    June 02, 2011
    Hello Jonathan, This is working fine. Do you have the same one for rules? Thanks, Dom

  • Anonymous
    June 02, 2011
    Hello Jonathan, How would you compare advantages and disadvantages to use powershell script (like the one in this blog) or mpviewer? Thanks, Dom