> 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/general/sync-channel-or-group-members_scheduled.md).

# Programado para sincronizar miembros de canales o grupos

Sincronizar miembros entre un Shared Channel de Teams o un grupo y un grupo de seguridad de Entra

{% 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 refleja la pertenencia de un objeto de origen en un objeto de destino en una sola dirección por ejecución. Admite sincronizar los miembros de un Teams Shared Channel en un Security Group, sincronizar los miembros de un grupo en otro grupo (por ejemplo, un grupo de Microsoft 365 en un Security Group o viceversa) y sincronizar los miembros de un grupo en un Teams Shared Channel. Siempre se agregan los miembros que faltan, mientras que la eliminación de los miembros que solo existen en el destino es opcional y se controla mediante un parámetro. El tratamiento de invitados y si las eliminaciones del canal también eliminan la pertenencia del equipo anfitrión son configurables, y el runbook puede, opcionalmente, enviar un informe por correo electrónico y cargar los resultados como un vínculo de descarga con tiempo limitado. El parámetro ReportFileFormat controla qué formatos de archivo del informe se generan y entregan (solo CSV, CSV y XLSX, o solo XLSX). Cuando el archivo adjunto CSV supera el límite de tamaño del correo electrónico y "CSV & XLSX" se selecciona, el correo electrónico recurre únicamente al libro de Excel.

### Cómo funciona

Este runbook programado refleja la pertenencia de un **origen** objeto en un **destino** objeto en una sola dirección por ejecución. En cada ejecución:

1. Resuelve los objetos de origen y destino para la dirección seleccionada.
2. Lee el conjunto actual de miembros de ambos lados.
3. Agrega cada miembro de origen que falte en el destino.
4. Opcionalmente elimina cada miembro del destino que no exista en el origen (modo espejo).

#### Direcciones

El `Direction` parámetro selecciona qué se sincroniza en qué:

* **`SharedChannelToGroup`** - los miembros de un Teams Shared Channel se copian en un Security Group de destino.
* **`GroupToGroup`** - los miembros de un grupo de origen se copian en un grupo de destino (por ejemplo, un grupo de Microsoft 365 en un Security Group, o al revés intercambiando origen y destino).
* **`GroupToSharedChannel`** - los miembros de un grupo de origen se copian en un Teams Shared Channel.

#### Adición y eliminación

Agregar los miembros que faltan siempre se realiza. La eliminación de los miembros que existen solo en el destino es **opcional** mediante `RemoveExtraMembers` (desactivado de forma predeterminada). Con la eliminación habilitada, el destino se refleja exactamente contra el origen; con ella deshabilitada, el runbook solo agrega miembros que faltan.

#### Expansión de miembros del grupo

Los miembros del grupo en el lado de origen se resuelven **transitivamente**, por lo que se incluyen los usuarios que son miembros a través de grupos anidados. En el lado de destino solo **directos** se tienen en cuenta, porque las operaciones de agregar y eliminar actúan sobre la pertenencia directa.

#### Tratamiento de invitados

`IncludeGuests` (desactivado de forma predeterminada) controla si los usuarios invitados participan en la sincronización. Cuando está desactivado, los invitados se omiten en ambos lados y nunca se agregan ni se eliminan. Los Shared Channel rechazan con frecuencia a los invitados, por lo que esto está desactivado de forma predeterminada.

#### Detalles específicos de Shared Channel

* Cuando un grupo se sincroniza **en** un Shared Channel, la pertenencia al equipo es un requisito previo para la pertenencia al canal, por lo que el runbook primero garantiza que el usuario sea miembro del equipo anfitrión y luego lo agrega al canal.
* Cuando se **eliminan** de un Shared Channel, de forma predeterminada solo se elimina la pertenencia al canal. Habilita `RemoveFromTeam` para eliminar también al usuario de la pertenencia del equipo anfitrión.

#### Ejecución en seco

Establezca `WhatIfMode` para registrar qué cambiaría sin escribir nada.

#### Informe (opcional, ambos desactivados de forma predeterminada)

* **`SendEmailReport`** envía un correo electrónico con la marca RealmJoin (mediante `Send-RjReportEmail`) con estadísticas de ejecución y un archivo adjunto CSV que enumera cada cambio individual. El remitente se toma de la `RJReport.EmailSender` de la configuración.
* **`CreateDownloadLink`** carga el mismo CSV en un Storage Account y devuelve un vínculo de descarga SAS con tiempo limitado (también incrustado en el correo electrónico cuando ambas opciones están habilitadas). El Storage Account de destino se toma de la `RJReport.StorageAccount.*` configuraciones.

La carga en el almacenamiento se autentica con la identidad administrada de la cuenta de Automation; esa identidad necesita el **Storage Account Contributor** rol RBAC en la cuenta de almacenamiento de destino (esta es una asignación RBAC de Azure, no un permiso de aplicación de Graph).

#### Programación

Diseñado para ejecutarse desatendido según una programación. Dado que el runbook es idempotente, una sola programación recurrente mantiene el destino sincronizado con el origen a medida que los miembros entran y salen.

### 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 → General → Sincronizar miembros de canal o grupo (programado)

**Nombre completo del runbook**

rjgit-org\_general\_sync-channel-or-group-members\_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í                                                                                                     |

### Permisos

#### Permisos de aplicación

* **Tipo**: Microsoft Graph
  * Group.ReadWrite.All
    * *Resuelve los grupos de origen/destino y el equipo anfitrión y escribe la pertenencia directa mediante /groups/{id}/members/$ref*
  * GroupMember.ReadWrite.All
    * *Agrega y elimina miembros directos del grupo de destino durante la sincronización*
  * Channel.ReadBasic.All
    * *Enumera /teams/{id}/channels para resolver el Shared Channel y verificar que sea un Shared Channel*
  * ChannelMember.ReadWrite.All
    * *Lee, agrega y elimina miembros del Shared Channel mediante /teams/{id}/channels/{id}/members*
  * TeamMember.ReadWrite.All
    * *Agrega/elimina la pertenencia del equipo anfitrión como requisito previo o limpieza para los miembros del Shared Channel*
  * User.Read.All
    * *Lee objetos de usuario miembro (id, UPN, userType) para detectar invitados y calcular el delta de pertenencia*
  * Organization.Read.All
    * *Lee /organization para incluir el nombre del Tenant en el correo electrónico del informe*
  * Mail.Send *(opcional — característica: informe por correo electrónico)*
    * *Envía el informe de sincronización mediante Send-RjReportEmail cuando la notificación por correo electrónico está habilitada*

### Parámetros

#### Direction

Selecciona qué se sincroniza en qué. SharedChannelToGroup copia los miembros del Shared Channel al grupo de destino, GroupToGroup copia los miembros del grupo de origen al grupo de destino y GroupToSharedChannel copia los miembros del grupo de origen al Shared Channel.

| Propiedad                    | Valor                  |
| ---------------------------- | ---------------------- |
| Obligatorio                  | true                   |
| Valor predeterminado         |                        |
| Tipo                         | String                 |
| Nombre mostrado en el portal | Qué debe sincronizarse |

**Opciones del portal**

| Opción del portal                            | Valor |
| -------------------------------------------- | ----- |
| Miembros de Shared Channel -> Security Group |       |
| Miembros del grupo -> grupo                  |       |
| Miembros del grupo -> Shared Channel         |       |

#### TeamId

Id de objeto del equipo que aloja el Shared Channel. Solo se usa para las direcciones del Shared Channel.

| Propiedad                    | Valor                              |
| ---------------------------- | ---------------------------------- |
| Obligatorio                  | false                              |
| Valor predeterminado         |                                    |
| Tipo                         | String                             |
| Nombre mostrado en el portal | Equipo que aloja el Shared Channel |

#### ChannelName

Nombre para mostrar exacto del Shared Channel dentro del equipo seleccionado. Solo se usa para las direcciones del Shared Channel.

| Propiedad                    | Valor                                  |
| ---------------------------- | -------------------------------------- |
| Obligatorio                  | false                                  |
| Valor predeterminado         |                                        |
| Tipo                         | String                                 |
| Nombre mostrado en el portal | Nombre para mostrar del Shared Channel |

#### SourceGroupId

Id de objeto del grupo de origen cuyos miembros se copian. Se usa para las direcciones de origen del grupo.

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

#### TargetGroupId

Id de objeto del Security Group de destino que recibe a los miembros. Se usa para las direcciones de destino del grupo.

| Propiedad                    | Valor                     |
| ---------------------------- | ------------------------- |
| Obligatorio                  | false                     |
| Valor predeterminado         |                           |
| Tipo                         | String                    |
| Nombre mostrado en el portal | Security Group de destino |

#### RemoveExtraMembers

Cuando está habilitado, los miembros que existen solo en el destino y no en el origen se eliminan para que el destino refleje el origen. Cuando está deshabilitado (predeterminado), el runbook solo agrega miembros que faltan.

| Propiedad                    | Valor                                                                     |
| ---------------------------- | ------------------------------------------------------------------------- |
| Obligatorio                  | false                                                                     |
| Valor predeterminado         | Falso                                                                     |
| Tipo                         | Booleano                                                                  |
| Nombre mostrado en el portal | Eliminar los miembros que solo existen en el destino (reflejar el origen) |

#### IncludeGuests

Cuando está habilitado, los usuarios invitados se incluyen en la sincronización y se pueden agregar o eliminar. Cuando está deshabilitado (predeterminado), los invitados se omiten y nunca se agregan ni se eliminan.

| Propiedad                    | Valor                      |
| ---------------------------- | -------------------------- |
| Obligatorio                  | false                      |
| Valor predeterminado         | Falso                      |
| Tipo                         | Booleano                   |
| Nombre mostrado en el portal | Incluir usuarios invitados |

#### RemoveFromTeam

Solo relevante para GroupToSharedChannel. Cuando está habilitado, eliminar a un miembro del Shared Channel también lo elimina de la pertenencia del equipo anfitrión. Cuando está deshabilitado (predeterminado), solo se elimina la pertenencia al canal.

| Propiedad                    | Valor                                                                   |
| ---------------------------- | ----------------------------------------------------------------------- |
| Obligatorio                  | false                                                                   |
| Valor predeterminado         | Falso                                                                   |
| Tipo                         | Booleano                                                                |
| Nombre mostrado en el portal | Al eliminar del canal, también eliminar al usuario del equipo anfitrión |
| Oculto en el portal          | sí (preconfigurado mediante la personalización del runbook)             |

#### WhatIfMode

Cuando está habilitado, el runbook solo registra los cambios que haría sin escribir nada.

| Propiedad                    | Valor                                            |
| ---------------------------- | ------------------------------------------------ |
| Obligatorio                  | false                                            |
| Valor predeterminado         | Falso                                            |
| Tipo                         | Booleano                                         |
| Nombre mostrado en el portal | Prueba de ejecución (solo registro, sin cambios) |

#### SendEmailReport

Cuando está habilitado, se envía un informe de correo electrónico con la marca RealmJoin mediante Send-RjReportEmail después de la ejecución. Al activar esto se muestran los campos de dirección del destinatario y formato de archivo del informe.

| Propiedad                    | Valor                                 |
| ---------------------------- | ------------------------------------- |
| Obligatorio                  | false                                 |
| Valor predeterminado         | Falso                                 |
| Tipo                         | Booleano                              |
| Nombre mostrado en el portal | Enviar informe por correo electrónico |

**Opciones del portal**

| Opción del portal                             | Valor |
| --------------------------------------------- | ----- |
| Sí - enviar el informe por correo electrónico |       |
| No - no enviar un correo electrónico          |       |

#### EmailTo

Dirección o direcciones de correo electrónico de los destinatarios del informe (separadas por comas). Solo se usa cuando SendEmailReport está habilitado.

| Propiedad                    | Valor                                                       |
| ---------------------------- | ----------------------------------------------------------- |
| Obligatorio                  | false                                                       |
| Valor predeterminado         |                                                             |
| Tipo                         | String                                                      |
| Nombre mostrado en el portal | Enviar informe a (dirección(es) de correo electrónico)      |
| Oculto en el portal          | sí (preconfigurado mediante la personalización del runbook) |

#### EmailFrom

Buzón remitente para el informe. Vinculado a la configuración de la organización RJReport.EmailSender.

| 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

Anulación opcional del color de acento (hexadecimal de 6 dígitos, por ejemplo '#0052cc') para la plantilla del correo electrónico del informe. Se obtiene de la configuración del tenant RJReport.Branding.AccentColor. Cuando está vacío o no es válido, se usa el color de acento predeterminado de RealmJoin.

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

#### BrandingTextColor

Anulación opcional del color de texto (hexadecimal de 6 dígitos) para la plantilla del correo electrónico del informe. Se obtiene de la configuración del tenant RJReport.Branding.TextColor. Cuando está vacío o no es válido, se usa el color de texto predeterminado de RealmJoin.

| 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                              |
| Oculto en el portal          | sí (preconfigurado mediante la personalización del runbook) |

**Opciones del portal**

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

#### CreateDownloadLink

Cuando está habilitado, los archivos del informe se cargan en un Storage Account y se devuelven vínculos de descarga con tiempo limitado (también incluidos en el informe por correo electrónico si eso también está habilitado).

| Propiedad                    | Valor                                                                             |
| ---------------------------- | --------------------------------------------------------------------------------- |
| Obligatorio                  | false                                                                             |
| Valor predeterminado         | Falso                                                                             |
| Tipo                         | Booleano                                                                          |
| Nombre mostrado en el portal | Crear un vínculo de descarga del informe (cargar el informe en el almacenamiento) |

**Opciones del portal**

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

#### ContainerName

Contenedor de Storage Account utilizado para la carga. Configurado por runbook.

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

#### ResourceGroupName

Grupo de recursos que contiene el Storage Account. Vinculado a RJReport.StorageAccount.ResourceGroup.

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

#### StorageAccountName

Storage Account utilizado para la carga. Vinculado a RJReport.StorageAccount.StorageAccountName.

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

#### LinkExpiryDays

Días hasta que el vínculo de descarga generado caduque. Vinculado a RJReport.StorageAccount.LinkExpiryDays.

| 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/general/sync-channel-or-group-members_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.
