Richtlinienaktionsskript erstellen

  • Freigeben Version: Zurich
  • Aktualisiert 31. Juli 2025
  • 2 Minuten Lesedauer
  • Verwenden Sie Richtlinienaktionsskripts, um Werte in Cloud-Anforderungen abzurufen, zu aktualisieren oder festzulegen.

    Vorbereitungen

    Erforderliche Rolle: sn_cmp.cloud_governor oder admin

    Warum und wann dieser Vorgang ausgeführt wird

    Weitere Informationen zum Verwenden von Skripts finden Sie unter Cloud-Skripts und Cloud-Skriptvorlagen.

    Prozedur

    1. Navigieren Sie im Cloud-Administratorportal zu Bedingungen > Richtlinienan.
    2. Klicken Sie auf der Registerkarte Richtlinien-Aktionsskripts auf Neu, geben Sie einen eindeutigen und beschreibenden Namen und eine Beschreibung ein, füllen Sie das Formular aus, und klicken Sie dann auf Absenden.
      Nachdem Sie einen Namen eingegeben haben, wird ein Skript mit einer Variablen angezeigt, die den von Ihnen eingegebenen Namen verwendet.
      Feld Beschreibung
      Aktionsskriptkategorie Wählen Sie eine andere Kategorie aus, oder behalten Sie die in einem früheren Schritt erstellte Kategorie bei.
      Skript Ändern Sie die Funktion customScripts im Skript. Dies ist der einzige Teil des Skripts, den Sie ändern müssen.

    Beispiel

    Das folgende Beispielskript ermittelt, ob der Benutzer zu einer Benutzergruppe gehört, und überschreibt dann den benutzerdefinierten Wert des Knotennamens des Anwendungsservers mit dem Wert MyNodeName.
    
    customScript : function(formData){
      var groups = this.parameters.userData.groups; 
        if( groups.length > 0){ 
          formData.App_Server_NodeName = "MyNodeName"; 
        }
      return formData;
    },
    

    Dieses Beispiel gibt eine zufällige Zahl zurück:

    
    customScript : function(formData){
      var min = 10000;
      var max = 99999;
      var num = Math.floor(Math.random() * (max - min + 1)) + min;
      formData.randomNumber = num + "";  
      return formData;
    },
    

    Dieses Beispielskript fügt dem Leasingdatum mithilfe der GlideDateTime-Klasse im Basissystem drei Stunden hinzu.

    
    var SetLeaseShort = Class.create();
    SetLeaseShort.prototype = Object.extendsObject(sn_cmp.PolicyExecutionBase, {
    	customScript : function(formData){
    		// Manipulation of form parameters are supported. Changes in any other attributes
                  // will be ignored.
    		// The data available for manipulation is as follows:
    		// Form Data -  for example: StackName can be accessed through formData.StackName
    		// formData.StackName = "MyStack";
    		// User Data  - for example: User Id can be accessed through this.parameters.userData
    		// if(this.parameter.userData.userId == 'servicenowuserId')
    		// this.info("id = " + formData.StackName);
    		
    		// var leaseValue = now();
    		// leaseValue = leaseValue.setHours(leaseValue.getHours()+4);
    		// formData.LeaseEndDate = leaseValue;
    		
    		if (formData.hasOwnProperty("LeaseEndDate")) {
    			gdt = new GlideDateTime();
    			// 10800 = 3 hours
    			gdt.addSeconds(10800);
    			formData.LeaseEndDate = gdt.getDisplayValue();
    		}	
    		return formData;
    	},
    	execute: function() {
    		if(this.parameters !=  null && this.parameters.formData != null){
            	var inputData = JSON.parse(JSON.stringify(this.parameters.formData));
    		    var outputFormData = this.customScript(inputData);
                if( outputFormData != null){
                    this.parameters.formData = outputFormData;
                }
           	}
    		var output = {};
    		output.answer = this.parameters;
    		return JSON.stringify(output);
    	},
    	type : 'SetLeaseShort'
    });	
    
    var SetLeaseShortObj = new SetLeaseShort(inputAttributes);
    var outputParams = SetLeaseShortObj.execute();
    gs.info( "Output of script is = " + outputParams);
    

    Dieses Beispielskript legt das benutzerdefinierte Namensfeld Azure Wordpress DNS im Formular auf denselben Namen wie den Stapelnamen fest:

    var WordpressFill = Class.create();
    WordpressFill.prototype = Object.extendsObject(sn_cmp.PolicyExecutionBase, {
    	customScript : function(formData){
    		// Manipulation of form parameters are supported. Changes in any other attributes
            // will be ignored.
    		// The data available for manipulation is as follows:
    		// Form Data -  for example: StackName can be accessed through formData.StackName
    		// formData.StackName = "MyStack";
    		// User Data  - for example: User Id can be accessed through this.parameters.userData
    		// if(this.parameter.userData.userId == 'servicenowuserId')
    		//this.info("id = " + formData.StackName);
    		
    		formData.Azure_Wordpress_v6_vmDnsName = formData.StackName;
    		
    		return formData;
    	},
    	execute: function() {
    		if(this.parameters !=  null && this.parameters.formData != null){
            	var inputData = JSON.parse(JSON.stringify(this.parameters.formData));
    		    var outputFormData = this.customScript(inputData);
                if( outputFormData != null){
                    this.parameters.formData = outputFormData;
                }
           	}
    		var output = {};
    		output.answer = this.parameters;
    		return JSON.stringify(output);
    	},
    	type : 'WordpressFill'
    });	
    
    var WordpressFillObj = new WordpressFill(inputAttributes);
    var outputParams = WordpressFillObj.execute();
    gs.info( "Output of script is = " + outputParams);