> ## Documentation Index
> Fetch the complete documentation index at: https://docs.iru.com/llms.txt
> Use this file to discover all available pages before exploring further.

# Descripción general de Custom Scripts

> Implementa scripts personalizados en computadoras Mac y Windows administradas con Iru Endpoint. Ejecuta scripts de shell, Python, PowerShell o por lotes durante la inscripción o según una programación.

<Callout icon="list-check" color="#B84A7A" iconType="regular">Los Custom Scripts están disponibles para computadoras Mac y computadoras Windows</Callout>

### ¿Qué es un Custom Script?

Los scripts personalizados de Iru Endpoint automatizan tareas y configuran ajustes en los dispositivos administrados. Piensa en ellos como un conjunto de instrucciones que se pueden implementar y ejecutar en los dispositivos inscritos mediante el Iru Agent. Con los scripts personalizados, puedes configurar ajustes del dispositivo, instalar o actualizar aplicaciones de software, ejecutar tareas de mantenimiento y aplicar políticas de seguridad. También puedes usar scripts personalizados para recopilar información del dispositivo, como el inventario de hardware o los registros del sistema. Hay una colección de scripts prediseñados y mantenidos regularmente disponible en nuestro [repositorio de GitHub](https://github.com/kandji-inc/support/tree/main/Scripts).

<Tabs>
  <Tab title="Mac">
    <Note>
      El Library Item Custom Script de Iru Endpoint puede implementar scripts en varios lenguajes. Sin embargo, nuestro equipo de soporte está mejor preparado para ayudar a solucionar problemas de scripts escritos en shell, bash, zshell o Python. El soporte también puede ayudar con AppleScript, siempre que se invoque desde uno de los lenguajes admitidos.
    </Note>

    ### Cómo funcionan los Custom Scripts

    El Iru Agent ejecuta scripts personalizados en las computadoras Mac inscritas. Tu script personalizado puede especificar cualquier shell o intérprete de la computadora Mac. Si no se especifica un shell o intérprete, se usa el shell predeterminado (/bin/sh). Los scripts personalizados siempre se ejecutan como usuario root.

    #### Frecuencia de ejecución

    Según el script que quieras implementar, puedes especificar si se ejecutará una vez en cada check-in, una vez al día o bajo demanda desde Self Service.

    <AccordionGroup>
      <Accordion title="Instalar una vez por dispositivo">
        Para **Instalar una vez por dispositivo**, Iru vuelve a ejecutar el script de auditoría en cada check-in hasta que el Library Item alcance **Pass** para ese dispositivo. Si hay un script de corrección habilitado y se ejecuta correctamente, el Library Item puede mostrar **Corregido**, pero Iru sigue ejecutando el script de auditoría en check-ins posteriores hasta que alcance **Pass**.
      </Accordion>

      <Accordion title="Run every 15 min">
        El script se ejecutará en cada check-in (\~ cada 15 minutos).
      </Accordion>

      <Accordion title="Run daily">
        El script se ejecutará cada 24 horas según la hora de la ejecución anterior.
      </Accordion>

      <Accordion title="Ejecutar a petición desde Self Service">
        El script nunca se ejecutará automáticamente y solo se ofrecerá como elemento opcional desde Self Service. Después de ejecutar el elemento, el botón **Run** pasará a llamarse **Run again**.
      </Accordion>
    </AccordionGroup>

    <Callout icon="lightbulb" color="#2563EB" iconType="regular">
      El Library Item Custom Script también se puede ofrecer a través de Self Service en los 3 primeros escenarios anteriores.
    </Callout>

    #### Códigos de salida y resultados

    <AccordionGroup>
      <Accordion title="Resultados de los códigos de salida">
        Si el script de auditoría sale con el código **0**, esa ejecución tiene el estado **Pass**. Si el script de auditoría sale con cualquier código de salida distinto de cero, esa ejecución tiene el estado **Error**. Cuando una ejecución tiene el estado **Error**, Iru genera una alerta. Consulta nuestro artículo de soporte [Alertas globales](/es/endpoint/devices/global-alerts) para obtener más detalles.
      </Accordion>

      <Accordion title="Registro de la salida del script">
        Stdout y Stderr se registran en la información de auditoría del script, que se puede encontrar en la página de estado del dispositivo o en la página de estado del script personalizado.
      </Accordion>
    </AccordionGroup>

    #### Corrección

    Un script de corrección permite que el **Script de auditoría** principal se use como un verdadero script de auditoría para comprobar la configuración del sistema o el estado de una aplicación. Si el script de auditoría sale con cualquier código de salida distinto de cero, esa ejecución tiene el estado **Error**; Iru ejecuta entonces el script de corrección.

    <Check>
      Si el script de corrección sale con el código **0**, el estado del Library Item para ese dispositivo es **Corregido**. Si el script de corrección sale con un código de salida distinto de cero, el estado del Library Item para ese dispositivo es **Error** e Iru genera una alerta. Consulta nuestro artículo de soporte [Alertas globales](/es/endpoint/devices/global-alerts) para obtener más detalles.
    </Check>

    #### Opciones de reinicio

    La opción de reinicio te permite forzar un reinicio después de una ejecución correcta del script. Al seleccionar esta opción, el usuario recibirá un temporizador de reinicio de la aplicación de la barra de menús del Iru Agent. Este temporizador será de 5 minutos si el elemento se inició desde Self Service, o de 30 minutos si se inició de otra forma, por ejemplo, durante un check-in.

    <Tip>
      La opción de reinicio se comportará de forma diferente según se use o no un script de corrección:

      * Si se usa un [script de **Remediation**](#remediation), cuando el script de **Remediation** sale con 0, se activará la cuenta regresiva de reinicio.
      * Si *no* se usa un script de **Remediation**, cuando el script de **Audit** sale con 0, se activará la cuenta regresiva de reinicio.
    </Tip>

    #### Ajustes de Liftoff

    En la parte inferior del Custom Script, expande **Configuración de Liftoff**. Allí encontrarás **Procesar este Library Item**. Este ajuste elige cuándo se instala el script en relación con [Iru Liftoff](/es/endpoint/library/library-items-profiles/configure-the-liftoff-library-item). Se aplica a Automated Device Enrollment y a la inscripción manual.

    * **During Liftoff** (predeterminado): El Custom Script se procesa durante Liftoff, y Liftoff no se completa hasta que termina. Aparece en la pantalla Install, a menos que se seleccione **Ocultar en Liftoff**.
      * **Ocultar en Liftoff**: Si se selecciona, este Library Item aún se procesa durante Liftoff, pero no se muestra en la pantalla Install. Mientras se procesa, Liftoff muestra **Procesando configuraciones adicionales obligatorias antes de continuar…** en la parte inferior de la pantalla. Este ajuste no afecta el orden.
      * **Friendly name** (opcional): Si se especifica, Liftoff muestra este nombre en lugar del **Nombre** del Library Item. El Iru Agent sigue ordenando los Library Items por **Nombre** durante el check-in.
    * **Después de Liftoff**: El Custom Script no se procesa durante Liftoff y no aparece en la pantalla Install. Se instala en un check-in posterior del agente.

    <Note>
      Si este Custom Script también está incluido en **Instalar Library Items durante el Asistente de configuración** en el [Library Item Automated Device Enrollment](/es/endpoint/enrollment/apple/configuring-apple-enrollment#install-library-items-during-setup-assistant), se seguirá instalando durante el Asistente de configuración. **Procesar este Library Item** no cambia esa instalación.
    </Note>

    ### Agregar un Library Item Custom Script

    Para agregar este Library Item a tu Library de Iru Endpoint, sigue los pasos descritos en el artículo [Descripción general de la Library](/es/endpoint/library/library-items-profiles/library-overview).

    <Steps>
      <Step title="Asigna un nombre al Library Item">
        Asigna un **Nombre** al nuevo Library Item Custom Script.
      </Step>

      <Step title="Asigna a Blueprints">
        Asígnalo a los [Blueprints](/es/endpoint/getting-started/blueprints-and-library/configuring-blueprints) deseados.
      </Step>

      <Step title="Selecciona la frecuencia de ejecución">
        Selecciona una **Frecuencia de ejecución**.
      </Step>

      <Step title="Configura Self Service (opcional)">
        Opcionalmente, haz que el script esté disponible en **Self Service**.
      </Step>

      <Step title="Agrega el script de auditoría">
        Pega tu script en el campo **Script de auditoría**.
      </Step>

      <Step title="Agrega el script de corrección (opcional)">
        Opcionalmente, configura y pega un **Remediation Script**.
      </Step>

      <Step title="Configura la opción de reinicio (opcional)">
        Si lo deseas, marca la casilla **Reiniciar después de una ejecución correcta**.
      </Step>

      <Step title="Configura los ajustes de Liftoff (opcional)">
        Expande **Configuración de Liftoff**. **Procesar este Library Item** tiene como valor predeterminado **During Liftoff**. Para instalar el script después de que finalice Liftoff, selecciona **Después de Liftoff**. Consulta [Ajustes de Liftoff](#liftoff-settings).
      </Step>

      <Step title="Guarda la configuración">
        Selecciona **Guardar**.
      </Step>
    </Steps>

    ### Artículos relacionados

    <CardGroup cols={2}>
      <Card title="Descripción general de la Library" icon="books" href="/es/endpoint/library/library-items-profiles/library-overview">
        Selecciona, crea y administra Library Items y agrégalos a Blueprints
      </Card>

      <Card title="Configurar Blueprints" icon="cog" href="/es/endpoint/getting-started/blueprints-and-library/configuring-blueprints">
        Crea y configura Blueprints de dispositivos para la administración de políticas
      </Card>

      <Card title="Implementar Homebrew con un Custom Script" icon="apple" href="/es/endpoint/library/deployment-guides/apple/deploy-homebrew-using-a-custom-script">
        Implementa Homebrew en computadoras Mac con un script personalizado
      </Card>

      <Card title="Variables globales" icon="code" href="/es/endpoint/library/library-items-profiles/global-variables">
        Aprende a usar variables globales en Iru Endpoint para insertar dinámicamente información del dispositivo y del usuario en perfiles, scripts y ajustes de configuración.
      </Card>

      <Card title="Alertas globales" icon="bell" href="/es/endpoint/devices/global-alerts">
        Configura cómo Iru Endpoint muestra alertas cuando los Custom Scripts u otros Library Items informan problemas
      </Card>
    </CardGroup>
  </Tab>

  <Tab title="Windows">
    ### Windows Custom Script

    El Library Item **Windows custom script** te permite ejecutar scripts de PowerShell en computadoras Windows administradas. Puedes usar este elemento para auditar el estado del dispositivo, aplicar la configuración mediante corrección o realizar tareas administrativas no cubiertas por los perfiles de Windows integrados.

    Los scripts personalizados de Windows admiten un modelo de auditoría y corrección, lo que permite detectar estados no conformes y corregirlos automáticamente.

    ### Crear un Library Item Windows Custom Script

    <Steps>
      <Step title="Navega a la Library">
        Navega a **Library**.
      </Step>

      <Step title="Agrega un Library Item">
        Selecciona **Añadir Library Item**.
      </Step>

      <Step title="Selecciona Windows Custom Script">
        Busca y selecciona **Windows Custom Script**.
      </Step>

      <Step title="Introduce el nombre">
        Introduce un **Nombre** descriptivo.
      </Step>

      <Step title="Confirma el estado">
        Confirma que el estado esté establecido en **Activo**.
      </Step>

      <Step title="Asigna a Blueprints">
        Asigna el Library Item a uno o más **Blueprints**.
      </Step>
    </Steps>

    ### Detalles del script

    La sección **Script details** define los ajustes de los scripts de auditoría y corrección.

    #### Script de auditoría

    El **Audit script** determina si el dispositivo está en el estado deseado.

    Puedes proporcionar el script de auditoría mediante una de las siguientes opciones:

    * **Cargar un script firmado**
      * Carga un archivo `.ps1` de PowerShell firmado.
    * **Introducir el script manualmente**
      * Pega o edita código de PowerShell directamente en el editor.

    <Note>
      El script de auditoría debe salir con un código de salida distinto de cero cuando el dispositivo no es conforme. Un código de salida cero indica conformidad.
    </Note>

    #### Parámetros de línea de comando (opcional)

    El campo **Command line parameters** te permite pasar argumentos a los scripts de auditoría y corrección en tiempo de ejecución.

    * Usa la sintaxis estándar de parámetros de PowerShell.
    * Los parámetros se agregan cuando se ejecuta el script.

    Ejemplo: `-Mode Full -ConfigPath "C:\Config.json"`

    <Tip>
      Esto es útil para que los scripts sean reutilizables sin codificar valores de forma rígida.
    </Tip>

    #### Script de corrección (opcional)

    Selecciona **Add remediation script** para configurar una acción de corrección.

    * El script de corrección solo se ejecuta cuando el script de auditoría informa de no conformidad.
    * Puedes cargar un script firmado o introducir manualmente la lógica de corrección.
    * Usa scripts de corrección para corregir desviaciones de configuración o aplicar ajustes.

    <Note>
      El script de corrección debe salir correctamente después de resolver el problema.
    </Note>

    #### Execute In

    Usa **Execute in** para seleccionar el entorno de PowerShell que se usa para ejecutar los scripts:

    * **64 bits**
    * **32 bits**

    **64 bit** ejecuta el script en el entorno estándar de PowerShell de 64 bits y se recomienda para la mayoría de las computadoras Windows.

    <Note>
      Usa 32 bit solo si el script o sus dependencias requieren compatibilidad con WOW64.
    </Note>

    ### Asignación y ejecución

    Después de guardar el Library Item:

    1. Selecciona **Guardar**.
    2. Asígnalo a uno o más **Blueprints** mediante **+ Assign**.

    Los scripts se ejecutarán una vez por dispositivo.

    ### Prácticas recomendadas

    * Firma los scripts de PowerShell antes de cargarlos siempre que sea posible.
    * Separa la lógica de detección (auditoría) de la lógica de aplicación (corrección).
    * Prueba los scripts en dispositivos que no sean de producción antes de una implementación amplia.

    ### Artículos relacionados

    <CardGroup cols={2}>
      <Card title="Documentación de Microsoft PowerShell" icon="book" href="https://learn.microsoft.com/powershell/">
        Documentación oficial de PowerShell de Microsoft
      </Card>

      <Card title="Todo sobre las excepciones (PowerShell)" icon="book" href="https://learn.microsoft.com/en-us/powershell/scripting/learn/deep-dives/everything-about-exceptions">
        Control de excepciones en PowerShell
      </Card>

      <Card title="Alertas globales" icon="bell" href="/es/endpoint/devices/global-alerts">
        Configura cómo Iru Endpoint muestra alertas cuando los Windows Custom Scripts u otros Library Items informan problemas
      </Card>
    </CardGroup>
  </Tab>
</Tabs>
