> 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/pt/automatizacao/runbooks/runbook-references/org/general/sync-channel-or-group-members_scheduled.md).

# Sincronizar membros do canal ou do grupo agendado

Espelhar membros entre um Shared Channel do Teams e um grupo

{% hint style="info" %}
Este é um runbook agendado. Ele foi projetado para ser executado em um agendamento recorrente, em vez de ser acionado para um único objeto. Veja [Agendamento](/pt/automatizacao/runbooks/scheduling.md) para obter detalhes sobre como configurar os agendamentos do runbook.
{% endhint %}

### Descrição

Copia os membros de uma origem para um destino em cada execução. A origem e o destino podem ser um Shared Channel e um Security Group, dois grupos, ou um grupo e um Shared Channel. Os membros em falta são sempre adicionados; os membros que existem apenas no destino são removidos apenas quando solicitado. Uma execução de teste mostra as alterações sem as aplicar, e o relatório pode ser enviado por email ou disponibilizado como uma ligação de download. Os detalhes sobre as opções estão na documentação do runbook (docs.realmjoin.com).

### Como funciona

Este runbook agendado espelha a associação de um **origem** objeto para um **destino** objeto numa única direção por execução. Em cada execução, ele:

1. Resolve os objetos de origem e de destino para a direção selecionada.
2. Lê o conjunto atual de membros de ambos os lados.
3. Adiciona todos os membros da origem que faltam no destino.
4. Opcionalmente remove todos os membros do destino que não existem na origem (modo espelho).

#### Direções

O `Direção` parâmetro seleciona o que é sincronizado para o quê:

* **`SharedChannelToGroup`** - os membros de um canal partilhado do Teams são copiados para um Security Group de destino.
* **`GroupToGroup`** - os membros de um grupo de origem são copiados para um grupo de destino (por exemplo, um grupo do Microsoft 365 para um Security Group, ou o inverso ao trocar a origem e o destino).
* **`GroupToSharedChannel`** - os membros de um grupo de origem são copiados para um Shared Channel do Teams.

#### Adição e remoção

A adição de membros em falta é sempre efetuada. A remoção de membros que existem apenas no destino é **opcional** via `RemoveExtraMembers` (desativado por predefinição). Com a remoção ativada, o destino é espelhado exatamente em relação à origem; com ela desativada, o runbook apenas adiciona.

#### Expansão dos membros do grupo

Os membros do grupo do lado da origem são resolvidos **transitivamente**, pelo que os utilizadores que são membros através de grupos aninhados são incluídos. No lado do destino, apenas **diretos** são considerados, porque as operações de adicionar e remover atuam na associação direta.

#### Gestão de convidados

`IncludeGuests` (desativado por predefinição) controla se os utilizadores convidados participam na sincronização. Quando está desativado, os convidados são ignorados em ambos os lados e nunca são adicionados nem removidos. Os Shared Channel frequentemente rejeitam convidados, por isso esta opção está desativada por predefinição.

#### Especificidades do Shared Channel

* Quando um grupo é sincronizado **para** um Shared Channel, a associação à equipa é um pré-requisito para a associação ao canal, pelo que o runbook primeiro garante que o utilizador é membro da equipa anfitriã e depois adiciona o utilizador ao canal.
* Quando os membros são **removidos** de um Shared Channel, por predefinição apenas a associação ao canal é removida. Ative `RemoveFromTeam` para também remover o utilizador da associação da equipa anfitriã.

#### Execução de teste

Defina `WhatIfMode` para registar o que mudaria sem escrever nada.

#### Relatórios (opcional, ambos desativados por predefinição)

* **`SendEmailReport`** envia um email com a marca RealmJoin (via `Send-RjRbReportEmail`) com estatísticas da execução e um anexo CSV listando cada alteração individual. O remetente é obtido a partir da `RJReport.EmailSender` definição.
* **`CreateDownloadLink`** carrega o mesmo CSV para uma Storage Account e devolve uma ligação de download SAS com prazo limitado (também incorporada no email quando ambas as opções estão ativadas). A Storage Account de destino é obtida a partir da `RJReport.StorageAccount.*` configurações.

O carregamento para a Storage Account autentica-se com a identidade gerida da conta de Automation; essa identidade precisa de **Leitor e acesso aos dados** função RBAC na Storage Account de destino (isto é uma atribuição de Azure RBAC, não uma permissão de aplicação do Graph).

#### Agendamento

Concebido para ser executado sem supervisão num agendamento. Como o runbook é idempotente, um único agendamento recorrente mantém o destino sincronizado com a origem à medida que os membros entram e saem.

### Branding do email

O email do relatório respeita as definições opcionais de `RJReport.Branding.*` do Tenant:

* **Imagem do cabeçalho e do rodapé** – URLs HTTPS públicas, PNG/JPEG/GIF, máx. 200 KB cada
* **Ligação no rodapé** – destino da imagem do rodapé
* **Cor de destaque e do texto** – valores hexadecimais de 6 dígitos, por exemplo `#0052cc`

Quando estas definições não estão configuradas, são utilizadas as imagens e cores predefinidas do RealmJoin. Uma imagem que não possa ser transferida ou validada, ou um valor de cor inválido, nunca impede o email do relatório – é utilizada em vez disso a predefinição correspondente.

Instruções de configuração e requisitos da imagem: [Branding do email](https://docs.realmjoin.com/automation/runbooks/runbook-report-settings#email-branding-optional).

### Localização

Organização → Geral → Sincronizar membros de canal ou grupo (agendado)

**Nome completo do Runbook**

rjgit-org\_general\_sync-channel-or-group-members\_scheduled

### Detalhes

| Propriedade         | Valor                                                                                                              |
| ------------------- | ------------------------------------------------------------------------------------------------------------------ |
| Versão              | 1.3.0                                                                                                              |
| Módulos necessários | <p>RealmJoin.RunbookHelper (>= 0.8.10)<br>Microsoft.Graph.Authentication (>= 2.41.2)<br>Az.Accounts (>= 5.5.2)</p> |
| Agendável           | sim                                                                                                                |

### Permissões

#### Permissões da aplicação

* **Tipo**: Microsoft Graph
  * Group.ReadWrite.All
    * *Resolve os grupos de origem/destino e a equipa anfitriã e grava a associação direta via /groups/{id}/members/$ref*
  * GroupMember.ReadWrite.All
    * *Adiciona e remove membros diretos do grupo de destino durante a sincronização*
  * Channel.ReadBasic.All
    * *Lista /teams/{id}/channels para resolver o Shared Channel e verificar se se trata de um Shared Channel*
  * ChannelMember.ReadWrite.All
    * *Lê, adiciona e remove membros do Shared Channel via /teams/{id}/channels/{id}/members*
  * TeamMember.ReadWrite.All
    * *Adiciona/remove a associação à equipa anfitriã como pré-requisito ou limpeza para os membros do Shared Channel*
  * User.Read.All
    * *Lê objetos de utilizador membros (id, UPN, userType) para detetar convidados e calcular o delta de associação*
  * Organization.Read.All
    * *Lê /organization para incluir o nome do Tenant no email do relatório*
  * Mail.Send *(opcional — funcionalidade: Relatório por email)*
    * *Envia o relatório de sincronização via Send-RjReportEmail quando os relatórios por email estão ativados*

### Parâmetros

#### Direção

O que é copiado para onde: membros do Shared Channel para o grupo de destino, membros do grupo de origem para o grupo de destino, ou membros do grupo de origem para o Shared Channel.

| Propriedade                | Valor                |
| -------------------------- | -------------------- |
| Obrigatório                | verdadeiro           |
| Valor predefinido          |                      |
| Tipo                       | Cadeia de caracteres |
| Nome de exibição do portal | Direção              |

**Opções do portal**

| Opção do portal                               | Valor                |
| --------------------------------------------- | -------------------- |
| Membros do Shared Channel para Security Group | SharedChannelToGroup |
| Membros do grupo para grupo                   | GroupToGroup         |
| Membros do grupo para Shared Channel          | GroupToSharedChannel |

#### TeamId

Equipa que aloja o Shared Channel. Necessário apenas para as direções do Shared Channel.

| Propriedade                | Valor                             |
| -------------------------- | --------------------------------- |
| Obrigatório                | falso                             |
| Valor predefinido          |                                   |
| Tipo                       | Cadeia de caracteres              |
| Nome de exibição do portal | Equipa que aloja o Shared Channel |

#### ChannelName

Nome exato do Shared Channel nessa equipa. Necessário apenas para as direções do Shared Channel.

| Propriedade                | Valor                  |
| -------------------------- | ---------------------- |
| Obrigatório                | falso                  |
| Valor predefinido          |                        |
| Tipo                       | Cadeia de caracteres   |
| Nome de exibição do portal | Nome do Shared Channel |

#### SourceGroupId

Grupo cujos membros são copiados. Necessário quando a origem é um grupo.

| Propriedade                | Valor                                                  |
| -------------------------- | ------------------------------------------------------ |
| Obrigatório                | falso                                                  |
| Valor predefinido          |                                                        |
| Tipo                       | Cadeia de caracteres                                   |
| Nome de exibição do portal | Grupo de origem                                        |
| Oculto no portal           | sim (predefinido através da personalização do runbook) |

#### TargetGroupId

Security Group que recebe os membros. Necessário quando o destino é um grupo.

| Propriedade                | Valor                     |
| -------------------------- | ------------------------- |
| Obrigatório                | falso                     |
| Valor predefinido          |                           |
| Tipo                       | Cadeia de caracteres      |
| Nome de exibição do portal | Security Group de destino |

#### RemoveExtraMembers

Também remove os membros que existem apenas no destino, para que espelhe a origem exatamente. Caso contrário, os membros apenas são adicionados.

| Propriedade                | Valor                               |
| -------------------------- | ----------------------------------- |
| Obrigatório                | falso                               |
| Valor predefinido          | Falso                               |
| Tipo                       | Booleano                            |
| Nome de exibição do portal | Remover membros em falta na origem? |

#### IncludeGuests

Também adiciona e remove utilizadores convidados. Caso contrário, os convidados permanecem inalterados em ambos os lados.

| Propriedade                | Valor                            |
| -------------------------- | -------------------------------- |
| Obrigatório                | falso                            |
| Valor predefinido          | Falso                            |
| Tipo                       | Booleano                         |
| Nome de exibição do portal | Incluir utilizadores convidados? |

#### RemoveFromTeam

Quando um membro é removido do Shared Channel, também o remove da equipa anfitriã. Aplica-se apenas quando um grupo é copiado para um Shared Channel.

| Propriedade                | Valor                                                  |
| -------------------------- | ------------------------------------------------------ |
| Obrigatório                | falso                                                  |
| Valor predefinido          | Falso                                                  |
| Tipo                       | Booleano                                               |
| Nome de exibição do portal | Remover também da equipa anfitriã?                     |
| Oculto no portal           | sim (predefinido através da personalização do runbook) |

#### WhatIfMode

Apenas regista o que mudaria sem escrever nada.

| Propriedade                | Valor              |
| -------------------------- | ------------------ |
| Obrigatório                | falso              |
| Valor predefinido          | Falso              |
| Tipo                       | Booleano           |
| Nome de exibição do portal | Execução de teste? |

#### SendEmailReport

Envia o relatório para o endereço de email do destinatário.

| Propriedade                | Valor                       |
| -------------------------- | --------------------------- |
| Obrigatório                | falso                       |
| Valor predefinido          | Falso                       |
| Tipo                       | Booleano                    |
| Nome de exibição do portal | Enviar relatório por email? |

**Opções do portal**

| Opção do portal                    | Valor      |
| ---------------------------------- | ---------- |
| Sim - enviar o relatório por email | verdadeiro |
| Não - não enviar email             | falso      |

#### EmailTo

Enviar o relatório para estes endereços. Separe vários com vírgulas; cada destinatário recebe um email separado.

| Propriedade                | Valor                                                  |
| -------------------------- | ------------------------------------------------------ |
| Obrigatório                | falso                                                  |
| Valor predefinido          |                                                        |
| Tipo                       | Cadeia de caracteres                                   |
| Nome de exibição do portal | Endereço(s) de email do(s) destinatário(s)             |
| Oculto no portal           | sim (predefinido através da personalização do runbook) |

#### EmailFrom

Endereço do remetente do email do relatório. Obtido da definição do Tenant RJReport.EmailSender.

| Propriedade       | Valor                                                  |
| ----------------- | ------------------------------------------------------ |
| Obrigatório       | falso                                                  |
| Valor predefinido |                                                        |
| Tipo              | Cadeia de caracteres                                   |
| Oculto no portal  | sim (predefinido através da personalização do runbook) |

#### BrandingHeaderImageUrl

Imagem de cabeçalho do email do relatório (URL HTTPS, PNG/JPEG/GIF, máx. 200 KB). Obtida da definição do Tenant RJReport.Branding.HeaderImageUrl; é utilizado o cabeçalho predefinido do RealmJoin quando estiver vazio.

| Propriedade       | Valor                                                  |
| ----------------- | ------------------------------------------------------ |
| Obrigatório       | falso                                                  |
| Valor predefinido |                                                        |
| Tipo              | Cadeia de caracteres                                   |
| Oculto no portal  | sim (predefinido através da personalização do runbook) |

#### BrandingFooterImageUrl

Imagem de rodapé do email do relatório (URL HTTPS, PNG/JPEG/GIF, máx. 200 KB). Obtida da definição do Tenant RJReport.Branding.FooterImageUrl; é utilizado o rodapé predefinido do RealmJoin quando estiver vazio.

| Propriedade       | Valor                                                  |
| ----------------- | ------------------------------------------------------ |
| Obrigatório       | falso                                                  |
| Valor predefinido |                                                        |
| Tipo              | Cadeia de caracteres                                   |
| Oculto no portal  | sim (predefinido através da personalização do runbook) |

#### BrandingFooterLink

Ligação por trás da imagem de rodapé do email do relatório. Obtida da definição do Tenant RJReport.Branding.FooterLink; realmjoin.com é utilizado quando estiver vazio.

| Propriedade       | Valor                                                  |
| ----------------- | ------------------------------------------------------ |
| Obrigatório       | falso                                                  |
| Valor predefinido |                                                        |
| Tipo              | Cadeia de caracteres                                   |
| Oculto no portal  | sim (predefinido através da personalização do runbook) |

#### BrandingAccentColor

Cor de destaque do email do relatório como um valor hexadecimal de 6 dígitos. Obtida da definição do Tenant RJReport.Branding.AccentColor; é utilizado o valor predefinido do RealmJoin quando estiver vazio ou inválido.

| Propriedade       | Valor                                                  |
| ----------------- | ------------------------------------------------------ |
| Obrigatório       | falso                                                  |
| Valor predefinido |                                                        |
| Tipo              | Cadeia de caracteres                                   |
| Oculto no portal  | sim (predefinido através da personalização do runbook) |

#### BrandingTextColor

Cor do texto do email do relatório como um valor hexadecimal de 6 dígitos. Obtida da definição do Tenant RJReport.Branding.TextColor; é utilizado o valor predefinido do RealmJoin quando estiver vazio ou inválido.

| Propriedade       | Valor                                                  |
| ----------------- | ------------------------------------------------------ |
| Obrigatório       | falso                                                  |
| Valor predefinido |                                                        |
| Tipo              | Cadeia de caracteres                                   |
| Oculto no portal  | sim (predefinido através da personalização do runbook) |

#### ReportFileFormat

Entregar o relatório como CSV, como uma pasta de trabalho do Excel ou ambos.

| Propriedade                | Valor                                                  |
| -------------------------- | ------------------------------------------------------ |
| Obrigatório                | falso                                                  |
| Valor predefinido          | CSV e XLSX                                             |
| Tipo                       | Cadeia de caracteres                                   |
| Nome de exibição do portal | Formato do ficheiro do relatório                       |
| Oculto no portal           | sim (predefinido através da personalização do runbook) |

**Opções do portal**

| Opção do portal | Valor       |
| --------------- | ----------- |
| CSV e XLSX      | CSV e XLSX  |
| Apenas CSV      | Apenas CSV  |
| Apenas XLSX     | Apenas XLSX |

#### CreateDownloadLink

Também carregue o relatório e devolva uma ligação de download que expira após alguns dias.

| Propriedade                | Valor                          |
| -------------------------- | ------------------------------ |
| Obrigatório                | falso                          |
| Valor predefinido          | Falso                          |
| Tipo                       | Booleano                       |
| Nome de exibição do portal | Criar uma ligação de download? |

**Opções do portal**

| Opção do portal                                               | Valor      |
| ------------------------------------------------------------- | ---------- |
| Sim - carregar o relatório e devolver uma ligação de download | verdadeiro |
| Não - não criar uma ligação de download                       | falso      |

#### ContainerName

Contentor de armazenamento para o qual os ficheiros do relatório são carregados. Definir por runbook.

| Propriedade       | Valor                                                  |
| ----------------- | ------------------------------------------------------ |
| Obrigatório       | falso                                                  |
| Valor predefinido | channel-group-member-sync                              |
| Tipo              | Cadeia de caracteres                                   |
| Oculto no portal  | sim (predefinido através da personalização do runbook) |

#### ResourceGroupName

Grupo de recursos da conta de armazenamento para carregamentos do relatório. Obtido a partir da definição de tenant RJReport.StorageAccount.ResourceGroup.

| Propriedade       | Valor                                                  |
| ----------------- | ------------------------------------------------------ |
| Obrigatório       | falso                                                  |
| Valor predefinido |                                                        |
| Tipo              | Cadeia de caracteres                                   |
| Oculto no portal  | sim (predefinido através da personalização do runbook) |

#### StorageAccountName

Conta de armazenamento para carregamentos do relatório. Obtida a partir da definição de tenant RJReport.StorageAccount.StorageAccountName.

| Propriedade       | Valor                                                  |
| ----------------- | ------------------------------------------------------ |
| Obrigatório       | falso                                                  |
| Valor predefinido |                                                        |
| Tipo              | Cadeia de caracteres                                   |
| Oculto no portal  | sim (predefinido através da personalização do runbook) |

#### LinkExpiryDays

Número de dias que uma ligação de download permanece válida. Obtido a partir da definição de tenant RJReport.StorageAccount.LinkExpiryDays.

| Propriedade       | Valor                                                  |
| ----------------- | ------------------------------------------------------ |
| Obrigatório       | falso                                                  |
| Valor predefinido | 6                                                      |
| Tipo              | Int32                                                  |
| Oculto no portal  | sim (predefinido através da personalização do runbook) |

[Voltar à visão geral da referência do Runbook](/pt/automatizacao/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/pt/automatizacao/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.
