Wie in meinem vorherigen Beitrag beschrieben aktiviert Microsoft in Teams die Möglichkeit einen Kanal zu archivieren. Offiziell beschreibt es noch keine Dokumentation, Teams unterstützt aber bereits die Archivierung und Wiederherstellung von einem Teams Kanal über Microsoft Graph.
Es ist auch nicht besonders aufwendig. Man nimmt die Graph API für Archivieren von einem Team und ändert es auf Teams Kanal. Für die Archivierung des Teams Kanals benötigst du in Graph folgende Berechtigungen.
- Team.ReadBasic.All
- ChannelSettings.ReadWrite.All
Mit Delegated Permissions muss das ausführende Konto Besitzer von dem Team oder Kanal sein, oder die Rolle Teams Administrator nutzen.
Content
Teams Kanal archivieren
Ich hole mir über Microsoft Graph die Team ID (ID der Microsoft 365 Gruppe) und die ID des Teams Kanals. Mit den zwei Angaben wird der Kanal archiviert.
Hinweis
Zum aktuellen Zeitpunkt ignoriert die API eine Angabe die Site Collection in einen Read-only Modus zu setzen (setSpoSiteReadOnlyForMembers). Der Kanal wird archiviert, die API gibt aber keinen Fehler über die Situation der Site Collection / des SharePoint Ordners zurück.
Import-Module Microsoft.Graph.Authentication
Connect-MgGraph -Scopes Team.ReadBasic.All, ChannelSettings.ReadWrite.All
$TeamName = "Tech Community"
$ChannelName = "Project Taurus"
# Define the URL to get the team ID from Microsoft Graph API and send a GET request to the URL to store the team ID
$Url = "https://graph.microsoft.com/beta/teams?`$filter=displayName eq '$TeamName'"
$TeamID = (Invoke-MgGraphRequest -Method Get -Uri $Url).value.id
# Define the URL to get the channel ID from Microsoft Graph API and send a GET request to the URL to store the channel ID
$Url = "https://graph.microsoft.com/beta/teams/$TeamID/channels?`$filter=displayName eq '$ChannelName'"
$ChannelID = (Invoke-MgGraphRequest -Method Get -Uri $Url).value.id
# Define the URL to archive the channel and send a POST request to the URL to archive the channel. Value of setSpoSiteReadOnlyForMembers is set to true to make the SharePoint site read-only for members.
$Url = "https://graph.microsoft.com/beta/teams/$TeamID/channels/$ChannelID/archive?setSpoSiteReadOnlyForMembers=true"
Invoke-MgGraphRequest -Method POST -Uri $Url -ContentType "application/json"
Status von Teams Kanal auswerten
Ein Teams Kanal inkludiert das Property isArchived mit dem Wert true oder false. Eine einfache Abfrage gibt den Status zurück.
# Define the URL to get the ID, display name, and archive status of a specific channel from Microsoft Graph API and send a GET request to the URL
$Url = "https://graph.microsoft.com/beta/teams/$TeamID/channels/$ChannelID`?`$select=id,displayName,isArchived"
Invoke-MgGraphRequest -Method Get -Uri $Url
Teams Kanal wiederherstellen
So einfach wie die Archivierung funktioniert auch die Wiederherstellung. Mit einer Wiederherstellung löst es die Archivierung auf. Zwischen Archivierung und Wiederherstellung sollte zumindest eine Minute liegen, andernfalls gibt die API zurück das System sei noch mit einem Archivierungsvorgang beschäftigt.
# Define the URL to unarchive the channel and send a POST request to the URL to unarchive the channel
$Url = "https://graph.microsoft.com/beta/teams/$TeamID/channels/$ChannelID/unarchive"
Invoke-MgGraphRequest -Method POST -Uri $Url -ContentType "application/json"
# Define the URL to get the ID, display name, and archive status of a specific channel from Microsoft Graph API and send a GET request to the URL
$Url = "https://graph.microsoft.com/beta/teams/$TeamID/channels/$ChannelID`?`$select=id,displayName,isArchived"
Invoke-MgGraphRequest -Method Get -Uri $Url