---
sourceDocument: Xanadu IT Operations Management
sourceDocumentLink: https://servicenow-prod.fluidtopics.net/r/pt-BR/xanadu/it-operations-management

 Release :

    - xanadu

ft:locale :

    - pt-BR

ft:publication_title :

    - Xanadu IT Operations Management

ft:clusterId :

    - itom

bundleId :

    - itom

workflow :

    - Technology


---

# Criar um script de ação de política

# Criar um script de ação de política {#ariaid-title1}

* Versão de lançamento: Xanadu
* 
* Atualizado 1 de ago. de 2024
* 
* ![](https://www.servicenow.com/docs/portal-asset/ico-clock) 2 min. de leitura

Use scripts de ação de política para obter, atualizar ou definir valores em solicitações de nuvem.{#create-policy-script__shortdesc-policy-action-scripts}

## Antes de Iniciar

Função necessária: sn_cmp.cloud_governor ou admin.

## Por Que e Quando Desempenhar Esta Tarefa

Para obter mais informações sobre como usar scripts, consulte [Scripts em nuvem e modelos de script em nuvem](https://servicenow-prod.fluidtopics.net/EFFEPwgIs2r0f32DOgSodw "Na aplicação Cloud Provisioning and Governance, a execução do script é dividida em scripts na nuvem e modelos de script na nuvem. Use scripts em blueprints, blocos de recursos, perfis de SO e use scripts de política para definir atributos de formulário de solicitação. Scripts de política não podem substituir dados do usuário.").

## Procedimento

1. No Portal de administração de nuvem, navegue até RegerPolíticas.
2. Na guia Scripts de ação de política, clique em Novo, insira um Nome e uma Descrição exclusivos e descritivos, preencha o formulário e clique em Enviar.  
   Depois de inserir um nome, um script aparece com uma variável que usa o nome que você inseriu.{#create-policy-script__table_sqt_4gp_qz__entry__2}

   | Campo | Descrição |
   |-|-|
   | Categoria de Script de Ação | Escolha outra categoria ou mantenha aquela que você criou em uma etapa anterior. |
   | Script | Modifique a função `customScripts` no script. Esta é a única parte do script que você precisa modificar. |
   [ ]

   {#create-policy-script__table_sqt_4gp_qz}

## Exemplo

O script de exemplo a seguir determina se o usuário pertence a um grupo de usuários e substitui o valor do nome do nó do servidor de aplicações especificado pelo usuário pelo valor MyNodeName.  


    customScript : function(formData){
      var groups = this.parameters.userData.groups; 
        if( groups.length > 0){ 
          formData.App_Server_NodeName = "MyNodeName"; 
        }
      return formData;
    },

Este exemplo retorna um número aleatório:  


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

Este script de exemplo adiciona três horas à data do leasing usando a classe sistema-base [GlideDateTime](https://developer.servicenow.com/app.do#!/training/article/app_store_learnv2_scripting_jakarta_server_side_scripting/app_store_learnv2_scripting_jakarta_glidedatetime?v=jakarta).  


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

Este script de exemplo define o campo de nome DNS do Azure Wordpress especificado pelo usuário no formulário com o mesmo nome que o nome da pilha:  

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

**Tarefas relacionadas**   

* [Exemplo de script de ação de política que marca recursos](https://servicenow-prod.fluidtopics.net/ZepPHDUZmg5bfRmZyoXRVQ "Sua instância rastreia recursos marcados para cobrança e emissão de relatórios. Os scripts de ação de política podem adicionar e modificar marcadores de recurso. Este exemplo marca um recurso de volume de armazenamento.")

