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

# Sincronizar membros do canal ou do grupo agendado

Sincronizar membros entre um Teams Shared Channel ou um grupo e um grupo de segurança do Entra

{% hint style="info" %}
Este é um Runbook agendado. Foi concebido para ser executado segundo um agendamento recorrente, em vez de ser acionado para um único objeto. Consulte [Agendamento](/pt/automacao/runbooks/scheduling.md) para detalhes sobre como configurar os agendamentos do Runbook.
{% endhint %}

### Descrição

Este runbook agendado espelha a associação de um objeto de origem para um objeto de destino numa única direção por execução. Suporta a sincronização de membros de Teams Shared Channel para um Security Group, a sincronização dos membros de um grupo para outro grupo (por exemplo, um grupo Microsoft 365 para um Security Group ou vice-versa) e a sincronização de membros de grupos para um Teams Shared Channel. A adição de membros em falta é sempre efetuada, enquanto a remoção de membros que existem apenas no destino é opcional e controlada por um parâmetro. O tratamento de convidados e o facto de as remoções do canal também removerem a associação da equipa anfitriã são configuráveis, e o runbook pode, opcionalmente, enviar um relatório por e-mail e carregar os resultados como um link de download com prazo limitado. O parâmetro ReportFileFormat controla quais formatos de ficheiro de relatório são gerados e entregues (apenas CSV, CSV e XLSX, ou apenas XLSX). Quando o anexo CSV excede o limite de tamanho do e-mail e "CSV & XLSX" é selecionado, o e-mail reverte para apenas a pasta de trabalho do Excel.

### 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:

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 cada membro da origem que esteja em falta no destino.
4. Remove, opcionalmente, cada membro do destino que não exista na origem (modo espelho).

#### Direções

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

* **`SharedChannelToGroup`** - os membros de um Teams Shared Channel 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 Microsoft 365 para um Security Group, ou o inverso trocando a origem e o destino).
* **`GroupToSharedChannel`** - os membros de um grupo de origem são copiados para um Teams Shared Channel.

#### 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` (predefinição desativada). Com a remoção ativada, o destino é espelhado exatamente em relação à origem; com ela desativada, o runbook é apenas de adição.

#### Expansão de membros do grupo

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

#### Gestão de convidados

`IncludeGuests` (predefinição desativada) 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 Channels frequentemente rejeitam convidados, por isso isto vem desativado 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 à equipa anfitriã.

#### Execução de teste

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

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

* **`SendEmailReport`** envia um e-mail com a marca RealmJoin (via `Send-RjReportEmail`) com estatísticas da execução e um anexo CSV que lista cada alteração individual. O remetente é obtido de `RJReport.EmailSender` configuração.
* **`CreateDownloadLink`** carrega o mesmo CSV para um Storage Account e devolve um link de download SAS com prazo limitado (também incorporado no e-mail quando ambas as opções estão ativadas). O Storage Account de destino é obtido de `RJReport.StorageAccount.*` configurações.

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

#### Agendamento

Concebido para ser executado sem supervisão segundo um 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 e-mail

O e-mail do relatório respeita a configuração opcional `RJReport.Branding.*` do Tenant:

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

Quando estas definições não estão configuradas, são usados os gráficos e cores padrão do RealmJoin. Uma imagem que não possa ser descarregada ou validada, ou um valor de cor inválido, nunca impede o e-mail do relatório – em vez disso, é usado o padrão correspondente.

Instruções de configuração e requisitos de imagem: [Branding do e-mail](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.9)<br>Microsoft.Graph.Authentication (>= 2.39.0)<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 é 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 e-mail do relatório*
  * Mail.Send *(opcional — funcionalidade: relatório por e-mail)*
    * *Envia o relatório de sincronização via Send-RjReportEmail quando o relatório por e-mail está ativado*

### Parâmetros

#### Direção

Seleciona o que é sincronizado com o quê. SharedChannelToGroup copia os membros do Shared Channel para o grupo de destino, GroupToGroup copia os membros do grupo de origem para o grupo de destino e GroupToSharedChannel copia os membros do grupo de origem para o Shared Channel.

| Propriedade                | Valor                       |
| -------------------------- | --------------------------- |
| Obrigatório                | verdadeiro                  |
| Valor predefinido          |                             |
| Tipo                       | Texto                       |
| Nome de exibição no portal | O que deve ser sincronizado |

**Opções do portal**

| Opção do portal                             | Valor |
| ------------------------------------------- | ----- |
| Membros do Shared Channel -> Security Group |       |
| Membros do grupo -> grupo                   |       |
| Membros do grupo -> Shared Channel          |       |

#### TeamId

ID do objeto da equipa que aloja o Shared Channel. Usado apenas nas direções de Shared Channel.

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

#### ChannelName

Nome de apresentação exato do Shared Channel dentro da equipa selecionada. Usado apenas nas direções de Shared Channel.

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

#### SourceGroupId

ID do objeto do grupo de origem cujos membros são copiados. Usado para as direções de origem do grupo.

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

#### TargetGroupId

ID do objeto do Security Group de destino que recebe os membros. Usado para as direções de destino do grupo.

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

#### RemoveExtraMembers

Quando ativado, os membros que existem apenas no destino e não na origem são removidos para que o destino espelhe a origem. Quando desativado (predefinição), o runbook apenas adiciona membros em falta.

| Propriedade                | Valor                                                             |
| -------------------------- | ----------------------------------------------------------------- |
| Obrigatório                | falso                                                             |
| Valor predefinido          | Falso                                                             |
| Tipo                       | Booleano                                                          |
| Nome de exibição no portal | Remover membros que existem apenas no destino (espelhar a origem) |

#### IncludeGuests

Quando ativado, os utilizadores convidados são incluídos na sincronização e podem ser adicionados ou removidos. Quando desativado (predefinição), os convidados são ignorados e nunca são adicionados nem removidos.

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

#### RemoveFromTeam

Apenas relevante para GroupToSharedChannel. Quando ativado, remover um membro do Shared Channel também remove esse utilizador da associação à equipa anfitriã. Quando desativado (predefinição), apenas a associação ao canal é removida.

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

#### WhatIfMode

Quando ativado, o runbook apenas regista as alterações que faria sem gravar nada.

| Propriedade                | Valor                                              |
| -------------------------- | -------------------------------------------------- |
| Obrigatório                | falso                                              |
| Valor predefinido          | Falso                                              |
| Tipo                       | Booleano                                           |
| Nome de exibição no portal | Execução de teste (apenas registo, sem alterações) |

#### SendEmailReport

Quando ativado, é enviado um relatório por e-mail com a marca RealmJoin via Send-RjReportEmail após a execução. Ao ativar isto, são revelados os campos do endereço do destinatário e do formato do ficheiro de relatório.

| Propriedade                | Valor                       |
| -------------------------- | --------------------------- |
| Obrigatório                | falso                       |
| Valor predefinido          | Falso                       |
| Tipo                       | Booleano                    |
| Nome de exibição no portal | Enviar relatório por e-mail |

**Opções do portal**

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

#### EmailTo

Endereço(s) de e-mail dos destinatários para o relatório (separados por vírgulas). Só é usado quando SendEmailReport está ativado.

| Propriedade                | Valor                                                  |
| -------------------------- | ------------------------------------------------------ |
| Obrigatório                | falso                                                  |
| Valor predefinido          |                                                        |
| Tipo                       | Texto                                                  |
| Nome de exibição no portal | Enviar relatório para (endereço(s) de e-mail)          |
| Oculto no portal           | sim (predefinido através da personalização do runbook) |

#### EmailFrom

Caixa de correio do remetente para o relatório. Associada à configuração RJReport.EmailSender da organização.

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

#### BrandingHeaderImageUrl

URL HTTPS pública opcional de uma imagem de cabeçalho personalizada (PNG/JPEG/GIF, máx. 200 KB) para o e-mail do relatório. Obtida da configuração do Tenant RJReport.Branding.HeaderImageUrl. Quando vazio, é usada a imagem de cabeçalho padrão do RealmJoin.

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

#### BrandingFooterImageUrl

URL HTTPS pública opcional de uma imagem de rodapé personalizada (PNG/JPEG/GIF, máx. 200 KB) para o e-mail do relatório. Obtida da configuração do Tenant RJReport.Branding.FooterImageUrl. Quando vazio, é usada a imagem de rodapé padrão do RealmJoin.

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

#### BrandingFooterLink

URL opcional para a qual a imagem de rodapé aponta. Obtida da configuração do Tenant RJReport.Branding.FooterLink. Quando vazio, é usada a ligação padrão (<https://www.realmjoin.com>).

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

#### BrandingAccentColor

Substituição opcional da cor de acento (hex de 6 dígitos, por exemplo '#0052cc') para o modelo de e-mail do relatório. Obtida da configuração do Tenant RJReport.Branding.AccentColor. Quando vazio ou inválido, é usada a cor de acento padrão do RealmJoin.

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

#### BrandingTextColor

Substituição opcional da cor do texto (hex de 6 dígitos) para o modelo de e-mail do relatório. Obtida da configuração do Tenant RJReport.Branding.TextColor. Quando vazio ou inválido, é usada a cor de texto padrão do RealmJoin.

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

#### ReportFileFormat

Controla quais formatos de ficheiro do relatório são gerados e entregues: "Apenas CSV", "CSV e XLSX" (predefinição) ou "Apenas XLSX".

| Propriedade                | Valor                                                  |
| -------------------------- | ------------------------------------------------------ |
| Obrigatório                | falso                                                  |
| Valor predefinido          | CSV e XLSX                                             |
| Tipo                       | Texto                                                  |
| Nome de exibição no portal | Formato do arquivo 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      |       |
| Somente CSV     |       |
| Somente XLSX    |       |

#### CreateDownloadLink

Quando ativado, o(s) ficheiro(s) de relatório são carregados para um Storage Account e são devolvidos links de download com prazo limitado (e incluídos no relatório por e-mail se isso também estiver ativado).

| Propriedade                | Valor                                                                              |
| -------------------------- | ---------------------------------------------------------------------------------- |
| Obrigatório                | falso                                                                              |
| Valor predefinido          | Falso                                                                              |
| Tipo                       | Booleano                                                                           |
| Nome de exibição no portal | Criar um link de download do relatório (carregar o relatório para o armazenamento) |

**Opções do portal**

| Opção do portal                                           | Valor |
| --------------------------------------------------------- | ----- |
| Sim - carregar o relatório e devolver um link de download |       |
| Não - não criar um link de download                       |       |

#### ContainerName

Contentor do Storage usado para o carregamento. Configurado por runbook.

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

#### ResourceGroupName

Grupo de recursos que contém o Storage Account. Associado a RJReport.StorageAccount.ResourceGroup.

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

#### StorageAccountName

Storage Account usado para o carregamento. Associado a RJReport.StorageAccount.StorageAccountName.

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

#### LinkExpiryDays

Dias até o link de download gerado expirar. Associado a 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/automacao/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/pt/automacao/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.
