Beispiel für benutzerdefinierte Discovery-Probe und -Sensor: CI mit Textdateiwerten füllen

  • Freigeben Version: Zurich
  • Aktualisiert 31. Juli 2025
  • 2 Minuten Lesedauer
  • Mithilfe dieser benutzerdefinierten Discovery-Probe können Sie eine Textdatei von einem Windows-Computer lesen und ein CI in der CMDB mit den Werten aus der Datei füllen.

    Vorbereitungen

    Erforderliche Rolle: Administrator

    Warum und wann dieser Vorgang ausgeführt wird

    In diesem Beispiel wollte der Benutzer von BGinfo erstellte Dateien lesen.
    Hinweis:
    Wenn Sie die Probe und den Sensor abgeschlossen haben, platzieren Sie die Probe in der entsprechenden Windows-Klassifizierung unter Discovery-Definition > CI-Klassifizierung > Windowsan.

    Prozedur

    1. Navigieren zu Discovery-Definition > Probes, Und klicken Sie dann auf Neu .
    2. Füllen Sie die folgenden Felder aus:
      • Name: Eindeutiger und beschreibender Name für die Probe
      • Probe-Typ: Wählen Sie Probe aus.
      • Beschreibung: Beschreiben Sie die Funktionalität dieser Probe.
      • Verwendet von Discovery: Aktivieren Sie dieses Kontrollkästchen.
      • ECC-Warteschlangenthema: Der Name der Probe, die der MID Server ausführen soll. In diesem Beispiel wird WMIRunner verwendet.
      • ECC-Warteschlangenname: In diesem Beispiel wird der beschreibende Name WMI: BGInfo files verwendet.
    3. yxcvbnm,ooiuztreq12345tKlicken Sie mit der rechten Maustaste auf die Kopfzeile und wählen Sie Speichern aus dem Kontextmenü.
    4. Wechseln Sie im Probe-Formular zur Registerkarte „Probe Parameter“, und klicken Sie auf Neu.
    5. Geben Sie WMI_GetFiles.js als Namen für diesen Parameter ein.
    6. Kopieren Sie das folgende Skript in das Feld Skript, und bearbeiten Sie es nach Bedarf.
    7. Klicken Sie auf Absenden.
      
      //
       // Use ServiceNow WMIAPI to gather stats
       //
       var CMD_RETRIES = 3;
       var scanner = getScanner();
       if (scanner) {
         var output = "";
         for(var i = 0; i < CMD_RETRIES; i++) {
            output = scanner.winExec("%SystemRoot%\\system32\\cmd.exe /C type \\\"C:\\Information Systems\\BgInfo\\*.txt\\\"");
            if (output)
               break;
         }
         scanner.appendToRoot("output", output);
       }
    8. Navigieren zu Discovery-Definition > Sensoren, Und klicken Sie dann auf Neu .
      Füllen Sie die folgenden Felder aus:
      • Name: Verwenden Sie den Namen der entsprechenden Probe. In diesem Beispiel wird Windows - Get BGInfo files verwendet.
      • Reagiert auf Probe: Der Name der im vorherigen Verfahren erstellten Probe: Windows - Get BGInfo files
      • Sensortyp: Wählen Sie den Typ des zu erstellenden Sensors aus, in diesem Beispiel Sensor.
      • Beschreibung: Beschreibt die Funktion dieses Sensors
      • Skript: Kopieren Sie das folgende Skript in das Feld Skript, und bearbeiten Sie es nach Bedarf.
      • Sensortyp: Bestimmt, wie die Antwort der Probe verarbeitet wird - in diesem Beispiel JavaScript
    9. Klicken Sie auf Absenden.
       
       
      new DiscoverySensor({ data: {}, process: function(result) { 
       
              this.parseOutput(result.output);
              this.update(this.data);
          },
       
       parseOutput: function(output) {
              var currentFile;
              var files = {};
       
       if (output.startsWith("<wmi")) {
                  var bgout = new XMLHelper(output).toObject();
                  if (!bgout)
                      return;
       
       output = bgout.output;
              }
       
       var lines = output.split(/\n/);
       
       for(var i = 0; i < lines.length; i++) {
                  var line = lines[i];
                  if (line.startsWith("C:\\Information Systems\\BgInfo\\")) {
                      currentFile = line.substr(30);
                      files[currentFile] = "";
                  } else if (currentFile) {
                      var newLine = line.trim();
                      if (newLine)
                          files[currentFile] += (files[currentFile]? "\n" : "") + newLine;
                  }
              }
       
       this.data['u_jack_id'] = files['JackID.txt'];
       this.data['warranty_expiration'] = files['Warranty.txt'];
       this.data['po_number'] = files['Ponum.txt'];},
       type: "DiscoverySensor"
       
       });