Microsoft System Center Operations Manager 2012+ provides the ability to discover and monitor network routers and switches, including the network interfaces and ports on those devices and the virtual LAN (VLAN) that they participate in. Operations Manager can tell you whether network devices are online or offline, and can monitor the ports and interfaces for those devices. Operations Manager 2012 can monitor network devices that support SNMP, and can provide port monitoring for devices that implement interface MIB (RFC 2863) and MIB-II (RFC 1213) standards. Operations Manager may provide more detailed processor or memory monitoring for some network devices. 

The only problem is that out-of-the-box SCOM 2012+ can provide such monitoring for CERTIFIED network devices only.

If your network device is not CERTIFIED in SCOM you will get for this device status GENERIC which allows SCOM to tell you only whether network devices are online or offline.

Dell Force10 S4810 - network device with CERTIFIED status:

Juniper EX4550-48T - network device with GENERIC status:

So what is actual network devices list with extended monitoring capabilities for your current SCOM 2012+ environment?
Or how can I determine if my network SNMP device is CERTIFIED for extended monitoring before actual SNMP discovery (maybe you are going to purchase some)?

Microsoft has published Excel spreadsheet with certified devices for extended monitoring capabilities. This list contains about 800 network devices and is really outdated, requires some update with each System Center release or Service Pack.

Provided PowerShell script gathers CERTIFIED Network Devices with extended monitoring capability from SCOM environment and generate Full List in CSV format (my example contains about 2700 devices for SCOM 2012R2).
Run it on any SCOM 2012+ Management server in your deployment.

Another way is to "convert" generic network device to certified. Follow to this example.

 More details in my blog. Don't copy code below (for some reason it adds extra spaces to code) but download it using download button.

 

PowerShell
Edit|Remove
<# 
.Synopsis 
   Get SCOM 2012+ certified network devices list 
.DESCRIPTION 
   Get full Certified Network Devices list with Extended Monitoring Capability from current SCOM 2012+ environment  
   Run it on SCOM Management Server. Script parses directory: 
   \Operations Manager\Server\NetworkMonitoring\conf\discovery in read-only mode 
   and by default saves results into CSV file CertifiedList.csv on your Desktop 
.EXAMPLE 
   .\Get-SCOMCertifiedNetworkDevices.ps1 
.EXAMPLE 
   .\Get-SCOMCertifiedNetworkDevices.ps1 -CSVFile "C:\Reports\report.csv" 
#> 
 
Param( 
    [string]$CSVfile = "$env:userprofile\Desktop\CertifiedList.csv" 
) 
 
$SCOMpath = Get-ItemProperty -Path 'HKLM:\SOFTWARE\Microsoft\Microsoft Operations Manager\3.0\Setup' | select -ExpandProperty InstallDirectory 
  
# Select lines that contain required information from all oid2type files  
  
Write-Host "Reading oid2type*.conf files..." -ForegroundColor Green  
  
$oid2type = Get-Content $SCOMpath'NetworkMonitoring\conf\discovery\oid2type*' | Select-String ` 
-Pattern ".1.3.6.1..*|\s?TYPE.*=.*|\s?VENDOR.*=.*|\s?MODEL.*=.*|\s?CPU/Memory.*=.*|\s?VLAN.*=.*", ` 
"\s?NEIGHBOR.*=.*|\s?Interface-Fault.*=.*|\s?Interface-Performance.*=.*", ` 
"\s?Port-Fault.*=.*|\s?Port-Performance.*=.*|\s?Port-Ethernet-Performance.*=.*" 
  
# Cleaning and normalizing output  
Write-Host "Cleaning and normalizing loaded data for output..." -ForegroundColor Green  
  
$oid2type = $oid2type ` 
-replace "#.*|\s?{\s?|  ","" ` 
-replace ".*.1.3.6.1.","---OID=.1.3.6.1." ` 
-replace ".*VENDOR.*=\s?","VENDOR=" ` 
-replace ".*TYPE.*=\s?","TYPE=" ` 
-replace ".*MODEL.*=\s?","MODEL=" ` 
-replace ".*CPU/Memory.*=.*","CPUorRAM=Yes" ` 
-replace ".*VLAN.*=\s?","VLAN=" ` 
-replace ".*NEIGHBOR.*=\s?","NEIGHBOR=" ` 
-replace ".*Interface-Fault.*=\s?","IF-Fault=" ` 
-replace ".*Interface-Performance.*=\s?","IF-Perf=" ` 
-replace ".*Port-Fault.*=\s?","Port-Fault=" ` 
-replace ".*Port-Performance.*=\s?","Port-Perf=" ` 
-replace ".*Port-Ethernet-Performance.*=\s?","Port-Ether-Perf=" | Out-String  
  
# Generating table and export CSV file  
Write-Host "Generating table..." -ForegroundColor Green  
  
$CSVout = $oid2type -split "---" | ? {$_| ForEach-Object {  
    $Props = ConvertFrom-StringData -StringData $_  
    New-Object PSOBject -Property $Props | Select-Object OID, Vendor, Type, Model, CPUorRAM, VLAN, NEIGHBOR, IF-Fault, IF-Perf, Port-Fault, Port-Perf, Port-Ether-Perf}  
  
$CSVout | Sort-Object Vendor, Type, Model | export-CSV $CSVfile -NoTypeInformation  
Write-Host "Exported to $CSVfile" -ForegroundColor Green  
  
$Count = ($CSVout | Measure-Object).Count  
Write-Host "Found $Count CERTIFIED network devices" -ForegroundColor Green