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

# Sincronizar miembros de canal o grupo programado

Replicar los miembros entre un Teams Shared Channel y un grupo

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

### Descripción

Copia los miembros de un origen en un destino en cada ejecución. El origen y el destino pueden ser un Shared Channel y un Security Group, dos grupos, o un grupo y un Shared Channel. Los miembros que faltan siempre se agregan; los miembros que existen solo en el destino se eliminan solo cuando se solicita. Una ejecución en seco muestra los cambios sin aplicarlos, y el informe puede enviarse por correo electrónico o proporcionarse como un enlace de descarga. Los detalles sobre las opciones están en la documentación del runbook (docs.realmjoin.com).

### Cómo funciona

Este runbook programado refleja la membresía 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 del origen que falta en el destino.
4. Opcionalmente elimina cada miembro del destino que no existe en el origen (modo espejo).

#### Direcciones

El `Dirección` el parámetro selecciona qué se sincroniza con qué:

* **`SharedChannelToGroup`** - los miembros de un Shared Channel de Teams 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 a la inversa intercambiando origen y destino).
* **`GroupToSharedChannel`** - los miembros de un grupo de origen se copian en un Shared Channel de Teams.

#### Adición y eliminación

La adición de 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 con respecto al origen; con ella deshabilitada, el runbook solo agrega.

#### Expansión de miembros del grupo

Los miembros del grupo del lado de origen se resuelven **de forma transitiva**, por lo que se incluyen los usuarios que son miembros a través de grupos anidados. En el lado del destino solo **directos** se consideran miembros, porque las operaciones de agregar y eliminar actúan sobre la membresía 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 suelen rechazar 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 membresía del equipo es un requisito previo para la membresía del canal, por lo que el runbook primero se asegura de que el usuario sea miembro del equipo anfitrión y luego agrega al usuario al canal.
* Cuando los miembros son **eliminados** de un Shared Channel, de forma predeterminada solo se elimina la membresía del canal. Habilite `RemoveFromTeam` para eliminar también al usuario de la membresía del equipo anfitrión.

#### Ejecución en seco

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

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

* **`SendEmailReport`** envía un correo electrónico con la marca de RealmJoin (mediante `Send-RjRbReportEmail`) con estadísticas de la ejecución y un archivo adjunto CSV que enumera cada cambio individual. El remitente se toma de la `RJReport.EmailSender` configuración.
* **`CreateDownloadLink`** carga el mismo CSV en una Storage Account y devuelve un enlace de descarga SAS con tiempo limitado (también incrustado en el correo electrónico cuando ambas opciones están habilitadas). La 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 **Reader and Data Access** rol RBAC en la Storage Account de destino (esto es una asignación de RBAC de Azure, no un permiso de aplicación de Graph).

#### Programación

Diseñado para ejecutarse sin supervisión según una programación. Como 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 tiene en cuenta la opción opcional `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, p. ej. `#0052cc`

Cuando estas configuraciones no están definidas, se usan los gráficos y colores predeterminados de RealmJoin. Una imagen que no se puede 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 | <p>RealmJoin.RunbookHelper (>= 0.8.10)<br>Microsoft.Graph.Authentication (>= 2.41.2)<br>Az.Accounts (>= 5.5.2)</p> |
| 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 membresía 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 es 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 membresía 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 membresía*
  * 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 los informes por correo electrónico están habilitados*

### Parámetros

#### Dirección

Qué se copia en dónde: miembros de Shared Channel al grupo de destino, miembros del grupo de origen al grupo de destino, o miembros del grupo de origen al Shared Channel.

| Propiedad                      | Valor     |
| ------------------------------ | --------- |
| Requerido                      | verdadero |
| Valor predeterminado           |           |
| Tipo                           | Cadena    |
| Nombre para mostrar del portal | Dirección |

**Opciones del portal**

| Opción del portal                           | Valor                |
| ------------------------------------------- | -------------------- |
| Miembros de Shared Channel a Security Group | SharedChannelToGroup |
| Miembros de grupo a grupo                   | GroupToGroup         |
| Miembros de grupo a Shared Channel          | GroupToSharedChannel |

#### TeamId

Equipo que aloja el Shared Channel. Necesario solo para las direcciones de Shared Channel.

| Propiedad                      | Valor                              |
| ------------------------------ | ---------------------------------- |
| Requerido                      | falso                              |
| Valor predeterminado           |                                    |
| Tipo                           | Cadena                             |
| Nombre para mostrar del portal | Equipo que aloja el Shared Channel |

#### ChannelName

Nombre exacto del Shared Channel en ese equipo. Necesario solo para las direcciones de Shared Channel.

| Propiedad                      | Valor                     |
| ------------------------------ | ------------------------- |
| Requerido                      | falso                     |
| Valor predeterminado           |                           |
| Tipo                           | Cadena                    |
| Nombre para mostrar del portal | Nombre del Shared Channel |

#### SourceGroupId

Grupo cuyos miembros se copian. Necesario cuando el origen es un grupo.

| Propiedad                      | Valor                                                       |
| ------------------------------ | ----------------------------------------------------------- |
| Requerido                      | falso                                                       |
| Valor predeterminado           |                                                             |
| Tipo                           | Cadena                                                      |
| Nombre para mostrar del portal | Grupo de origen                                             |
| Oculto en el portal            | sí (preconfigurado mediante la personalización del runbook) |

#### TargetGroupId

Security Group que recibe los miembros. Necesario cuando el destino es un grupo.

| Propiedad                      | Valor                     |
| ------------------------------ | ------------------------- |
| Requerido                      | falso                     |
| Valor predeterminado           |                           |
| Tipo                           | Cadena                    |
| Nombre para mostrar del portal | Security Group de destino |

#### RemoveExtraMembers

También elimina los miembros que existen solo en el destino, por lo que refleja el origen exactamente. De lo contrario, solo se agregan miembros.

| Propiedad                      | Valor                                           |
| ------------------------------ | ----------------------------------------------- |
| Requerido                      | falso                                           |
| Valor predeterminado           | Falso                                           |
| Tipo                           | Booleano                                        |
| Nombre para mostrar del portal | ¿Eliminar los miembros que faltan en el origen? |

#### IncludeGuests

También agrega y elimina usuarios invitados. De lo contrario, los invitados se dejan intactos en ambos lados.

| Propiedad                      | Valor                        |
| ------------------------------ | ---------------------------- |
| Requerido                      | falso                        |
| Valor predeterminado           | Falso                        |
| Tipo                           | Booleano                     |
| Nombre para mostrar del portal | ¿Incluir usuarios invitados? |

#### RemoveFromTeam

Cuando un miembro se elimina del Shared Channel, también lo elimina del equipo anfitrión. Solo se aplica cuando un grupo se copia en un Shared Channel.

| Propiedad                      | Valor                                                       |
| ------------------------------ | ----------------------------------------------------------- |
| Requerido                      | falso                                                       |
| Valor predeterminado           | Falso                                                       |
| Tipo                           | Booleano                                                    |
| Nombre para mostrar del portal | ¿Eliminar también del equipo anfitrión?                     |
| Oculto en el portal            | sí (preconfigurado mediante la personalización del runbook) |

#### WhatIfMode

Solo registra lo que cambiaría sin escribir nada.

| Propiedad                      | Valor                 |
| ------------------------------ | --------------------- |
| Requerido                      | falso                 |
| Valor predeterminado           | Falso                 |
| Tipo                           | Booleano              |
| Nombre para mostrar del portal | ¿Ejecución de prueba? |

#### SendEmailReport

Enviar el informe a la dirección de correo electrónico del destinatario.

| Propiedad                      | Valor                                   |
| ------------------------------ | --------------------------------------- |
| Requerido                      | falso                                   |
| Valor predeterminado           | Falso                                   |
| Tipo                           | Booleano                                |
| Nombre para mostrar del portal | ¿Enviar informe por correo electrónico? |

**Opciones del portal**

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

#### EmailTo

Envía el informe a estas direcciones. Separe varias con comas; cada destinatario recibe un correo electrónico independiente.

| Propiedad                      | Valor                                                       |
| ------------------------------ | ----------------------------------------------------------- |
| Requerido                      | falso                                                       |
| Valor predeterminado           |                                                             |
| Tipo                           | Cadena                                                      |
| Nombre para mostrar del portal | Dirección(es) de correo electrónico del destinatario        |
| Oculto en el portal            | sí (preconfigurado mediante la personalización del runbook) |

#### EmailFrom

Dirección del remitente del correo electrónico del informe. Se toma de la configuración del Tenant RJReport.EmailSender.

| Propiedad            | Valor                                                       |
| -------------------- | ----------------------------------------------------------- |
| Requerido            | falso                                                       |
| Valor predeterminado |                                                             |
| Tipo                 | Cadena                                                      |
| Oculto en el portal  | sí (preconfigurado mediante la personalización del runbook) |

#### BrandingHeaderImageUrl

Imagen de encabezado del correo electrónico del informe (URL HTTPS, PNG/JPEG/GIF, máx. 200 KB). Se toma de la configuración del Tenant RJReport.Branding.HeaderImageUrl; se usa el encabezado predeterminado de RealmJoin cuando está vacío.

| Propiedad            | Valor                                                       |
| -------------------- | ----------------------------------------------------------- |
| Requerido            | falso                                                       |
| Valor predeterminado |                                                             |
| Tipo                 | Cadena                                                      |
| Oculto en el portal  | sí (preconfigurado mediante la personalización del runbook) |

#### BrandingFooterImageUrl

Imagen de pie de página del correo electrónico del informe (URL HTTPS, PNG/JPEG/GIF, máx. 200 KB). Se toma de la configuración del Tenant RJReport.Branding.FooterImageUrl; se usa el pie de página predeterminado de RealmJoin cuando está vacío.

| Propiedad            | Valor                                                       |
| -------------------- | ----------------------------------------------------------- |
| Requerido            | falso                                                       |
| Valor predeterminado |                                                             |
| Tipo                 | Cadena                                                      |
| Oculto en el portal  | sí (preconfigurado mediante la personalización del runbook) |

#### BrandingFooterLink

Enlace asociado a la imagen de pie de página del correo electrónico del informe. Se toma de la configuración del Tenant RJReport.Branding.FooterLink; realmjoin.com se usa cuando está vacío.

| Propiedad            | Valor                                                       |
| -------------------- | ----------------------------------------------------------- |
| Requerido            | falso                                                       |
| Valor predeterminado |                                                             |
| Tipo                 | Cadena                                                      |
| Oculto en el portal  | sí (preconfigurado mediante la personalización del runbook) |

#### BrandingAccentColor

Color de acento del correo electrónico del informe como valor hexadecimal de 6 dígitos. Se toma de la configuración del Tenant RJReport.Branding.AccentColor; se usa el valor predeterminado de RealmJoin cuando está vacío o es inválido.

| Propiedad            | Valor                                                       |
| -------------------- | ----------------------------------------------------------- |
| Requerido            | falso                                                       |
| Valor predeterminado |                                                             |
| Tipo                 | Cadena                                                      |
| Oculto en el portal  | sí (preconfigurado mediante la personalización del runbook) |

#### BrandingTextColor

Color de texto del correo electrónico del informe como valor hexadecimal de 6 dígitos. Se toma de la configuración del Tenant RJReport.Branding.TextColor; se usa el valor predeterminado de RealmJoin cuando está vacío o es inválido.

| Propiedad            | Valor                                                       |
| -------------------- | ----------------------------------------------------------- |
| Requerido            | falso                                                       |
| Valor predeterminado |                                                             |
| Tipo                 | Cadena                                                      |
| Oculto en el portal  | sí (preconfigurado mediante la personalización del runbook) |

#### ReportFileFormat

Entrega el informe como CSV, como un libro de Excel o ambos.

| Propiedad                      | Valor                                                       |
| ------------------------------ | ----------------------------------------------------------- |
| Requerido                      | falso                                                       |
| Valor predeterminado           | CSV y XLSX                                                  |
| Tipo                           | Cadena                                                      |
| Nombre para mostrar del portal | Formato del archivo del informe                             |
| Oculto en el portal            | sí (preconfigurado mediante la personalización del runbook) |

**Opciones del portal**

| Opción del portal | Valor      |
| ----------------- | ---------- |
| CSV y XLSX        | CSV y XLSX |
| Solo CSV          | Solo CSV   |
| Solo XLSX         | Solo XLSX  |

#### CreateDownloadLink

También carga el informe y devuelve un enlace de descarga que expira después de unos días.

| Propiedad                      | Valor                         |
| ------------------------------ | ----------------------------- |
| Requerido                      | falso                         |
| Valor predeterminado           | Falso                         |
| Tipo                           | Booleano                      |
| Nombre para mostrar del portal | ¿Crear un enlace de descarga? |

**Opciones del portal**

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

#### ContainerName

Contenedor de almacenamiento al que se cargan los archivos del informe. Se configura por runbook.

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

#### ResourceGroupName

Grupo de recursos de la Storage Account para las cargas del informe. Obtenido de la configuración del Tenant RJReport.StorageAccount.ResourceGroup.

| Propiedad            | Valor                                                       |
| -------------------- | ----------------------------------------------------------- |
| Requerido            | falso                                                       |
| Valor predeterminado |                                                             |
| Tipo                 | Cadena                                                      |
| Oculto en el portal  | sí (preconfigurado mediante la personalización del runbook) |

#### StorageAccountName

Storage Account para las cargas del informe. Obtenido de la configuración del Tenant RJReport.StorageAccount.StorageAccountName.

| Propiedad            | Valor                                                       |
| -------------------- | ----------------------------------------------------------- |
| Requerido            | falso                                                       |
| Valor predeterminado |                                                             |
| Tipo                 | Cadena                                                      |
| Oculto en el portal  | sí (preconfigurado mediante la personalización del runbook) |

#### LinkExpiryDays

Número de días que un enlace de descarga permanece válido. Obtenido de la configuración del Tenant RJReport.StorageAccount.LinkExpiryDays.

| Propiedad            | Valor                                                       |
| -------------------- | ----------------------------------------------------------- |
| Requerido            | falso                                                       |
| 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 by asking a question.

Perform an HTTP GET request on the following URL with the `ask` and `goal` query parameters:

```
GET https://docs.realmjoin.com/es/automatizacion/runbooks/runbook-references/org/general/sync-channel-or-group-members_scheduled.md?ask=<question>&goal=<user_goal>
```

`ask` is the immediate question: it should be specific, self-contained, and written in natural language.
`goal` is what the user is ultimately trying to achieve, the reason they need the answer. Sharing it helps GitBook give you a better, more relevant answer. A goal is most helpful when it describes the outcome the user wants rather than restating the question. For example, with `ask=how do I create an API token`, a goal like `automate deployments from our CI pipeline` lets GitBook tailor the answer to that use case.

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.
