Auslesen aller Microsoft Teams Gruppen mit Mitgliedern und Besitzern

The estimated reading time 3 minutes

HINWEIS: mit dem gezeigten Skript lassen sich nur Gruppen finden die mit TEAMs erstellt wurden, konvertierte O365 Gruppen werden nicht gefunden!

Hierzu gibt es einen anderen Workaround, siehe hier.

Hallo zusammen,

mir stellt sich immer wieder die Frage, wie man gewisse Auswertungen für Microsoft Teams in Office 365 durchführen kann. Heute möchte ich vorstellen, wie eine Auswertung der kompletten O365 Umgebung auf Teams Gruppen funktioniert. Zunächst habe ich mir die Frage gestellt, wie bekommt man heraus welche O365 Gruppen von Teams erstellt wurden und welche aus anderen Applikationen. Hierzu findet man nicht all zuviel im Internet.

Über die Oberfläche von Office 365 / Azure AD lässt sich leider nicht erkennen, ob die Gruppe mit Teams /Yammer etc. erstellt wurde.

Deshalb habe ich mich mit diesem Thema beschäftigt.

Um nun herauszufinden ob eine Gruppe von Teams erstellt wurde verbinde ich mich auf den Exchange Online via Powershell

Anleitung von Microsoft siehe hier

Ich habe dies bereits in meiner ISE integriert, wer dies also öfters macht kann sich auch meine Anleitung dazu ansehen LINK

Die PSSession zu Exchange Online ist zwingend erforderlich, da diese alle notwendigen cmdlets lädt.

Hierzu kann die ISE verwendet werden, da es hier sehr einfach ist Änderungen am Skript etc. durchzuführen.

Nun aber zur Auswertung:

verwendet habe ich das cmdlet: Get-UnifiedGroup. Der Output dieser Abfrage wird dann nochmals gefiltert

$teamsgroups = (Get-UnifiedGroup | Where-Object {($_.ProvisioningOption -eq "ExchangeProvisioningFlags:481") -or ($_.ProvisioningOption -eq "ExchangeProvisioningFlags:3552") }

Da nach dem Ausführen relativ viele Objekte zurückkommen, habe ich noch ein select eingebaut.

$teamsgroups = (Get-UnifiedGroup | Where-Object {($_.ProvisioningOption -eq "ExchangeProvisioningFlags:481") -or ($_.ProvisioningOption -eq "ExchangeProvisioningFlags:3552") } | Select-Object DisplayName,Alias,ProvisioningOption,SharePointSiteUrl,SharePointDocumentsUrl,AccessType,Language,ExchangeGuid,ManagedBy)

Damit kann werden bereits alle O365 Gruppen die Teams-Benutzer angelegt haben angezeigt.

Soweit gar nicht schlecht.

Jetzt möchte ich aber auch noch die Gruppenmitglieder angezeigt bekommen.

Get-UnifiedGroupLinks -Identity id -LinkType Members

Soweit auch noch nicht sonderlich schwierig.

Das ganze nun zusammenzubringen und dies halbwegs vernünftig darzustellen schon nicht mehr ganz so einfach.

Hierzu habe ich das nachfolgende Powershell Skript gebaut.

<#
    .SYNOPSIS

    script for showing all office 365 groups created by microsoft teams

    .DESCRIPTION
    


    .EXAMPLE
    no parameters needed 

    .Notes
    connect to exchange online first 
    https://technet.microsoft.com/en-us/library/jj984289(v=exchg.160).aspx
    or see https://blog.it-koehler.com/en/Archive/1589
  
    ---------------------------------------------------------------------------------
                                                                                 
    Script:       get-allteams-withmembers-0-1.ps1                                      
    Author:       A. Koehler; blog.it-koehler.com
    ModifyDate:   18/03/2018                                                        
    Usage:        identify all teams groups in office 365 and get members
    Version:      0.1
                                                                                  
    ---------------------------------------------------------------------------------
#>

#get all groups created with ms teams (filtered ExchangeProvisioningFlag:481)
#raw powershell command: Get-UnifiedGroup | Where-Object {$_.ProvisioningOption -eq "ExchangeProvisioningFlags:481" } | fl
$teamsgroups = (Get-UnifiedGroup | Where-Object {($_.ProvisioningOption -eq "ExchangeProvisioningFlags:481") -or ($_.ProvisioningOption -eq "ExchangeProvisioningFlags:3552") } | Select-Object DisplayName,Alias,ProvisioningOption,SharePointSiteUrl,SharePointDocumentsUrl,AccessType,Language,ExchangeGuid,ManagedBy) 
#notification for powershell
Write-Host "Getting Office 365 Groups created with MS Teams... " -ForegroundColor Green
#generate array for teamsgroups
$teams = @()
#loop to get information
ForEach ($group in $teamsgroups){
  #get-members of group
  $identity = (($group).ExchangeGuid)
  $members = (Get-UnifiedGroupLinks -Identity "$identity" -LinkType Members | Select-Object PrimarySMTPAddress) 
  $owners = (Get-UnifiedGroupLinks -Identity "$identity" -LinkType Owners | Select-Object PrimarySMTPAddress)   
  $member = (($members).primarySMTPAddress) | Out-String -Width 4096
  $owner = (($owners).primarySMTPAddress) | Out-String
  # Adding pscustomobjets entries to array
  $teams += [pscustomobject]@{
    DisplayName   = ($group).DisplayName
    Alias    = ($group).Alias
    AccessType = ($group).AccessType
    Language = ($group).Language
    Members = ("$member")
    Owner = ("$owner")
  }
}
#out put in GridView (external window)
Write-Host "Display in Grid View Window " -ForegroundColor Green
$teams | Out-GridView -Title "All Office365 Groups created in MS Teams" 
#out put in powershell
#$teams | Format-Table -AutoSize -Wrap  
#erase content of variables
$teams =$null
$member = $null

Dieses liest alle Gruppen mit Mitglieder und auch der aktuelle Manager /Owner. Somit haben wir einen Überblick über die aktuellen Teams Gruppen innerhalb des Unternehmens.

Kritik und Feedback ist gerne gesehen.

Viel Spaß beim Testen.

Was this article helpful?
YesNo
0 0 votes
Article Rating
Abonnieren
Benachrichtige mich bei
guest
2 Comments
Newest
Oldest Most Voted
Inline Feedbacks
View all comments
Marcel
Marcel
1 Jahr zuvor

Bei Mir passiert nichts nach dem Skript braucht man ein Module damit auch ein Fenster aufgeht?