> 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-sharedchannel-owners_scheduled.md).

# Sincronizar proprietários de canais partilhados agendado

### Descrição

Os canais partilhados do Teams não herdam a propriedade da sua equipa pai. Esta runbook agendada fecha essa lacuna: para cada equipa nomeada num mapeamento, garante que os membros de um grupo de segurança mapeado são proprietários da equipa e de cada canal partilhado que a equipa aloja. O mapeamento do nome da equipa para o grupo proprietário é mantido centralmente como uma definição da organização RealmJoin. A runbook é apenas de adição — os proprietários e membros existentes nunca são removidos — pelo que os canais partilhados recém-criados são simplesmente apanhados na próxima execução. Opcionalmente, pode enviar um relatório por email e/ou carregar os resultados CSV como uma ligação de transferência. Consulte a documentação que a acompanha para as regras de mapeamento e configuração.

### Como funciona

Em cada execução, a runbook:

1. Lê o mapeamento do nome da equipa para o grupo proprietário a partir da definição da organização `SharedChannelOwners.Mapping`.
2. Para cada entrada, procura a equipa pelo seu **nome de exibição exato**.
3. Expande o grupo proprietário dessa entrada para os seus membros transitivos de **utilizador** membros (os convidados são ignorados — não podem pertencer a um canal partilhado).
4. Garante que esses utilizadores são proprietários da equipa e de cada **alojado** canal partilhado da equipa.

A runbook é **apenas de adição**: nunca rebaixa nem remove proprietários ou membros existentes. Assim, os canais partilhados recém-criados são automaticamente apanhados na próxima execução agendada, sem perturbar nada que já esteja em vigor.

#### Configuração do mapeamento

O mapeamento vive centralmente nas definições da organização RealmJoin (Personalização do Runbook → `bloco Definições` → `SharedChannelOwners.Mapping`) por isso é mantido uma vez e partilhado por cada agendamento. É uma lista de `{ TeamName, OwnerGroupId }` objetos, em que `TeamName` é o **nome de exibição exato da equipa** (ver a *secção Notas* para um exemplo pronto a usar). O parâmetro oculto `TeamOwnerGroupMapping` é injetado a partir desta definição; a runbook aceita-o quer como um array estruturado (formato de subdefinição recomendado) quer como uma string JSON e normaliza ambos.

#### Correspondência de equipas

Cada entrada de mapeamento visa uma equipa nomeada explicitamente:

* Uma equipa é correspondida pelo seu **nome de exibição exato** (sem distinção entre maiúsculas e minúsculas, consistente com Microsoft Graph; os espaços em branco em redor no nome configurado são ignorados). Só essa equipa é processada — não há comportamento de prefixo nem de wildcard, por isso nomear uma entrada `EXT Service A` nunca afeta `EXT Service A Backup` ou semelhante.
* Os nomes de exibição não são garantidamente únicos em Entra ID. Se várias equipas partilharem o nome configurado, o grupo proprietário é aplicado a **todas** elas. Se nenhuma equipa corresponder, a entrada é reportada como *não encontrada* e ignorada.

#### Seleção da equipa

Para cada `TeamName` configurado, a runbook executa uma pesquisa Graph `displayName eq '...'` e mantém apenas grupos Microsoft 365 que estão aprovisionados como um **Team**.

#### O que é alterado

* **Equipa (opcional, `IncludeTeamOwners`, por predefinição ativado):** os utilizadores do grupo proprietário são adicionados como proprietários e membros do grupo M365 pai. A pertença à equipa também é o pré-requisito técnico para se tornar proprietário de um canal partilhado, pelo que esta etapa habilita a etapa do canal.
* **Canais partilhados:** para cada canal partilhado alojado (`membershipType eq 'shared'`), cada utilizador do grupo proprietário é garantido como um **proprietário do canal** - adicionado diretamente se estiver ausente, ou promovido se já for membro. Se uma adição direta de proprietário for rejeitada (por exemplo, devido a atraso na replicação da pertença), a runbook recorre a adicionar primeiro o utilizador como membro e depois promovê-lo.

#### Execução de teste

Defina **`WhatIfMode`** para registar o que mudaria sem escrever nada. Neste modo, a runbook imprime, antecipadamente, as equipas que processaria (com o respetivo grupo proprietário) e quaisquer nomes de equipas configurados que não foram encontrados.

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

* **`SendEmailReport`** envia um email com a marca RealmJoin (via `Send-RjReportEmail`) com estatísticas da execução e dois anexos CSV: um resumo por equipa e uma lista detalhada por alteração. O remetente é retirado da `RJReport.EmailSender` definição.
* **`CreateDownloadLink`** carrega os mesmos CSVs para uma Storage Account e devolve ligações SAS de transferência com tempo limitado (também incorporadas no email quando ambas as opções estão ativadas). A Storage Account de destino é retirada das `RJReport.StorageAccount.*` definições.

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

#### Agendamento

Concebido para ser executado sem supervisão segundo um agendamento. Como a configuração é centralizada nas definições da organização e a runbook é apenas de adição e idempotente, um único agendamento recorrente mantém todas as equipas mapeadas e os respetivos canais partilhados sincronizados à medida que pessoas e canais entram e saem.

### Localização

Organização → Geral → Sincronizar proprietários de canais partilhados (Agendado)

**Nome completo do runbook**

rjgit-org\_general\_sync-sharedchannel-owners\_scheduled

### Permissões

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

* **Tipo**: Microsoft Graph
  * Group.ReadWrite.All
  * GroupMember.ReadWrite.All
  * Channel.ReadBasic.All
  * ChannelMember.ReadWrite.All
  * Mail.Send

### Parâmetros

#### TeamOwnerGroupMapping

Mapeamento de um nome de exibição exato da equipa para um id de objeto de grupo de segurança proprietário, por exemplo \[{ "TeamName": "EXT Service A", "OwnerGroupId": "00000000-0000-0000-0000-000000000000" }]. Parâmetro oculto, associado à definição da organização "SharedChannelOwners.Mapping". O portal RealmJoin injeta esse valor; a runbook aceita-o quer como objeto/array desserializado (subdefinições estruturadas) quer como uma string JSON e normaliza ambos.

| Propriedade  | Valor  |
| ------------ | ------ |
| Obrigatório  | false  |
| Valor padrão | \[]    |
| Tipo         | Objeto |

#### IncludeTeamOwners

Quando ativado (predefinição), os membros do grupo proprietário também são garantidos como proprietários e membros da própria equipa pai (proprietários/membros do grupo Microsoft 365). A pertença à equipa também é o pré-requisito para a propriedade do canal.

| Propriedade  | Valor      |
| ------------ | ---------- |
| Obrigatório  | false      |
| Valor padrão | Verdadeiro |
| Tipo         | Booleano   |

#### WhatIfMode

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

| Propriedade  | Valor    |
| ------------ | -------- |
| Obrigatório  | false    |
| Valor padrão | Falso    |
| Tipo         | Booleano |

#### SendEmailReport

Quando ativado, é enviado após a execução um relatório de email com a marca RealmJoin via Send-RjReportEmail. O corpo contém estatísticas da execução e dois anexos CSV (resumo por equipa e detalhe por alteração).

| Propriedade  | Valor    |
| ------------ | -------- |
| Obrigatório  | false    |
| Valor padrão | Falso    |
| Tipo         | Booleano |

#### EmailTo

Endereço(s) de email dos destinatários do relatório (separados por vírgulas). Usado apenas quando SendEmailReport está ativado.

| Propriedade  | Valor                |
| ------------ | -------------------- |
| Obrigatório  | false                |
| Valor padrão |                      |
| Tipo         | Cadeia de caracteres |

#### EmailFrom

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

| Propriedade  | Valor                |
| ------------ | -------------------- |
| Obrigatório  | false                |
| Valor padrão |                      |
| Tipo         | Cadeia de caracteres |

#### CreateDownloadLink

Quando ativado, os relatórios CSV são carregados para uma Storage Account e é devolvida uma ligação de transferência com tempo limitado (e incluída no relatório por email se isso também estiver ativado). Desativado por predefinição.

| Propriedade  | Valor    |
| ------------ | -------- |
| Obrigatório  | false    |
| Valor padrão | Falso    |
| Tipo         | Booleano |

#### ContainerName

Contentor de armazenamento usado para o carregamento. Configurado por runbook (não é uma definição global do RJReport).

| Propriedade  | Valor                 |
| ------------ | --------------------- |
| Obrigatório  | false                 |
| Valor padrão | shared-channel-owners |
| Tipo         | Cadeia de caracteres  |

#### ResourceGroupName

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

| Propriedade  | Valor                |
| ------------ | -------------------- |
| Obrigatório  | false                |
| Valor padrão |                      |
| Tipo         | Cadeia de caracteres |

#### StorageAccountName

Storage Account usada para o carregamento. Associada a "RJReport.StorageAccount.StorageAccountName".

| Propriedade  | Valor                |
| ------------ | -------------------- |
| Obrigatório  | false                |
| Valor padrão |                      |
| Tipo         | Cadeia de caracteres |

#### LinkExpiryDays

Dias até a ligação de transferência gerada expirar. Associado a "RJReport.StorageAccount.LinkExpiryDays".

| Propriedade  | Valor |
| ------------ | ----- |
| Obrigatório  | false |
| Valor padrão | 6     |
| Tipo         | Int32 |

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

```
GET https://docs.realmjoin.com/pt/automacao/runbooks/runbook-references/org/general/sync-sharedchannel-owners_scheduled.md?ask=<question>
```

The question should be specific, self-contained, and written in natural language.
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.
