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"
    #>
   
  }
}
Print Friendly, PDF & Email
  • Was this Helpful ?
  • yes   no