Shared Channel-Besitzer synchronisieren, geplant
Die Mitglieder einer Gruppe zu Besitzern zugeordneter Teams und Shared Channels machen
Beschreibung
Freigegebene Kanäle erben nicht die Besitzer ihres Teams. Für jedes in der Zuordnung genannte Team werden die Mitglieder der zugeordneten Security Group zu Besitzern des Teams und jedes von ihm gehosteten freigegebenen Kanals gemacht. Es fügt nur hinzu, entfernt nie; neue freigegebene Kanäle werden beim nächsten Lauf übernommen. Ein Trockenlauf zeigt die Änderungen, ohne sie anzuwenden. Der Bericht kann per E-Mail gesendet oder als Download-Link bereitgestellt werden.
So funktioniert es
Bei jedem Lauf führt das Runbook Folgendes aus:
Liest die Zuordnung von Teamnamen zu Besitzergruppen aus der Org-Einstellung
SharedChannelOwners.Mapping.Sucht das Team anhand seines genauen Anzeigenamens.
Erweitert die Besitzergruppe dieses Eintrags auf ihre transitive Benutzer Mitglieder (Gäste werden übersprungen – sie können keinem freigegebenen Kanal angehören).
Stellt sicher, dass diese Benutzer Besitzer des Teams und jedes gehosteten freigegebenen Kanals des Teams sind.
Das Runbook ist nur ergänzend: Es stuft vorhandene Besitzer oder Mitglieder niemals herab und entfernt sie nie. Neu erstellte freigegebene Kanäle werden daher beim nächsten geplanten Lauf automatisch übernommen, ohne bereits Vorhandenes zu beeinträchtigen.
Zuordnungskonfiguration
Die Zuordnung liegt zentral in den RealmJoin-Org-Einstellungen (Runbook Customization → Einstellungen → SharedChannelOwners.Mapping) { TeamName, OwnerGroupId } Objekte, wobei TeamName der exakte Anzeigename des Teams. Die versteckte TeamOwnerGroupMapping Parameter wird aus dieser Einstellung injiziert; das Runbook akzeptiert ihn entweder als strukturiertes Array (empfohlene Untereinstellungsform) oder als JSON-String und normalisiert beides.
Bereit verwendbares Beispiel für die Org-Einstellungen:
{
"Settings": {
"SharedChannelOwners": {
"Mapping": [
{ "TeamName": "EXT Service A", "OwnerGroupId": "11111111-1111-1111-1111-111111111111" },
{ "TeamName": "EXT Service B", "OwnerGroupId": "22222222-2222-2222-2222-222222222222" }
]
}
}
}Teamabgleich
Jeder Zuordnungseintrag zielt auf ein ausdrücklich benanntes Team:
Ein Team wird anhand seines genauen Anzeigenamens (Groß-/Kleinschreibung wird ignoriert, entsprechend Microsoft Graph; führende und nachgestellte Leerzeichen im konfigurierten Namen werden ignoriert). Nur dieses Team wird verarbeitet – es gibt kein Präfix- oder Wildcard-Verhalten, also wirkt sich der Eintrag
EXT Service Aniemals aufEXT Service A Backupoder Ähnliches aus.Anzeigenamen sind in Entra ID nicht garantiert eindeutig. Wenn mehrere Teams denselben konfigurierten Namen teilen, wird die Besitzergruppe auf alle sie alle nicht gefunden gemeldet und übersprungen.
Teamauswahl
Für jedes konfigurierte TeamName führt das Runbook eine Graph displayName eq '...' Abfrage aus und behält nur Microsoft 365-Gruppen bei, die als ein Team.
Was geändert wird
Team (optional,
IncludeTeamOwners, Standardwert an): Die Benutzer der Besitzergruppe werden als Besitzer und Mitglieder der übergeordneten M365-Gruppe hinzugefügt. Die Teammitgliedschaft ist auch die technische Voraussetzung für den Besitz eines freigegebenen Kanals, daher aktiviert dieser Schritt den Kanal-Schritt.Freigegebene Kanäle: für jeden gehosteten freigegebenen Kanal (
membershipType eq 'shared'), wird sichergestellt, dass jeder Benutzer der Besitzergruppe Kanal Besitzer - direkt hinzugefügt, falls er fehlt, oder hochgestuft, wenn er bereits Mitglied ist. Wenn ein direktes Hinzufügen als Besitzer abgelehnt wird (z. B. aufgrund von Verzögerung bei der Mitgliedschaftsreplikation), fällt das Runbook darauf zurück, den Benutzer zuerst als Mitglied hinzuzufügen und dann hochzustufen.
Trockenlauf
Wähle Testlauf? aus, um zu protokollieren, was sich ändern würde, ohne etwas zu schreiben. Jeder Lauf gibt vorab die Teams aus, die verarbeitet werden (mit ihrer Besitzergruppe), sowie alle konfigurierten Teamnamen, die nicht gefunden wurden; in einem Trockenlauf werden die Änderungen als geplante Änderungen aufgeführt.
Zeitplanung
Entwickelt für den unbeaufsichtigten Betrieb nach Zeitplan. Da die Konfiguration zentral in den Org-Einstellungen liegt und das Runbook nur ergänzt und idempotent ist, hält ein einzelner wiederkehrender Zeitplan alle zugeordneten Teams und ihre freigegebenen Kanäle synchron, wenn Personen und Kanäle hinzukommen oder wegfallen.
Berichtszustellung
Jeder Lauf schreibt seine Ergebnisse auf die Registerkarte Output Data des RealmJoin-Portals: eine Zusammenfassung, die vorgenommenen (oder in einem Trockenlauf geplanten) Änderungen, die übersprungenen Teams und Benutzer mit dem Grund (Team nicht gefunden, leere Besitzergruppe, Gastbenutzer, fehlgeschlagene Änderungen) sowie die Besitzerzuweisungen, die bereits vorhanden waren. Jede Tabelle kann dort nach Excel exportiert werden.
Berichtsdateien werden nur generiert, wenn eine Zustellmethode über die Berichtszustellung Option (E-Mail und/oder Download-Link): eine Zusammenfassung pro Team und eine Detailliste pro Änderung, als CSV-Dateien und/oder als Excel-Arbeitsmappe. Mit Nur Ausgabedaten ausgewählt werden, werden die Ergebnisse direkt in der Registerkarte Output Data gelesen. E-Mail-Zustellung und Download-Link-Erstellung sind unabhängig und können kombiniert werden; wenn beide ausgewählt sind, werden die Download-Links auch in die E-Mail eingebettet.
Für den Download-Link werden die Berichtsdateien in das in den RJReport.StorageAccount.* Tenant-Einstellungen hochgeladen, und zeitlich begrenzte SAS-Download-Links werden zurückgegeben. Der Storage-Upload authentifiziert sich mit der verwalteten Identität des Automation-Kontos; diese Identität benötigt die Storage Account Contributor RBAC-Rolle auf dem Ziel-Storage Account (dies ist eine Azure-RBAC-Zuweisung, keine Graph-Anwendungsberechtigung).
Zeitpläne, die mit den früheren Zustellungsbezeichnungen gespeichert wurden (zum Beispiel E-Mail-Bericht) behalten ihre Zustellung bei. Wenn ein solcher Zeitplan zur Bearbeitung geöffnet wird, zeigt die Option Nur Ausgabedaten an, obwohl die gespeicherte Zustellung aktiv bleibt; wählen Sie die Zustellung vor dem Speichern erneut aus, damit der Dialog mit dem übereinstimmt, was der Zeitplan tut.
Einrichtung für den E-Mail-Versand
Das Senden eines E-Mail-Berichts ist optional und erfolgt nur, wenn Bericht zusätzlich per E-Mail senden oder Bericht zusätzlich per E-Mail und Download-Link senden wird als Berichtszustellung ausgewählt; dann ist ein Empfänger erforderlich. Die von RealmJoin gebrandete E-Mail (gesendet über Send-RjRbReportEmail) enthält die Laufstatistiken und die Berichtsdateien als Anhänge. Die Absenderadresse wird aus dem RJReport.EmailSender Mandanten-Einstellung übernommen.
Dieses Runbook sendet E-Mails über die Microsoft Graph API. Um E-Mails über die Graph API zu senden, müssen Sie in der Runbook-Anpassung eine vorhandene E-Mail-Adresse konfigurieren.
Siehe die RealmJoin Report Settings Dokumentation für Details zu allen verfügbaren Einstellungen.
E-Mail-Branding
Die Berichts-E-Mail berücksichtigt die optionalen RJReport.Branding.* Mandanten-Einstellungen:
Header- und Footer-Bild - öffentliche HTTPS-URLs, PNG/JPEG/GIF, max. 200 KB jeweils
Footer-Link - Ziel des Fußzeilenbildes
Akzent- und Textfarbe - 6-stellige Hex-Werte, z. B.
#0052cc
Wenn diese Einstellungen nicht konfiguriert sind, werden die Standardgrafiken und -farben von RealmJoin verwendet. Ein Bild, das nicht heruntergeladen oder validiert werden kann, oder ein ungültiger Farbwert verhindert niemals die E-Mail des Berichts – stattdessen wird der entsprechende Standard verwendet.
Einrichtungsanweisungen und Bildanforderungen: E-Mail-Branding.
Ort
Organization → General → Sync Shared Channel Owners (Scheduled)
Vollständiger Runbook-Name
rjgit-org_general_sync-shared-channel-owners_scheduled
Details
Version
1.4.0
Erforderliche Module
RealmJoin.RunbookHelper (>= 0.8.9) Microsoft.Graph.Authentication (>= 2.39.0) Az.Accounts (>= 5.5.2)
Planbar
ja
Berechtigungen
Anwendungsberechtigungen
Typ: Microsoft Graph
Channel.ReadBasic.All
Listet /teams/{id}/channels auf, um die freigegebenen Kanäle zu finden, die verarbeitet werden sollen
ChannelMember.ReadWrite.All
Liest Kanalmitglieder und fügt Benutzer hinzu oder stuft sie zu freigegebenen Kanalbesitzern hoch
Group.ReadWrite.All
Listet Teams auf, liest die Namen der Besitzergruppen und Gruppenbesitzer und fügt fehlende Teambesitzer über /groups/{id}/owners/$ref hinzu
GroupMember.ReadWrite.All
Liest transitive Mitglieder der Besitzergruppe und fügt Benutzer zuerst als Teammitglieder hinzu
User.Read.All
Liest Benutzereigenschaften von Mitgliedern (UPN, userType) über transitiveMembers, um Gäste herauszufiltern
Mail.Send (optional — Funktion: E-Mail-Bericht)
Sendet die Sync-Bericht-E-Mail über Send-RjRbReportEmail, wenn die E-Mail-Zustellung ausgewählt ist
Organization.Read.All (optional — Funktion: E-Mail-Bericht)
Liest den Anzeigenamen des Tenant für die Berichts-E-Mail
Hinweise zu Berechtigungen
Azure Storage Account: Rolle „Storage Account Contributor“ für die verwaltete Identität des Automation-Kontos auf dem Ziel-Storage Account – der Upload ruft die Kontoschlüssel über listKeys ab (nur für die Download-Link-Optionen erforderlich)
Parameter
TeamOwnerGroupMapping
Liste der Teamnamen mit der Security Group, deren Mitglieder zu Besitzern werden. Aus der Mandanten-Einstellung SharedChannelOwners.Mapping entnommen.
Erforderlich
nein
Standardwert
[]
Typ
Objekt
Im Portal ausgeblendet
ja (vorkonfiguriert über Runbook-Anpassung)
IncludeTeamOwners
Macht die Gruppenmitglieder außerdem zu Besitzern und Mitgliedern des Teams selbst, was für den Besitz seiner Kanäle erforderlich ist.
Erforderlich
nein
Standardwert
Wahr
Typ
Boolesch
Anzeigename im Portal
Sie auch zu Team-Besitzern machen?
WhatIfMode
Protokolliert nur, was sich ändern würde, ohne etwas zu schreiben.
Erforderlich
nein
Standardwert
Falsch
Typ
Boolesch
Anzeigename im Portal
Testlauf?
SendEmailReport
Sendet den Bericht an die E-Mail-Adresse des Empfängers.
Erforderlich
nein
Standardwert
Falsch
Typ
Boolesch
Im Portal ausgeblendet
ja (vorkonfiguriert über Runbook-Anpassung)
EmailTo
Senden Sie den Bericht an diese Adressen. Trennen Sie mehrere mit Kommas; jeder Empfänger erhält eine separate E-Mail.
Erforderlich
nein
Standardwert
Typ
Zeichenfolge
Anzeigename im Portal
E-Mail-Adresse(n) des Empfängers
Im Portal ausgeblendet
ja (vorkonfiguriert über Runbook-Anpassung)
EmailFrom
Absenderadresse der Berichts-E-Mail. Wird aus der Mandanten-Einstellung RJReport.EmailSender übernommen.
Erforderlich
nein
Standardwert
Typ
Zeichenfolge
Im Portal ausgeblendet
ja (vorkonfiguriert über Runbook-Anpassung)
BrandingHeaderImageUrl
Headerbild der Berichts-E-Mail (HTTPS-URL, PNG/JPEG/GIF, max. 200 KB). Wird aus der Mandanten-Einstellung RJReport.Branding.HeaderImageUrl übernommen; bei leerem Wert wird der standardmäßige RealmJoin-Header verwendet.
Erforderlich
nein
Standardwert
Typ
Zeichenfolge
Im Portal ausgeblendet
ja (vorkonfiguriert über Runbook-Anpassung)
BrandingFooterImageUrl
Footerbild der Berichts-E-Mail (HTTPS-URL, PNG/JPEG/GIF, max. 200 KB). Wird aus der Mandanten-Einstellung RJReport.Branding.FooterImageUrl übernommen; bei leerem Wert wird der standardmäßige RealmJoin-Footer verwendet.
Erforderlich
nein
Standardwert
Typ
Zeichenfolge
Im Portal ausgeblendet
ja (vorkonfiguriert über Runbook-Anpassung)
BrandingFooterLink
Link hinter dem Footerbild der Berichts-E-Mail. Wird aus der Mandanten-Einstellung RJReport.Branding.FooterLink übernommen; bei leerem Wert wird realmjoin.com verwendet.
Erforderlich
nein
Standardwert
Typ
Zeichenfolge
Im Portal ausgeblendet
ja (vorkonfiguriert über Runbook-Anpassung)
BrandingAccentColor
Akzentfarbe der Berichts-E-Mail als 6-stelliger Hexwert. Wird aus der Mandanten-Einstellung RJReport.Branding.AccentColor übernommen; bei leerem oder ungültigem Wert wird der Standard von RealmJoin verwendet.
Erforderlich
nein
Standardwert
Typ
Zeichenfolge
Im Portal ausgeblendet
ja (vorkonfiguriert über Runbook-Anpassung)
BrandingTextColor
Textfarbe der Berichts-E-Mail als 6-stelliger Hexwert. Wird aus der Mandanten-Einstellung RJReport.Branding.TextColor übernommen; bei leerem oder ungültigem Wert wird der Standard von RealmJoin verwendet.
Erforderlich
nein
Standardwert
Typ
Zeichenfolge
Im Portal ausgeblendet
ja (vorkonfiguriert über Runbook-Anpassung)
ReportFileFormat
Stellen Sie den Bericht als CSV, als Excel-Arbeitsmappe oder beides bereit.
Erforderlich
nein
Standardwert
CSV & XLSX
Typ
Zeichenfolge
Anzeigename im Portal
Berichtsdateiformat
Im Portal ausgeblendet
ja (vorkonfiguriert über Runbook-Anpassung)
Portaloptionen
CSV & XLSX
CSV & XLSX
Nur CSV
Nur CSV
Nur XLSX
Nur XLSX
CreateDownloadLink
Laden Sie den Bericht außerdem hoch und geben Sie einen Downloadlink zurück, der nach einigen Tagen abläuft.
Erforderlich
nein
Standardwert
Falsch
Typ
Boolesch
Im Portal ausgeblendet
ja (vorkonfiguriert über Runbook-Anpassung)
ContainerName
Speichercontainer, in den die Berichtsdateien hochgeladen werden. Pro Runbook festlegen.
Erforderlich
nein
Standardwert
shared-channel-owners
Typ
Zeichenfolge
Im Portal ausgeblendet
ja (vorkonfiguriert über Runbook-Anpassung)
ResourceGroupName
Ressourcengruppe des Storage Account für Berichtshochladungen. Aus der Tenant-Einstellung RJReport.StorageAccount.ResourceGroup übernommen.
Erforderlich
nein
Standardwert
Typ
Zeichenfolge
Im Portal ausgeblendet
ja (vorkonfiguriert über Runbook-Anpassung)
StorageAccountName
Storage Account für Berichtshochladungen. Aus der Tenant-Einstellung RJReport.StorageAccount.StorageAccountName übernommen.
Erforderlich
nein
Standardwert
Typ
Zeichenfolge
Im Portal ausgeblendet
ja (vorkonfiguriert über Runbook-Anpassung)
LinkExpiryDays
Anzahl der Tage, die ein Downloadlink gültig bleibt. Aus der Tenant-Einstellung RJReport.StorageAccount.LinkExpiryDays übernommen.
Erforderlich
nein
Standardwert
6
Typ
Int32
Im Portal ausgeblendet
ja (vorkonfiguriert über Runbook-Anpassung)
Zuletzt aktualisiert
War das hilfreich?