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.
Bei Mir passiert nichts nach dem Skript braucht man ein Module damit auch ein Fenster aufgeht?
Hallo Marcel,
der Artikel ist veraltet, inzwischen kann das Teams PowerShell Modul auch alle Teams anzeigen.
Siehe hier:
Das Fenster Out-GridView geht nur in der PowerShell ISE auf.
Viele Grüße