Experimentieren mit Microsoft Teams PowerShell Modul

The estimated reading time 2 minutes

Vielleicht habt ihr meinen alten Artikel vom 11. Mai 2018 LINK gefunden. Seiher verging einige Zeit und Teams hat sich in vielen Bereichen weiterentwickelt. Inzwischen gibt es auch eine Übersicht im Teams Admin Center aber ich dachte es wäre interessant noch weitere Infos über PowerShell auszuwerten. Also nahm ich mein altes Skript und habe dies nochmals mit dem aktuellen PowerShell Modul für Teams nachgebaut und verbessert.

Als ersten Schritt müssen die Berechtigungen des ausführenden Benutzers geprüft werden. Der ausführende Benutzer muss mindestens Teams Administrator sein siehe Microsoft Dokumentation. Funktioniert auch mit dem globalen Administrator.

Was das Skript erledigen kann:
– Überprüft alle Teams ob es externe Gäste gibt
– findet nur Gastbenutzer
– Schreibt Team Name, GroupID, Gästeeinstellungen, Gästebenutzer zusammen
– Erstellt eine html/csv Datei mit den Informationen

HINWEIS: wer die aktuelle Version des Teams PowerShell Moduls nutzen will, benötigt PowerShell 5.1 hier noch ein Link zur Installation

Der nachfolgende Screenshot zeigt die Ausgabe des Skriptes:

CSV Datei
html Report

Scripting Area:

#installing module
Install-Module MicrosoftTeams -Verbose -Scope AllUsers -Force
#importing the teams module
Import-Module MicrosoftTeams -Verbose -Force
$creds = Get-Credential
Connect-MicrosoftTeams -Credential $creds -Verbose
#get all teams 
$teams = Get-Team
#create array for output 
$teamsarray =@()
#check every team found
foreach($team in $teams){
    #get group id 
    $grpid = ($team).GroupId
    #get guest users if exists
    $guestusers = Get-TeamUser -GroupId $grpid -Role Guest
    # check if there are some guest users
    if($guestusers){
    #getting teams parameters for display later
    $name = ($team).DisplayName
    $visibility = ($team).Visibility
    $guestupdate = ($team).AllowGuestCreateUpdateChannels
    $guestdelete = ($team).AllowGuestDeleteChannels
    $guestusername = ($guestusers).User
    #creating a new custom object to fit all information together
    $teamsguest = New-Object System.Object
    $teamsguest | Add-Member -type NoteProperty -name DisplayName -Value $name 
    $teamsguest | Add-Member -type NoteProperty -name HasGuestUsers -Value "TRUE" 
    $teamsguest | Add-Member -type NoteProperty -name Visibility -Value $visibility 
    $teamsguest | Add-Member -type NoteProperty -name AllowGuestCreateUpdateChannels -Value $guestupdate
    $teamsguest | Add-Member -type NoteProperty -name AllowGuestDeleteChannels -Value $guestdelete
    $teamsguest | Add-Member -type NoteProperty -name GroupID -Value $grpid
    $teamsguest | Add-Member -type NoteProperty -name GuestUser -Value (@($guestusername) -join " ")
    #adding every team to the array for displaying
    $teamsarray += $teamsguest
    }
    #if team has no guest users, nothing is written into array
    else{
        #only output in powershell console
        $name = ($team).DisplayName
        Write-Host "No guest users found in Team: $name " -ForegroundColor Yellow
        }
}
        $Header = @"
        <style>
        TABLE {border-width: 1px; border-style: solid; border-color: black; border-collapse: collapse;}
        TD {border-width: 1px; padding: 3px; border-style: solid; border-color: black;}
        </style>
"@
$teamsarray |Sort-Object DisplayName | ConvertTo-Html -Property DisplayName,Visibility,AllowGuestCreateUpdateChannels,AllowGuestDeleteChannels,GroupID,GuestUser  -Head $Header | Out-File -FilePath .\msteam-guests.html
Invoke-Expression ".\msteam-guests.html"
$teamsarray | Export-Csv -Path .\msteams-guest.csv -Encoding UTF8 -Delimiter ";"

Wenn euch der Artikel gefallen hat, dann klickt auf „helpful“ gerne antworte ich auch auf Kommentare. Viel Spaß damit.

Was this article helpful?
YesNo
0 0 votes
Article Rating
Subscribe
Notify of
guest
1 Kommentar
Newest
Oldest Most Voted
Inline Feedbacks
View all comments
trackback
4 years ago

[…] geladen sind und auch eine Verbindung zur Cloud besteht. Siehe hierzu meine beiden weiteren ArtikelExperimentieren mit Microsoft Teams PowerShell Modulund Exchange Online PowerShell V2 […]