Créer un script d’action de politique

  • Rversion finale: Australia
  • Mis à jour 12 mars 2026
  • 2 minutes de lecture
  • Utilisez des scripts d’action de politique pour obtenir, mettre à jour ou définir des valeurs dans les demandes dans le cloud.

    Avant de commencer

    Rôle requis : sn_cmp.cloud_governor ou administrateur.

    Pourquoi et quand exécuter cette tâche

    Pour plus d’informations sur l’utilisation des scripts, reportez-vous à la section Scripts et modèles de script dans le cloud.

    Procédure

    1. Sur le portail d’administration du cloud, accédez à Piloter > Politiques.
    2. Sous l’onglet Scripts de l’action de politique , cliquez sur Nouveau, saisissez un nom et une description uniques et descriptifs, remplissez le formulaire, puis cliquez sur Soumettre.
      Une fois que vous avez entré un nom, un script apparaît avec une variable qui utilise le nom que vous avez entré.
      Champ Description
      Catégorie du script d’action Choisissez une autre catégorie ou conservez celle que vous avez créée à une étape précédente.
      Script Modifiez la fonction customScripts dans le script. Il s’agit de la seule partie du script que vous devez modifier.

    Exemple

    L’exemple de script suivant détermine si l’utilisateur appartient à un groupe d’utilisateurs, puis remplace la valeur du nom du nœud du serveur d’applications spécifiée par l’utilisateur par la valeur MyNodeName.
    
    customScript : function(formData){
      var groups = this.parameters.userData.groups; 
        if( groups.length > 0){ 
          formData.App_Server_NodeName = "MyNodeName"; 
        }
      return formData;
    },
    

    Cet exemple renvoie un nombre aléatoire :

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

    Cet exemple de script ajoute trois heures à la date de bail à l’aide de la classe système-de-base GlideDateTime .

    
    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);
    

    Cet exemple de script définit le champ Nom DNS Azure Wordpress spécifié par l’utilisateur à partir du formulaire sur le même nom que le nom de la pile :

    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);