Microsoft Teams remove Wiki tab with Microsoft Graph

Hallo zusammen,

Ich habe mich damit befasst, wie man das Wiki Tab aus einem Teams Channel entfernt.

Das geht nur über die Microsoft Graph API für Microsoft Teams.

Dafür muss man zuerst eine Applikation in Azure Active Directory registrieren.

Nun müssen die Berechtigungen für die Applikation vergeben werden

Microsoft Graph auswählen

Dann Application Permission auswählen

Und die benötigten Berechtigungen auswählen

Anschliessend die Berechtigungen als Administator zustimmen (Grant Admin Consent).

Nun braucht es noch ein ClientSecret

Dazu muss man einen Namen für das Secret vergeben und die Dauer der Gültigkeit angeben.

Im Team "IcewolfDemo" gibt es im "Channel3" ein Wiki Tab.

Nun das ganze per PowerShell.

###############################################################################
# Get AccessToken
###############################################################################

#Variables
$ClientID = "546f064a-baa2-4eb9-8b68-70c79b91942b"
$ClientSecret = "YourClientSecret"
$tenantID = "icewolfch.onmicrosoft.com"
$scope = "https://graph.microsoft.com/.default"
$authority = "https://login.microsoftonline.com/$tenantID/oauth2/v2.0/token"

$Body = @{
  "grant_type"    = "client_credentials";
  "client_id"     = "$ClientID";
  "client_secret" = "$ClientSecret";
  "scope"      = "$scope";
}

#Get AccessToken
$result = Invoke-RestMethod -Method POST -uri $authority -Body $body
$AccessToken = $result.access_token
$AccessToken

Mit dem AccessToken kann man nun die Rest Abfragen durchführen.

#Get O365 Groups
$uri = 'https://graph.microsoft.com/v1.0/groups'
$query = Invoke-RestMethod -Method GET -Uri $uri -ContentType "application/json" -Headers @{Authorization = "Bearer $AccessToken"}
$query.Value | where {$_.groupTypes -eq "Unified"} | ft id, DisplayName, mail, GroupTypes

#IcewolfDemo
$TeamID = "bc8b2580-47ac-46c9-92cb-01db782d1eec"

Nun frage ich die Channels ab

#Get Channels
$uri2 = 'https://graph.microsoft.com/v1.0/teams/'+$TeamID+'/channels'
$query2 = Invoke-RestMethod -Method GET -Uri $uri2 -ContentType "application/json" -Headers @{Authorization = "Bearer $AccessToken"}
$query2.value

Nun die Tabs des Channel3

#Get Tabs
#Channel3
$ChannelID = "19:ab14bfad5c5c446e94871f524c3fd00a@thread.tacv2"

$uri3 = 'https://graph.microsoft.com/v1.0/teams/'+$TeamID+'/channels/'+$ChannelID+'/tabs'
$query3 = Invoke-RestMethod -Method GET -Uri $uri3 -ContentType "application/json" -Headers @{Authorization = "Bearer $AccessToken"}
$query3.value | fl

$wikitabID = ($query3.value | where {$_.displayName -eq "Wiki"}).id

Mit der ID des WikiTabs kann man nur den Tab löschen

#Delete Wiki Tab
$uri4 = 'https://graph.microsoft.com/v1.0/teams/'+$TeamID+'/channels/'+$ChannelID+'/tabs/'+$wikitabID
$query4 = Invoke-RestMethod -Method DELETE -Uri $uri4 -ContentType "application/json" -Headers @{Authorization = "Bearer $AccessToken"}

Juhuu, das Wiki Tab ist weg

Liebe Grüsse
Andres Bohren