Dieser Artikel beschreibt, wie ein normaler SNMP-Abruf auf eine OID mittels PowerShell durchgeführt werden kann. Dies ist hilfreich um beispielsweise zu prüfen, ob SNMP korrekt aktiviert ist und ein SNMP-basierter Sensor so Daten abrufen kann. 


Hinweis: Wenn ein SNMP-basierter Sensor bei dir einen Fehler ausgibt, so wende dich gerne an unseren Support, wir geben dir dann eine herstellerspezifische OID zum Testen. 

Voraussetzungen:

Für funktionierendes SNMP:

  • SNMP aktiviert 
    • Unterstützt werden V1, V2, V2U sowie unverschlüsseltes V3
  • Korrekte Community (Standard ist public)
  • Port 161 (SNMP-Port) ist im Netzwerkverkehr erlaubt

Für die Abfrage:

  • Mindestens PowerShell 5 (wegen Install-Module)


Vorbereitungen

Damit die PowerShell SNMP-Abfragen durchführen kann ist der Import des Moduls "SNMP" aus der PowerShell-Gallery notwendig. Verwende hierzu bitte eine PowerShell mit Admin-Rechten: 

Install-Module SNMP

Dieser Schritt ist nur ein Mal notwendig - danach kann die SNMP-Abfrage durchgeführt werden. Die im Modul befindlichen Befehle können mit "Get-Command -Module SNMP" geprüft werden. 


Durchführung

Die Abfrage einer OID, also eines Object Identifiers, sieht dann wie folgt aus: 

Get-SnmpData -IP 127.0.0.1 -Community public -OID .1.3.6.1.2.1.1.1.0 -Version V1 -TimeOut 30 -UDPPort 161

Dabei sind folgende Aufruf-Parameter im Beispiel optional: 

  • Version - erlaubt sind hier Werte V1, V2, V2U und V3 (letzteres ohne Verschlüsselung)
  • Timeout - optionaler Wert, damit eine erfolglose Abfrage oder eine Abfrage, die zu lange dauert automatisch abgebrochen wird
  • UDPPort - damit kann ein individuell eingestellter Port ausgewählt werden, Standard ist 161 - sollte der Sensor keine Port-Einstellung besitzen so bitte diesen Parameter weg lassen. Die Abfrage geht dann über Port 161


Da unter Umständen, wie im vorangegangenen Beispiel, die zurück gelieferten Werte sehr umfangreich sein können lässt sich die Ausgabe auch umformatieren, die optionalen Parameter wurden hier zur besseren Übersicht weg gelassen können aber ebenso verwendet werden: 

Get-SNMPData -IP 127.0.0.1 -Community public -OID .1.3.6.1.2.1.1.1.0 | Format-Table -Autosize -Wrap


Um das Ganze unserm Support zukommen zu lassen kannst du die Ausgabe abschließend noch in eine Datei umleiten: 

Get-SNMPData -IP 127.0.0.1 -Community public -OID .1.3.6.1.2.1.1.1.0 | Format-Table -Autosize -Wrap | Out-File -FilePath .\temp\SysDescr.txt

Es erfolgt dann keine Ausgabe auf Konsole, diese wird komplett in die Datei umgeleitet. Hier wird die Datei unter C:\test\SysDescr.txt gespeichert - beachte bitte, dass in der Regel ein direktes Speichern auf C:\ durch Windows blockiert wird und ein Verzeichnis mitgegeben werden muss. Dieses bitte vorher anlegen.  


Mehrere OIDs abfragen

Es können mit den vorangegangenen Mitteln auch mehrere OIDs gleichzeitig abgefragt werden. Hierzu mehrere OIDs mit Komma getrennt angeben. Beachte hierbei, dass es sinnvoll sein kann, einen Timeout mitzugeben, falls einer der Werte nicht direkt abrufbar ist: 

Get-SNMPData -IP 127.0.0.1 -Community public -OID .1.3.6.1.2.1.1.1.0,.1.3.6.1.2.1.1.3.0 -TimeOut 30 | Format-Table -Autosize -Wrap


Fehlermeldungen

Sollte die folgende Meldung kommen, so ist die Ziel-OID nicht erreichbar, der Test ist also fehlgeschlagen

Sofern es sich bei der Ziel-OID nicht um eine Standard sondern spezifische Hersteller-OID handelt kann dies bedeuten, dass die Hersteller-SNMP-Agents nicht installiert sind. Dafür das zugrunde liegende Tool nach einem Test auf eine Standard-SNMP-OID wie beispielsweise .1.3.6.1.2.1.1.1.0 ausführen. Fehlt diese, so ist unter Windows der SNMP-Dienst nicht installiert. 


Beachte: Einige Hersteller installieren die eigenen SNMP-Agents erst mit, wenn der Windows-SNMP-Dienst vorhanden und aktiv ist.