The estimated reading time 3 minutes
Auslesen Gäste Microsoft Teams Gruppen organisationsweit
Einige haben vielleicht meinen früheren Artikel zum auslesen der Gäste in Teams gelesen, siehe Link.
Leider können mit den „normalen“ Teams cmdlets nur nutzerbasiert Abfragen abgesetzt werden, sprich wenn mein Benutzer nicht Mitglied des Teams ist, dann finde ich auch die O365 Gruppe nicht.
Also habe ich nach einer anderen Lösung gesucht. Im Internet fand ich dann schnell diesen Link.
Der brachte mich schon ein ganzes Stück weiter, allerdings musste ich nun mein komplettes Script umbauen und anpassen, da ich nicht mehr mit get-team arbeiten will/kann.
Bevor das Script ausgeführt werden kann muss natürlich zum Exchange Online verbunden werden. Außerdem die Teams cmdlets geladen und verbunden werden. Siehe dazu Link
Das Script funktioniert nur in der ISE Umgebung sauber!
Verbindung zu den Online Services herstellen.
$UserCredential = Get-Credential $Session = New-PSSession -ConfigurationName Microsoft.Exchange -ConnectionUri https://outlook.office365.com/powershell-liveid/ -Credential $UserCredential -Authentication Basic -AllowRedirection Import-PSSession $Session Import-Module MicrosoftTeams Connect-MicrosoftTeams -Credential $UserCredential
Als Output erscheint eine Out-Gridview
<#
.SYNOPSIS
script to find all ms teams group with guest accounts
.DESCRIPTION
.EXAMPLE
no parameters needed
.Notes
connect to exchange online first, delet the # at the beginnig of the scripts
https://technet.microsoft.com/en-us/library/jj984289(v=exchg.160).aspx
---------------------------------------------------------------------------------
Script: get-allteams-with-guest-0-2.ps1
Author: A. Koehler; blog.it-koehler.com
ModifyDate: 04/07/2018
Usage: identify all teams groups in office 365 and get guests
Version: 0.2
---------------------------------------------------------------------------------
#>
### start connection to exchange online and ms teams
# Set-ExecutionPolicy RemoteSigned
# $UserCredential = Get-Credential
# $Session = New-PSSession -ConfigurationName Microsoft.Exchange -ConnectionUri https://outlook.office365.com/powershell-liveid/ -Credential $UserCredential -Authentication Basic -AllowRedirection
# Import-PSSession $Session
# Import-Module MicrosoftTeams
# Connect-MicrosoftTeams -Credential $UserCredential
#####################################################################################################
#get all o365 groups from exchange online
$o365groups = Get-UnifiedGroup -ResultSize unlimited
#generate array
$externalteams = @()
$output = @()
foreach ($o365group in $o365groups) {
try {
$teamschannels = Get-TeamChannel -GroupId $o365group.ExternalDirectoryObjectId
$output += [pscustomobject]@{GroupId = $o365group.ExternalDirectoryObjectId; GroupName = $o365group.DisplayName; TeamsEnabled = $true}
} catch {
$ErrorCode = $_.Exception.ErrorCode
switch ($ErrorCode) {
"404" {
$output += [pscustomobject]@{GroupId = $o365group.ExternalDirectoryObjectId; GroupName = $o365group.DisplayName; TeamsEnabled = $false}
break;
}
"403" {
$output += [pscustomobject]@{GroupId = $o365group.ExternalDirectoryObjectId; GroupName = $o365group.DisplayName; TeamsEnabled = $true}
break;
}
default {
Write-Error ("Unknown ErrorCode trying to 'Get-TeamChannel -GroupId {0}' :: {1}" -f $o365group, $ErrorCode)
}
}
}
}
#search for teamenabled groups
$teams = $output | Where-Object{$_.TeamsEnabled -eq $true}
#count teams
$number = $teams.Count
#check if there are teams enabled groups available
if($number -eq "0"){
Write-host "there are no teams in your organization" -ForegroundColor yellow
}
else{
#go through every team and search for external users
foreach ($team in $teams){
#get groupid of the team
$groupid = ($team.groupid)
#search external users
$users = (Get-UnifiedGroup -Identity $groupid | Get-UnifiedGroupLinks -LinkType Members | Where-Object {$_.Name -like "*#EXT#*"})
#count external users
$extcount = ($users.count)
#go through every team an put teamname and teammembers in custom object
foreach ($extuser in $users){
#get displayname from team
$teamext = (($o365groups | Where-Object {$_.ExternalDirectoryObjectId -eq "$groupid"}).DisplayName).ToString()
$teamextcreatedate = (($o365groups | Where-Object {$_.ExternalDirectoryObjectId -eq "$groupid"}).WhenCreated).ToString()
#get the external users
$ext = $extuser.Name
#create custom object
$externalteams += [pscustomobject]@{
ExtUser = $ext
TeamName = $teamext
TeamsCreationDate = $teamextcreatedate
GroupID = $groupid
}
}
}
#check if there are some teams with external users or not
if ($extcount -eq "0"){
Write-host "there are no external user added to any team in your organization" -ForegroundColor yellow
}
else{
#show custom object in powershell
$externalteams | Out-GridView -Title "external members in Teams"
<#
$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>
"@
$externalteams | ConvertTo-Html -Property ExtUser,TeamName,GroupID -Head $Header | Out-File -FilePath .\msteam-guests.html
Invoke-Expression ".\msteam-guests.html"
#>
}
}


