> For the complete documentation index, see [llms.txt](https://docs.realmjoin.com/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://docs.realmjoin.com/es/automatizacion/runbooks/runbook-references/org/devices/cleanup-autopilot-devices_scheduled.md).

# Programado para limpiar dispositivos de Autopilot

Limpiar los registros huérfanos y obsoletos de dispositivos de Windows Autopilot

{% hint style="info" %}
Este es un runbook programado. Está diseñado para ejecutarse según una programación recurrente en lugar de desencadenarse para un único objeto. Vea [Programación](/es/automatizacion/runbooks/scheduling.md) para obtener detalles sobre cómo configurar las programaciones del runbook.
{% endhint %}

### Descripción

Este runbook programado realiza el mantenimiento periódico de los registros de dispositivos de Windows Autopilot identificando y eliminando dispositivos huérfanos cuyos números de serie ya no coinciden con ningún dispositivo administrado por Intune, y opcionalmente eliminando los dispositivos Autopilot que nunca se inscribieron y que superan un umbral de antigüedad configurable. De forma predeterminada, el runbook funciona en modo WhatIf para generar informes seguros, y opcionalmente puede enviar un resumen por correo electrónico con archivos adjuntos CSV y/o Excel (xlsx) que enumeran los dispositivos que se eliminarían o se habrían eliminado. Los archivos del informe también se pueden cargar en una Storage Account de Azure, devolviendo vínculos de descarga con tiempo limitado. El parámetro ReportFileFormat controla qué formatos de archivo se generan y se entregan (solo CSV, CSV y XLSX, o solo XLSX). Cuando el archivo adjunto CSV supera el límite de tamaño del correo y "CSV & XLSX" se selecciona, el correo vuelve a usar solo el libro de Excel.

### Configuración relativa al envío de correos electrónicos

Enviar un informe por correo electrónico es opcional y solo ocurre cuando se proporciona un destinatario (`EmailTo`) . La dirección del remitente se toma de la `RJReport.EmailSender` configuración del tenant.

Este runbook envía correos electrónicos usando la API de Microsoft Graph. Para enviar correos mediante Graph API, necesitas configurar una dirección de correo electrónico existente en la personalización del runbook.

Consulta la [documentación de configuración de informes de RealmJoin](https://docs.realmjoin.com/automation/runbooks/runbook-report-settings) para obtener detalles sobre todas las configuraciones disponibles.

#### Marca del correo electrónico

El correo electrónico del informe respeta las configuraciones opcionales `RJReport.Branding.*` del tenant:

* **Imagen de encabezado y pie de página** – URL HTTPS públicas, PNG/JPEG/GIF, máx. 200 KB cada una
* **Enlace del pie de página** – destino de la imagen del pie de página
* **Color de acento y de texto** – valores hexadecimales de 6 dígitos, por ejemplo `#0052cc`

Cuando estas configuraciones no están definidas, se usan los gráficos y colores predeterminados de RealmJoin. Una imagen que no se pueda descargar o validar, o un valor de color no válido, nunca impide el correo electrónico del informe; en su lugar, se usa el valor predeterminado correspondiente.

Instrucciones de configuración y requisitos de imagen: [Marca del correo electrónico](https://docs.realmjoin.com/automation/runbooks/runbook-report-settings#email-branding-optional).

### Ubicación

Organización → Dispositivos → Limpieza de dispositivos Autopilot (programada)

**Nombre completo del runbook**

rjgit-org\_devices\_cleanup-autopilot-devices\_scheduled

### Detalles

| Propiedad          | Valor                                                                                                  |
| ------------------ | ------------------------------------------------------------------------------------------------------ |
| Versión            | 1.3.0                                                                                                  |
| Módulos requeridos | RealmJoin.RunbookHelper (>= 0.8.9)\nMicrosoft.Graph.Authentication (>= 2.39.0)\nAz.Accounts (>= 5.5.2) |
| Programable        | sí                                                                                                     |

### Notas

Requisitos previos:

* La identidad administrada de Azure Automation debe tener estos permisos de aplicación de Microsoft Graph: DeviceManagementManagedDevices.Read.All, DeviceManagementServiceConfig.ReadWrite.All, Organization.Read.All, Device.ReadWrite.All (Device.ReadWrite.All solo cuando se usa el modo "Delete Autopilot and Entra device"), y Mail.Send (Mail.Send solo cuando el informe por correo electrónico está habilitado).
* Conceda los permisos antes de la primera ejecución programada.

Advertencia: la eliminación es irreversible:

* La eliminación de una identidad de dispositivo Autopilot la borra permanentemente de Windows Autopilot.
* El dispositivo físico no puede volver a entrar en Autopilot hasta que se vuelva a cargar su hash de hardware.
* No existe papelera de reciclaje ni eliminación temporal para los registros de Autopilot.
* La eliminación del objeto de dispositivo Entra (Azure AD) también es permanente; hágalo solo para registros que realmente estén inactivos (el dispositivo nunca volverá a inscribirse).

Procedimiento recomendado para la primera ejecución:

* Ejecute con el modo de eliminación = "WhatIf (solo informe)" (el predeterminado) y revise la salida o el CSV enviado por correo.
* Confirme que los dispositivos identificados estén realmente huérfanos o nunca inscritos.
* Cambie a un modo de eliminación solo después de revisar la lista de candidatos.

Interacciones de parámetros:

* DeleteMode tiene como valor predeterminado "WhatIf (solo informe)"; en ese modo no se realiza ninguna eliminación.
* "Delete Autopilot device" elimina solo la identidad de Autopilot. "Delete Autopilot and Entra device" además elimina el objeto de dispositivo Entra (Azure AD) coincidente, que de otro modo quedaría como un registro obsoleto/inactivo una vez que desaparezca la identidad de Autopilot.
* CleanupOrphanedDevices y CleanupNeverEnrolledDevices son independientes; se puede habilitar cualquiera de los dos o ambos. NeverEnrolledAgeDays se aplica solo a la comprobación de nunca inscritos.
* GroupTagFilter, ManufacturerFilter y ModelFilter son opcionales; deje un filtro vacío para evaluar todos los valores de esa dimensión. Cuando se establece más de un filtro, se combinan con AND: un dispositivo debe coincidir con todos los filtros rellenados para permanecer dentro del ámbito. GroupTagFilter coincide exactamente con la etiqueta de grupo (sin distinguir mayúsculas y minúsculas); ManufacturerFilter y ModelFilter coinciden como subcadenas que no distinguen mayúsculas y minúsculas, por lo que "Dell" coincide con "Dell Inc." y "Surface" coincide con "Surface Laptop 3".
* ExcludeSerialNumbers se aplica después de los filtros AND como exclusión: cualquier dispositivo cuyo número de serie esté en la lista (coincidencia exacta, sin distinguir mayúsculas y minúsculas) se elimina del ámbito, independientemente de los demás filtros. Déjelo vacío para no excluir nada.

### Permisos

#### Permisos de aplicación

* **Tipo**: Microsoft Graph
  * Device.ReadWrite.All
    * *Busca dispositivos Entra por deviceId y los elimina en el modo 'Delete Autopilot and Entra device'*
  * DeviceManagementManagedDevices.Read.All
    * *Lee los dispositivos Windows administrados por Intune para encontrar números de serie de Autopilot que ya no están presentes en Intune*
  * DeviceManagementServiceConfig.ReadWrite.All
    * *Enumera windowsAutopilotDeviceIdentities y elimina identidades de Autopilot obsoletas*
  * Mail.Send *(opcional — característica: informe por correo electrónico)*
    * *Envía el correo electrónico del informe de limpieza mediante Send-RjReportEmail cuando EmailTo está configurado*
  * Organization.Read.All
    * *Lee /organization para mostrar el nombre para mostrar del Tenant en la salida del informe y en el correo electrónico*

### Parámetros

#### DeleteMode

Controla lo que hace el runbook con los candidatos de limpieza identificados. "WhatIf (solo informe)" no realiza ninguna eliminación y solo informa de los candidatos (predeterminado, seguro). "Delete Autopilot device" elimina las identidades de dispositivo Autopilot. "Delete Autopilot and Entra device" elimina las identidades de Autopilot y los objetos de dispositivo Entra (Azure AD) coincidentes, que de otro modo permanecerían como registros obsoletos.

| Propiedad                    | Valor                 |
| ---------------------------- | --------------------- |
| Obligatorio                  | false                 |
| Valor predeterminado         | WhatIf (solo informe) |
| Tipo                         | String                |
| Nombre mostrado en el portal | Modo de eliminación   |

#### GroupTagFilter

Etiquetas de grupo de Autopilot separadas por comas para limitar el ámbito de limpieza. Coincidencia exacta (sin distinguir mayúsculas y minúsculas). Déjelo vacío para procesar todos los dispositivos Autopilot sin importar la etiqueta de grupo.

| Propiedad                    | Valor                                                                                                    |
| ---------------------------- | -------------------------------------------------------------------------------------------------------- |
| Obligatorio                  | false                                                                                                    |
| Valor predeterminado         |                                                                                                          |
| Tipo                         | String                                                                                                   |
| Nombre mostrado en el portal | Filtro de etiqueta de grupo de Autopilot (coincidencia exacta separada por comas, deje vacío para todas) |

#### Filtro de fabricante

Fabricantes de dispositivos separados por comas para limitar el ámbito de limpieza. Coincidencia como subcadenas que no distinguen mayúsculas y minúsculas, por lo que "Dell" coincide con "Dell Inc.". Se combina con los demás filtros usando AND. Déjelo vacío para procesar todos los fabricantes.

| Propiedad                    | Valor                                                                                       |
| ---------------------------- | ------------------------------------------------------------------------------------------- |
| Obligatorio                  | false                                                                                       |
| Valor predeterminado         |                                                                                             |
| Tipo                         | String                                                                                      |
| Nombre mostrado en el portal | Filtro de fabricante (separado por comas, coincidencia de subcadena, deje vacío para todos) |

#### Filtro de modelo

Modelos de dispositivos separados por comas para limitar el ámbito de limpieza. Coincidencia como subcadenas que no distinguen mayúsculas y minúsculas, por lo que "Surface" coincide con "Surface Laptop 3". Se combina con los demás filtros usando AND. Déjelo vacío para procesar todos los modelos.

| Propiedad                    | Valor                                                                                   |
| ---------------------------- | --------------------------------------------------------------------------------------- |
| Obligatorio                  | false                                                                                   |
| Valor predeterminado         |                                                                                         |
| Tipo                         | String                                                                                  |
| Nombre mostrado en el portal | Filtro de modelo (separado por comas, coincidencia de subcadena, deje vacío para todos) |

#### ExcludeSerialNumbers

Números de serie separados por comas para excluir de la limpieza. Coincidencia exacta (sin distinguir mayúsculas y minúsculas). Cualquier dispositivo cuyo número de serie esté en esta lista se elimina del ámbito independientemente de los demás filtros. Déjelo vacío para no excluir nada.

| Propiedad                    | Valor                                                                                      |
| ---------------------------- | ------------------------------------------------------------------------------------------ |
| Obligatorio                  | false                                                                                      |
| Valor predeterminado         |                                                                                            |
| Tipo                         | String                                                                                     |
| Nombre mostrado en el portal | Excluir números de serie (coincidencia exacta separada por comas, deje vacío para ninguno) |

#### CleanupOrphanedDevices

Cuando está habilitado, elimina los dispositivos Autopilot que se han comunicado con Intune en el pasado pero cuyo número de serie ya no se encuentra entre los dispositivos administrados por Intune (se eliminó el registro del dispositivo administrado).

| Propiedad                    | Valor                                    |
| ---------------------------- | ---------------------------------------- |
| Obligatorio                  | false                                    |
| Valor predeterminado         | True                                     |
| Tipo                         | Booleano                                 |
| Nombre mostrado en el portal | Limpiar dispositivos Autopilot huérfanos |

#### OrphanedLastContactedDays

Umbral de antigüedad en días para dispositivos huérfanos. Un dispositivo Autopilot solo se trata como huérfano cuando su último contacto con Intune fue hace más de este número de días y su número de serie ya no está presente en Intune. Esto evita eliminar dispositivos que se comunicaron con Intune recientemente.

| Propiedad                    | Valor                                                     |
| ---------------------------- | --------------------------------------------------------- |
| Obligatorio                  | false                                                     |
| Valor predeterminado         | 90                                                        |
| Tipo                         | Int32                                                     |
| Nombre mostrado en el portal | Umbral de último contacto del dispositivo huérfano (días) |

#### CleanupNeverEnrolledDevices

Cuando está habilitado, elimina los dispositivos Autopilot nunca inscritos (dispositivos que nunca se comunicaron con Intune).

| Propiedad                    | Valor                                          |
| ---------------------------- | ---------------------------------------------- |
| Obligatorio                  | false                                          |
| Valor predeterminado         | Falso                                          |
| Tipo                         | Booleano                                       |
| Nombre mostrado en el portal | Limpiar dispositivos Autopilot nunca inscritos |

**Opciones del portal**

| Opción del portal                                   | Valor |
| --------------------------------------------------- | ----- |
| Sí - eliminar dispositivos antiguos nunca inscritos |       |
| No                                                  |       |

#### NeverEnrolledAgeDays

Umbral de antigüedad en días para dispositivos nunca inscritos. Se mide según la fecha de creación del dispositivo.

| Propiedad                    | Valor                                                       |
| ---------------------------- | ----------------------------------------------------------- |
| Obligatorio                  | false                                                       |
| Valor predeterminado         | 90                                                          |
| Tipo                         | Int32                                                       |
| Nombre mostrado en el portal | Umbral de antigüedad del dispositivo nunca inscrito (días)  |
| Oculto en el portal          | sí (preconfigurado mediante la personalización del runbook) |

#### EmailTo

Dirección de correo electrónico opcional del destinatario para el informe resumido de limpieza. Déjelo vacío para escribir solo los resultados en el registro del runbook.

| Propiedad                    | Valor                                                                      |
| ---------------------------- | -------------------------------------------------------------------------- |
| Obligatorio                  | false                                                                      |
| Valor predeterminado         |                                                                            |
| Tipo                         | String                                                                     |
| Nombre mostrado en el portal | Destinatario del correo electrónico para el resumen de limpieza (opcional) |

#### EmailFrom

La dirección de correo electrónico del remitente para el informe de resumen. Esto se configura mediante las personalizaciones del Runbook.

| Propiedad            | Valor                                                       |
| -------------------- | ----------------------------------------------------------- |
| Obligatorio          | false                                                       |
| Valor predeterminado |                                                             |
| Tipo                 | String                                                      |
| Oculto en el portal  | sí (preconfigurado mediante la personalización del runbook) |

#### BrandingHeaderImageUrl

URL HTTPS pública opcional de una imagen de encabezado personalizada (PNG/JPEG/GIF, máx. 200 KB) para el correo electrónico del informe. Se obtiene de la configuración del tenant RJReport.Branding.HeaderImageUrl. Cuando está vacía, se usa el gráfico de encabezado predeterminado de RealmJoin.

| Propiedad            | Valor                                                       |
| -------------------- | ----------------------------------------------------------- |
| Obligatorio          | false                                                       |
| Valor predeterminado |                                                             |
| Tipo                 | String                                                      |
| Oculto en el portal  | sí (preconfigurado mediante la personalización del runbook) |

#### BrandingFooterImageUrl

URL HTTPS pública opcional de una imagen de pie de página personalizada (PNG/JPEG/GIF, máx. 200 KB) para el correo electrónico del informe. Se obtiene de la configuración del tenant RJReport.Branding.FooterImageUrl. Cuando está vacía, se usa el gráfico de pie de página predeterminado de RealmJoin.

| Propiedad            | Valor                                                       |
| -------------------- | ----------------------------------------------------------- |
| Obligatorio          | false                                                       |
| Valor predeterminado |                                                             |
| Tipo                 | String                                                      |
| Oculto en el portal  | sí (preconfigurado mediante la personalización del runbook) |

#### BrandingFooterLink

URL opcional a la que enlaza la imagen del pie de página. Se obtiene de la configuración del tenant RJReport.Branding.FooterLink. Cuando está vacía, se usa el enlace predeterminado (<https://www.realmjoin.com>).

| Propiedad            | Valor                                                       |
| -------------------- | ----------------------------------------------------------- |
| Obligatorio          | false                                                       |
| Valor predeterminado |                                                             |
| Tipo                 | String                                                      |
| Oculto en el portal  | sí (preconfigurado mediante la personalización del runbook) |

#### BrandingAccentColor

| Propiedad            | Valor                                                       |
| -------------------- | ----------------------------------------------------------- |
| Obligatorio          | false                                                       |
| Valor predeterminado |                                                             |
| Tipo                 | String                                                      |
| Oculto en el portal  | sí (preconfigurado mediante la personalización del runbook) |

#### BrandingTextColor

| Propiedad            | Valor                                                       |
| -------------------- | ----------------------------------------------------------- |
| Obligatorio          | false                                                       |
| Valor predeterminado |                                                             |
| Tipo                 | String                                                      |
| Oculto en el portal  | sí (preconfigurado mediante la personalización del runbook) |

#### ReportFileFormat

Controla qué formatos de archivo del informe se generan y entregan: "solo CSV", "CSV & XLSX" (predeterminado) o "solo XLSX".

| Propiedad                    | Valor                          |
| ---------------------------- | ------------------------------ |
| Obligatorio                  | false                          |
| Valor predeterminado         | CSV & XLSX                     |
| Tipo                         | String                         |
| Nombre mostrado en el portal | Formato de archivo del informe |

**Opciones del portal**

| Opción del portal | Valor |
| ----------------- | ----- |
| CSV & XLSX        |       |
| solo CSV          |       |
| solo XLSX         |       |

#### CreateDownloadLink

Si está habilitado, los archivos del informe se cargan en una Azure Storage Account y se devuelven enlaces de descarga con tiempo limitado. Deshabilitado de forma predeterminada.

| Propiedad                    | Valor                                                                         |
| ---------------------------- | ----------------------------------------------------------------------------- |
| Obligatorio                  | false                                                                         |
| Valor predeterminado         | Falso                                                                         |
| Tipo                         | Booleano                                                                      |
| Nombre mostrado en el portal | ¿Crear un enlace de descarga de archivo (subir el informe al almacenamiento)? |

**Opciones del portal**

| Opción del portal                                     | Valor |
| ----------------------------------------------------- | ----- |
| Sí: subir el informe y devolver un enlace de descarga | true  |
| No: no crear un enlace de descarga                    | false |

#### ContainerName

Nombre del contenedor de almacenamiento usado para la carga. Configurado por runbook (no es una configuración global de RJReport).

| Propiedad            | Valor                                                       |
| -------------------- | ----------------------------------------------------------- |
| Obligatorio          | false                                                       |
| Valor predeterminado | cleanup-autopilot-devices                                   |
| Tipo                 | String                                                      |
| Oculto en el portal  | sí (preconfigurado mediante la personalización del runbook) |

#### ResourceGroupName

Grupo de recursos que contiene la Storage Account. Procede de las configuraciones de Tenant de RJReport.

| Propiedad            | Valor                                                       |
| -------------------- | ----------------------------------------------------------- |
| Obligatorio          | false                                                       |
| Valor predeterminado |                                                             |
| Tipo                 | String                                                      |
| Oculto en el portal  | sí (preconfigurado mediante la personalización del runbook) |

#### StorageAccountName

Nombre de la Storage Account usado para la carga. Procede de las configuraciones de Tenant de RJReport.

| Propiedad            | Valor                                                       |
| -------------------- | ----------------------------------------------------------- |
| Obligatorio          | false                                                       |
| Valor predeterminado |                                                             |
| Tipo                 | String                                                      |
| Oculto en el portal  | sí (preconfigurado mediante la personalización del runbook) |

#### LinkExpiryDays

Número de días hasta que expira el enlace de descarga generado. Procede de las configuraciones de Tenant de RJReport.

| Propiedad            | Valor                                                       |
| -------------------- | ----------------------------------------------------------- |
| Obligatorio          | false                                                       |
| Valor predeterminado | 6                                                           |
| Tipo                 | Int32                                                       |
| Oculto en el portal  | sí (preconfigurado mediante la personalización del runbook) |

[Volver a la vista general de referencia del runbook](/es/automatizacion/runbooks/runbook-references.md)


---

# Agent Instructions
This documentation is published with GitBook. GitBook is the documentation platform designed so that both humans and AI agents can read, navigate, and reason over technical content effectively. Learn more at gitbook.com.

## Querying This Documentation
If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter, and the optional `goal` query parameter:

```
GET https://docs.realmjoin.com/es/automatizacion/runbooks/runbook-references/org/devices/cleanup-autopilot-devices_scheduled.md?ask=<question>&goal=<endgoal>
```

`ask` is the immediate question: it should be specific, self-contained, and written in natural language.
`goal` is optional and describes the broader end goal you are ultimately trying to accomplish on behalf of the user. GitBook uses it to tailor the answer towards what is most useful for that goal.

The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
