Skripteinbindungen

  • Freigeben Version: Zurich
  • Aktualisiert 31. Juli 2025
  • 9 Minuten Lesedauer
  • Skripteinbindungen werden zum Speichern von JavaScript-Code verwendet, der auf dem Server ausgeführt wird.

    Erstellen Sie Skripteinbindungen zum Speichern von JavaScript-Funktionen und -Klassen zur Verwendung durch Serverskripts. Jede Skripteinbindung definiert entweder eine Objektklasse oder eine Funktion.

    Erwägen Sie die Verwendung von Skripteinbindungen anstelle von globalen Business Rules, da Skripteinbindungen nur auf Anforderung geladen werden. Siehe Datenschutzeinstellungen für Glide AJAX-fähige Skripteinbindungen und Discovery-Skripteinbindungen, um weitere Informationen zu erhalten.

    Weitere Beispiele für Skripts finden Sie unter Nützliche Skripts.

    Skripteinbindungsformular

    Skripteinbindungen haben einen Namen, eine Beschreibung und ein Skript. Sie geben außerdem an, ob sie aktiv sind oder nicht, und ob sie von einem Client-Skript aus aufgerufen werden können. Zeigen Sie vorhandene Skripteinbindungen an, oder erstellen Sie eine neue Skripteinbindung mit dem Formular

    Um auf Skripteinbindungen zuzugreifen, navigieren Sie zu Alle > Systemdefinitionen > Skripteinbindungenan.

    Tabelle : 1. Skripteinbindungsformular
    Feld Beschreibung
    Name Der Name der Skripteinbindung. Wenn Sie eine Klasse definieren, muss dieser Name mit dem Namen der Klasse, des Prototyps und des Typs übereinstimmen. Wenn Sie eine klassenlose (On-Demand-)Skripteinbindung verwenden, muss der Name mit dem Funktionsnamen übereinstimmen.
    API-Name Der interne Name der Skripteinbindung. Wird verwendet, um die Skripteinbindung aus Anwendungen außerhalb des Bereichs aufzurufen.
    Glide AJAX aktiviert (oder vom Client aufrufbar) Die Skripteinbindung ist für Client-Skripts, Listen-/Berichtsfilter, Referenzqualifizierer oder verfügbar, wenn als Teil der URL angegeben. Glide AJAX-fähige Skripteinbindungen werden über aufgerufen GlideAjax Und erfordern, dass Anwender eine ACL erfüllen, die der Skripteinbindung zugeordnet ist. Wenn diese Option ausgewählt ist, wird Zugriffssteuerungen Zugehöriger Link ist verfügbar. Weitere Informationen finden Sie unter Datenschutzeinstellungen für Glide AJAX-fähige Skripteinbindungen.
    Mobil aufrufbar Die Skripteinbindung ist für Client-Skripts verfügbar, die von Mobilgeräten aufgerufen werden.
    Sandbox aktiviert Die Skripteinbindung ist für Skripts verfügbar, die aus der Skript-Sandbox aufgerufen werden, z. B. eine Abfragebedingung.
    Wichtig:
    Skripteinbindungen sollten der Skript-Sandbox nur bei Bedarf verfügbar gemacht werden.

    Informationen zur Skript-Sandbox finden Sie unter Skript-Sandbox.

    Anwendung Die Anwendung, in der diese Skripteinbindung enthalten ist.
    Zugänglich von
    Legt fest, welche Anwendungen auf diese Skripteinbindung zugreifen können:
    Alle Anwendungsbereiche
    Der Zugriff ist aus jedem Anwendungsbereich möglich.
    Nur dieser Anwendungsbereich
    Der Zugriff ist nur aus dem aktuellen Anwendungsbereich möglich.
    Aktiv Aktiviert die Skripteinbindung, wenn ausgewählt. Deaktivieren Sie das aktive Feld, um die Skripteinbindung zu deaktivieren.
    Beschreibung Enthält eine Beschreibung der Skripteinbindung.
    Skript Definiert das serverseitige Skript, das bei Aufruf durch andere Skripts ausgeführt wird.

    Das Skript muss eine einzelne JavaScript-Klasse oder eine globale Funktion definieren. Der Klassen- oder Funktionsname muss mit dem Wert im Feld Name übereinstimmen.

    Paket Das Paket, das diese Skripteinbindung enthält.
    Erstellt von Der Benutzer, der diese Skripteinbindung erstellt hat.
    Aktualisiert von Der Benutzer, der diese Skripteinbindung zuletzt aktualisiert hat.
    Schutzrichtlinie
    Legt die Schutzstufe für die Skripteinbindung fest:
    Keine
    Ermöglicht jedem das Lesen und Bearbeiten dieser heruntergeladenen oder installierten Skripteinbindung.
    Schreibgeschützt
    Erlaubt jedem, Werte aus dieser heruntergeladenen oder installierten Skripteinbindung zu lesen. Kein Benutzer kann Skriptwerte in der Instanz ändern, in der er die Skripteinbindung herunterlädt oder installiert.
    Geschützt
    Bietet Schutz für geistiges Eigentum für Anwendungsentwickler. Kunden, die die Skripteinbindung herunterladen, können den Inhalt des Skriptfelds nicht sehen. Das Skript wird im Arbeitsspeicher verschlüsselt, um zu verhindern, dass unbefugte Benutzer es im Nur-Text-Format sehen.
    Zugehörige Listen in der Formularansicht:
    Versionen Zeigt alle Versionen der Skripteinbindung an. Verwenden Sie diese Liste, um Versionen zu vergleichen oder eine vorherige Version wiederherzustellen. Siehe Versionen .
    Zugriffssteuerungen Wird verfügbar, wenn Glide AJAX aktiviert Ist ausgewählt und ist in Standardskripteinbindungen ausgeblendet. Verwenden Sie , um eine Skripteinbindung vor nicht autorisierter Verwendung zu schützen, wenn kein öffentlicher Zugriff gewährt wird.

    Skripteinbindungen verwenden

    Skripteinbindungen finden Sie unter „Systemdefinition“ oder „System-UI“. Sie können vorhandene Skripteinbindungen aus einem Skript aufrufen oder eine neue Skripteinbindung erstellen.

    Um eine völlig neue Skripteinbindung zu erstellen, können Sie das Format einer der vorhandenen Skripteinbindungen verwenden. In diesem Beispiel lautet der Name Ihrer Skripteinbindung Neu einbeziehen Und es gibt eine einzelne Funktion namens MyFunction . Es ist wichtig, dass der Name der Skripteinbindung mit dem Namen der Klasse, des Prototyps und des Typs übereinstimmt. Wenn Sie eine neue Skripteinbindung erstellen und ihr einen Namen geben, stellt das System ein Code-Fragment bereit, in dem die Klasse und der Prototyp ordnungsgemäß eingerichtet sind.

    var NewInclude =Class.create();
     
    NewInclude.prototype={
      initialize :function(){},
     
      myFunction :function(){<Put function code here>},
     
      type :'NewInclude'};

    Sie können dann verwenden MyFunction Zeile wie diese:

    var foo =new NewInclude();
    foo.myFunction();

    Glide AJAX-aktiviertes Skript Enthält

    Glide AJAX-fähige Skripteinbindungen machen die Skripteinbindung für Client-Skripts, Listen-/Berichtsfilter, Referenzqualifizierer oder, wenn als Teil der URL angegeben, verfügbar.

    Vorbereitungen

    Erforderliche Rolle: Administrator

    Prozedur

    1. Navigieren zu Systemdefinition > Skripteinbindungenan.
    2. Wählen Sie Aus Neu Oder wählen Sie eine vorhandene Skripteinbindung zum Anzeigen oder Bearbeiten aus.
      Siehe Skripteinbindungen verwenden Für zusätzliche Informationen zum Schreiben von Skripteinbindungen.
    3. Füllen Sie das Formular aus, und wählen Sie aus Glide AJAX aktiviert Option.
      Eine Rollenauswahl wird angezeigt, um eine Anwenderrolle auszuwählen und automatisch einen Zugriffssteuerungseintrag zu erstellen. Wählen Sie eine Anwenderrolle aus, und klicken Sie auf OK .Wählen Sie ein Anwenderrollenfenster aus.
      Hinweis:
      Um das Rollenauswahlfenster zu deaktivieren, legen Sie fest Glide.Script.ccsi.enable_acl_create_ux Bis Falsch .

      Ein Skripteinbindungsdatensatz mit einer rollenbasierten Zugriffssteuerung wird erstellt. Der zugehörige Link für die Zugriffssteuerung wird mit der Auswahl von verfügbar Glide AJAX aktiviert Kontrollkästchen.

    Datenschutzeinstellungen für Glide AJAX-fähige Skripteinbindungen

    Datenschutzeinstellungen für Glide AJAX-fähige Skripteinbindungen bestimmen, wer auf eine Glide AJAX-fähige Skripteinbindung zugreifen kann.

    Private Datenschutzeinstellung

    Die Einstellung für den privaten Datenschutz bedeutet, dass Gäste, die auf öffentliche Seiten zugreifen, nicht auf die für Glide AJAX aktivierte Skripteinbindung zugreifen können. Ein privates Skript kann nur von einem angemeldeten Benutzer ausgeführt werden.

    Öffentliche Datenschutzeinstellung

    Eine öffentliche Datenschutzeinstellung bedeutet, dass das Client-Skript von nicht angemeldeten Benutzern ausgeführt werden kann, die eine entsprechende HTTP-Anforderung erstellen. Dies kann zu einem Sicherheitsproblem führen, wenn das Client-Skript vertrauliche Informationen bereitstellt.

    Die folgenden Skripteinbindungen bleiben standardmäßig öffentlich, da UI-Seiten öffentlich oder privat machen Muss darauf zugreifen:
    • GlideSystemAjax
    • SysMessageAjax
    • KnowledgeMessagingAjax
    • KnowledgeAjax
    • PasswordResetAjax

    Legen Sie Datenschutz für alle Glide AJAX-fähigen Skripteinbindungen fest

    Ändern Sie die Datenschutzeinstellung für alle Glide AJAX-fähigen Skripteinbindungen.

    Um weitere Kontrolle über alle Glide AJAX-fähigen Skripteinbindungen zu bieten, können Administratoren hinzufügen Glide.Skript.ccsi.isöffentlich Eigenschaft. Diese Eigenschaft ändert die Sichtbarkeit von Glide AJAX-fähigen Skripteinbindungen, indem sie alle öffentlich oder privat macht. Konfigurieren Sie die Eigenschaft wie folgt:

    Tabelle : 2. Eigenschaft konfigurieren
    Titel Eigenschaft
    Name glide.script.ccsi.ispublic
    Typ Wahr|Falsch
    Wert falsch
    Hinweis:
    Weitere Informationen zu dieser Eigenschaft finden Sie unter Require authentication by default for client-callable script includes [Updated in Security Center 1.3] In Instanzsicherheitshärtungseinstellungen.

    Ändern Sie den Datenschutz für eine einzelne Glide AJAX-fähige Skripteinbindung

    Ändern Sie die Datenschutzeinstellung für eine einzelne Glide AJAX-fähige Skripteinbindung, indem Sie hinzufügen IsPublic() Funktion.

    Die IsPublic() Die Einstellung hat Vorrang vor dem glide.script.ccsi.ispublicEigenschaft. Beispiel: Wenn die Eigenschaft auf festgelegt ist Falsch , Damit alle Glide AJAX-aktivierten Skripteinbindungen privat werden, und ein Skriptsatz IsPublic() Bis Wahr , Das Skript ist öffentlich.

    Um den Datenschutz für eine einzelne Glide AJAX-fähige Skripteinbindung zu ändern, fügen Sie der Skripteinbindung die folgende Methode hinzu:

    isPublic:function(){return[true/false];},
    Legen Sie das NewInclude-Clientskript als privat fest.
    var NewInclude =Class.create();
     
    NewInclude.prototype={
       initialize:function(){},
     
       myFunction:function(){//Put function code here},
       isPublic:function(){return false;},
     
       type:'NewInclude'};

    Sicherheit in Glide AJAX-fähigen Skripteinbindungen

    P Wechseln Sie Ihre Glide AJAX-fähigen Skripteinbindungen gegen nicht autorisierte Verwendung. Für alle Datensätze, die eine Kundenanwendung erstellt haben, werden Empfehlungen angezeigt, die zur Reduzierung des Sicherheitsrisikos beitragen können .

    Beim Erstellen einer Glide AJAX-fähigen Skripteinbindung zeigt das System die folgenden Sicherheitsempfehlungen an, wenn sie noch nicht konfiguriert wurden:

    • Fügen Sie eine Zugriffssteuerung hinzu, oder definieren Sie sie, es sei denn, die Skripteinbindung hat öffentlichen Zugriff.
    • Verwenden GlideRecordSecure Anstelle von GlideRecord API für bessere Sicherheit, wenn das Skript die Datenbank abfragt.

      Glide AJAX-fähige Sicherheitsempfehlungen.

      Hinweis:
      Legen Sie die Eigenschaft fest, um die Sicherheitsempfehlungsnachrichten zu deaktivieren glide.script.ccsi.customer_scoped.security_msgs_enabled Bis Falsch In der Tabelle „sys_properties“. Der Standardwert ist auf festgelegt Wahr .

    Siehe Härtungseinstellungen Für Instanzsicherheit Für zusätzliche Informationen zur Sicherheits-Compliance.

    Discovery-Skripteinbindungen

    Discovery Skripteinbindungen enthalten definierte JavaScript-Klassen, die für Discovery-Aufgaben verwendet werden können.

    Hinweis:
    Benutzer mit der Rolle „Discovery_admin“ können Skripteinbindungen schreiben. Befolgen Sie Best Practices für serverseitiges und clientseitiges Skripting, um Sicherheitsprobleme zu vermeiden. Siehe wissensartikel KB0550828 Weitere Informationen finden Sie unter .

    GlideRecordUtil für die Arbeit mit GlideRecords verwenden

    GlideRecordUtil ist eine Dienstprogrammklasse, die nützliche Methoden für die Arbeit mit GlideRecords während Discovery bietet. Siehe GlideRecordUtil Für Beschreibungen der verfügbaren Methoden.

    Eine GlideRecord-Instanz erhalten

    Um eine GlideRecord-Instanz für ein bestimmtes Configuration Item und für die richtige Klasse und Tabelle zu erhalten, verwenden Sie die Methode getCIGR(sys_id). Mit dem folgenden Code wird beispielsweise der GlideRecord eines CI mit der sys_id „2dfd7c8437201000deeabfc8bcbe5d56“ abgerufen:
    var now_GR = new GlideRecordUtil().getCIGR("2dfd7c8437201000deeabfc8bcbe5d56");
    Um eine hierarchische Tabelle abzurufen, ohne den Klassentyp zu kennen, verwenden Sie die Methode getGR(base_table, sys_id). Um beispielsweise einen GlideRecord für ein Computerklasse-CI abzurufen, müssen Sie möglicherweise unterscheiden, ob es sich um eine Computerklasse handelt. Windows Server, oder Linux Serverklasse. Die Verwendung dieser Methode garantiert einen GlideRecord mit der richtigen Klasse. Verschiedene Klassen haben unterschiedliche Attribute. In diesem Anwendungsfall A Windows Server weist andere Attribute auf als Linux Server. Das folgende Beispiel zeigt, wie ein GlideRecord in der richtigen Klasse mit seinen Attributen abgerufen wird.
    var now_GR = new GlideRecordUtil().getGR( "cmdb_ci_computer", "2dfd7c8437201000deeabfc8bcbe5d56");

    Alle Felder in einem GlideRecord abrufen

    Die GetFields (now_GR) Methode gibt ein JavaScript-Objekt, z. B. eine Hashmap, aller Felder oder Attribute zurück, die in einem bestimmten GlideRecord vorhanden sind.
    var now_GR = new GlideRecordUtil().getGR("cmdb_ci_computer", "2dfd7c8437201000deeabfc8bcbe5d56");
    var fields = new GlideRecordUtil().getFields(now_GR);
    gs.log(fields.join(" ")); // List all the fields that are in a computer CI

    GlideRecord-Objektfelder ausfüllen

    Die PopulateFromGR(Hashmap, gr, ignorieren) Mit der Methode können Sie ein GlideRecord-Objekt verwenden und seine Felder und Werte in ein JavaScript-Objekt ausfüllen. Das dritte Argument ( Ignorieren ) Ist ein optionales JavaScript-Objekt, mit dem Sie bestimmte Felder ausschließen können. Zum Beispiel ist Ihnen möglicherweise egal sys_created_byOder sys_updated_byFelder in einem GlideRecord.
    var objectToPopulate = { }; 
    var now_GR = new GlideRecordUtil().getGR("cmdb_ci_computer", "2dfd7c8437201000deeabfc8bcbe5d56"); 
    var ignore = {"sys_created_on": true, "sys_updated_by": true}; 
    new GlideRecordUtil().populateFromGR(objectToPopulate, now_GR, ignore); 
    // Now the objectToPopulate contains field/value pairs from the computer GlideRecord
    Die MergeToGR(Hashmap, gr, ignorieren) Mit der Methode können Sie einen GlideRecord mit einem Feld/Wert-gekoppelten Objekt ausfüllen. Das Argument „ignore“ stoppt die Aktualisierung der angegebenen Felder. Das folgende Codebeispiel aktualisiert einen Computerdatensatz nameUnd osFelder, aktualisiert aber nicht sys_created_byFeld:
    var now_GR = new GlideRecordUtil().getGR("cmdb_ci_computer", "2dfd7c8437201000deeabfc8bcbe5d56"); 
    var obj = {"name": "xyz", "os": "windows 2000", "sys_created_by", "aleck.lin"};
    var ignore = {"sys_created_by": true}; 
    new GlideRecordUtil().mergeToGR(obj, gr, ignore);
    gr.update();

    Tabellenhierarchien abrufen

    Die Methode getTables(table) gibt eine Liste von Tabellenhierarchien aus, wie im folgenden Beispiel gezeigt:
    var tables = new GlideRecordUtil().getTables("cmdb_ci_linux_server");
    gs.log(tables.join(",")); 
    // The result would be "cmdb_ci, cmdb_ci_computer, cmdb_ci_server, cmdb_ci_linux_server".

    DiscoveryException und AutomationException verwenden

    Beim Schreiben von Discovery-Sensoren und sensorbezogenen Skripts möchten Sie möglicherweise DiscoveryException oder AutomationException verwenden, um anzuzeigen, dass eine Ausnahme von Discovery aufgetreten ist.

    Die Skripteinbindung DiscoveryException erweitert AutomationException, die wiederum die Klasse GenericException erweitert. Das folgende Beispiel verwendet DiscoveryException, um eine Ausnahme auszulösen:
    function foo() { 
      if(//condition matches) throw new DiscoveryException("The message", "The cause"); }
    Das erste Argument nimmt die Nachricht der Ausnahme und das zweite Argumente (optional) die Ursache der Ausnahme. Die Ausnahme kann gegebenenfalls abgefangen und wie im folgenden Beispiel protokolliert werden:
    try {
      foo(); 
    } 
    catch(e) { 
       if(e instanceof DiscoveryException)
         gs.log("A DiscoveryException occurred. It is " + e. getMessage() + " caused by " + e.getCause()); }

    Das obige Beispiel gilt auch für AutomationException. DiscoveryException wird normalerweise verwendet, um die Ausnahmebehandlung speziell für Discovery bereitzustellen, während AutomationException für die Ausnahmebearbeitung, die sowohl für Orchestration als auch für Discovery gilt, verwendet wird.