Skip to the main content.

ScriptRunner Blog

Meine Top Ten zur Nutzung von Microsoft Teams PowerShell

Inhaltsverzeichnis

 

 

Post Featured Image

Du administrierst Microsoft Teams? Dann kommen hier einige sehr hilfreiche Cmdlets und entsprechende Erklärungen. Wie viele von Damians Top Ten kanntest du schon?


Einleitung

Die Verwendung der PowerShell zur Verwaltung von Microsoft Teams kann für Administratoren in Microsoft 365 ein Segen sein, und genau wie die Exchange PowerShell verfügt auch die Teams PowerShell über eine ganze Reihe von Cmdlets, die Administratoren zur Verfügung stehen.  In diesem Artikel wollen wir uns die 10 besten Möglichkeiten ansehen, wie man die Microsoft Teams PowerShell nutzen kann. Lass uns gleich loslegen.

 

EINS: Benutzer lizenzieren

Eine häufige Aufgabe beim Onboarding ist es, einem Nutzer eine Lizenz für die Funktionen zu geben, auf die er Zugriff benötigt. In diesem Abschnitt gehen wir kurz den Prozess mit der Microsoft Graph PowerShell durch. Dieser Prozess kann zwar immer noch mit dem MSOnline PowerShell-Modul durchgeführt werden, aber Microsoft wird dieses Modul im Laufe des nächsten Jahres abschaffen.

Einen detaillierten Einblick in dieses Thema findest du in einem früheren Blogbeitrag im ScriptRunner-Blog, den du hier findest.

 

ZWEI: Teams erstellen

Teams sind natürlich die Schlüsselkomponente von Microsoft Teams. Daher ist es nützlich zu wissen, wie man sie mit PowerShell erstellt, vor allem, wenn du viele Teams mit ähnlichen Einstellungen erstellst.

Für die Teamerstellung mit der PowerShell sind nicht viele Optionen erforderlich, denn wir können ein Team schon mit einem Anzeigenamen erstellen:


New-Team -DisplayName 'Marketing Campaign – Big Corp, Inc.'

Das Cmdlet New-Team hat noch weitere Optionen, z. B. eine Beschreibung:


New-Team -DisplayName 'Project Rebuild' -Description 'First project of 2024 (HR)'

Oder du schaltest eine Funktion für ein Team ein, z.B. die Suche:


New-Team -DisplayName 'New Test Group' -ShowInTeamsSearchAndSuggestions $False

Wenn du ein Team erstellst, denke daran, dass die meisten, wenn nicht sogar alle Einstellungen nachträglich mit dem Cmdlet Set-Team geändert werden können, wenn eine Funktion bei der Erstellung nicht festgelegt wurde.

 

DREI: Teams-Kanäle erstellen

Nachdem wir Teams erstellt haben, können wir Teams-Kanäle hinzufügen, um die Bedürfnisse der einzelnen Teams zu unterteilen oder zu organisieren.  Wir haben jetzt zum Beispiel ein Vertriebsteam und müssen unter diesem Team Kanäle für jede Vertriebsaktion des Unternehmens erstellen.  Eine Beratungsfirma hat vielleicht ein Team pro Kunde und dann einen Teams-Kanal für jedes Projekt, das sie für diesen Kunden hat, um die Kommunikation und die gemeinsame Nutzung von Inhalten zu unterteilen.

Beispiel-Cmdlets


New-TeamChannel -GroupId 933fe926-555a-4832-87d1-8f700736e003 -DisplayName 'Project 007'
New-TeamChannel -GroupId cfdba387-1319-4f6b-a883-8700046f07e7 -DisplayName 'Internal Sales'

Beachte, dass wir die Gruppen-ID benötigen, um den Teams Channel in diesem Team zu erstellen.

 

VIER: Ändern der Team-Einstellungen nach der Erstellung

Wie bereits angedeutet, können die Teams, die wir zuvor erstellt haben, auch geändert werden, um entweder neue Anforderungen zu erfüllen oder eine Standardkonfiguration zu erstellen.  Diese Änderungen können mit dem Cmdlet Set-Team vorgenommen werden.  Wenn wir zum Beispiel die Optionen ändern wollen, die den Teammitgliedern in einem Chanel zur Verfügung stehen, wie z. B. Sticker und Memes oder Erwähnungen:


Set-Team -GroupId d36f235f-d30e-4460-98a2-5728b906fbfd -GiphyContentRating Strict -AllowStickersAndMemes $False
Get-Team -DisplayName 'Marketing' | Set-Team -AllowTeamMentions $False

Vielleicht wollen wir Channel Updates zulassen:


Set-Team -GroupId cfdba387-1319-4f6b-a883-8700046f07e7 -AllowCreateUpdateChannels $True
Get-Team -DisplayName 'HR Department' | Set-Team -AllowGuestCreateUpdateChannels $False

Schalte die Gruppensuche aus:


Set-Team -GroupId cfdba387-1319-4f6b-a883-8700046f07e7 -ShowInTeamsSearchAndSuggestions $False

Ändere einige Gruppeninformationen wie Display Name und Beschreibung:


Set-TeamChannel -GroupId cfdba387-1319-4f6b-a883-8700046f07e7 -CurrentDisplayName 'Internal Sales' -Description 'Sales Channel'

Oder archiviere eine Gruppe:


Set-TeamArchivedState -GroupId 9ee34e55-60d6-49cf-8a64-1bc1454d7ee4 -Archived:$True

 

FÜNF: Richtlinien festlegen

Zusätzlich zu den Teams und Kanälen kann die PowerShell globale Richtlinien verwalten, die sich auf alle Teams, Benutzer oder vielleicht auf die Meeting-Einstellungen auswirken. Indem wir diese Einstellungen ändern, können wir die Nutzung von Teams in einer Umgebung steuern und vielleicht Teams mit verschiedenen Unternehmensrichtlinien in Einklang bringen.

So können wir z. B. die Transkription für die Entwicklungsabteilung aktivieren, damit sie diese Funktion für ihre Meetings nutzen kann, sie aber in anderen Richtlinien deaktiviert ist:


New-CsTeamsMeetingPolicy -Identity RnDPolicy -AllowTranscription $True

Dann haben wir Einstellungen im Bereich User Admission oder für die Erstellung von Breakout-Räumen:


New-CsTeamsMeetingPolicy -Identity 'MarketingPolicy' -AutoAdmittedUsers 'Everyone' -AllowBreakoutRooms $False

Sobald eine Richtlinie aufgelistet und verfügbar ist, können wir die Richtlinie auf die Nutzer anwenden:


Grant-CsTeamsMeetingPolicy -Identity 'Jsmith' -PolicyName 'ITDeptMeetings'

Wenn die Policy-Einstellungen veraltet sind oder nicht mehr benötigt werden, können wir sie auch entfernen::


Remove-CsTeamsMeetingPolicy 'RnDPolicy'

Und genau wie bei Teams können wir eine Richtlinie ändern, sobald sie erstellt wurde, und Einstellungen ändern, die einem neuen Standard entsprechen:


Set-CsTeamsMeetingPolicy -Identity 'ITPolicy' -AllowBreakoutRooms $False
Set-CsTeamsMeetingPolicy -Identity 'SalesPolicy' -AllowMeetNow $True

 

SECHS: Hinzufügen von Mitgliedern zu Teams

Was wäre Teams ohne Nutzer?  Nun, eigentlich nicht viel.  Mit der PowerShell können wir also auch Nutzer zu Microsoft Teams hinzufügen, um sicherzustellen, dass die Nutzer Zugang zu den Teams haben, die sie in ihren Clients benötigen.  Mit dem folgenden Beispielcode können wir eine CSV-Quelldatei verwenden und dann Mitglieder auf der Grundlage ihrer Abteilung zu Teams hinzufügen:


# Teams-Mitglieder hinzufügen
$CSV = Import-CSV 'TeamsUsers.csv'
Foreach ($MsolUser in $CSV) {
$Department = $MsolUser.Department
$Email = $MsolUser.PrimarySMTPAddress
If ($Department -eq 'Marketing') {Add-TeamUser -GroupId $MarketingTeam.GroupId -User $Email}
If ($Department -eq 'Sales') {Add-TeamUser -GroupId $SalesTeam.GroupId -User $Email}
If ($Department -eq 'IT') {Add-TeamUser -GroupId $ITTeam.GroupId -User $Email}
If ($Department -eq 'Management') {Add-TeamUser -GroupId $ManagementTeam.GroupId -User $Email}
}

 

SIEBEN: Rollenzuweisung für Teams

Die Zuweisung von Rollen an diejenigen, die Microsoft Teams unterstützen müssen, ist eine weitere wichtige Aufgabe, da wir so sicherstellen können, dass die geringstmöglichen Rechte verwendet werden und dass diese Nutzer ihre Aufgaben erfüllen können.  Es ist wichtig zu beachten, dass diese Rollenzuweisungen zwar mit dem MSOnline PowerShell-Modul durchgeführt werden können, dieses Modul aber veraltet ist und nicht für die Produktivumgebung verwendet werden sollte.  In den folgenden Beispielen musst du dich zuerst mit der Microsoft Graph PowerShell verbinden und über die entsprechenden Berechtigungen verfügen.

Zuerst können wir die Rollen für Microsoft Teams auflisten:


Get-MgDirectoryRoleTemplate | 
	Where-Object DisplayName -like Teams*

Als Nächstes haben wir ein Beispiel für das Hinzufügen von Rollen, bei dem wir ein Mitglied zu einer Rolle wie Teams Communications Support Engineer hinzufügen, wofür zunächst die Rolle identifiziert werden muss:


Get-MgDirectoryRole | 
	Where-Object DisplayName -eq 'Teams Communications Support Engineer'

Dann rufen wir den Id-Wert der Rolle ab:


$RoleID = (Get-MgDirectoryRole | 
	Where-Object DisplayName -eq 'Teams Communications Support Engineer').Id

Anschließend speichern wir die Nutzerdaten in einer Variablen:


$UserId = (Get-MgUser -UserId damian@practicalPowerShell.com).Id

Schließlich fügen wir den Nutzer zur Gruppe hinzu:


New-MgDirectoryRoleMemberByRef -DirectoryRoleId $TeamsAdminRoleId -BodyParameter @{"@odata.id" = "https://graph.microsoft.com/v1.0/directoryObjects/$($UserId)"}

 

ACHT: Einstellungen für Urlaubs- und Feiertage

Urlaubs- und Feiertage sind in Teams wichtig, weil sie an bestimmten Tagen oder zu bestimmten Zeiten des Jahres unterschiedliche Funktionen bieten. Wenn ein Feiertag erstellt und zugewiesen wird, kann Teams alternative Nachrichten oder sogar eine andere Weiterleitung für Anrufer anbieten.  Häufig werden sie eingesetzt, wenn das Unternehmen geschlossen ist.  Gehen wir ein paar Codebeispiele für die Handhabung von Urlaubs- und Feiertagen in Teams durch:

Aktuelle Urlaubs- und Feiertage auflisten:


Get-CsOnlineSchedule
Get-CsOnlineSchedule | Where-Object {$_.Type -eq 'Fixed'}

Erstelle neuen Urlaubs-/Feiertag:


$Date = New-CsOnlineDateTimeRange -Start '1/12/2020 0:00' -End '1/12/2020 23:45'
New-CsOnlineSchedule -Name 'Employee Day' -DateTimeRanges $Date -FixedSchedule

Ändere einen bestehenden Urlaubs-/Feiertag:


$Schedule = Get-CsOnlineSchedule 93ce710a-f0b6-4c77-80eb-45c73228aa8b
$Schedule.Name = 'New Years Party'
Set-CsOnlineSchedule -Instance $Schedule

Vorhandenen Urlaubs-/Feiertag entfernen:


Remove-CsOnlineSchedule -Id 15f9c478-89a3-4052-9b1b-50eb87e769cf

 

NINE: Logs durchsuchen

Die Überwachung des IT-Betriebs ist eine wichtige Aufgabe und kann für Vorschriften, Audits und andere Compliance-Angelegenheiten notwendig sein. PowerShell eignet sich hervorragend für diese Art von Aufgaben, bei denen potenziell große Datenmengen betroffen sind und eine Filterung erforderlich ist.  Die Überprüfung von Microsoft Teams-Ereignissen gehört daher zu den zehn wichtigsten Aufgaben der PowerShell für Teams. Um Teams-Ereignisse zu überprüfen, müssen wir uns mit der Exchange Online PowerShell (v3) verbinden, denn dort befindet sich das Unified Audit Log.

Teams Ereignisse gespeichert im Unified Audit Log:


# Ereignisse der letzten 48 Stunden
$EndDate = Get-Date
$StartDate = $EndDate.AddDays(-2)

Alle Teams Ereignisse:


Search-UnifiedAuditLog -StartDate $StartDate -EndDate $EndDate -RecordType MicrosoftTeams

Hinzugefügte Teams-Kanält:


Search-UnifiedAuditLog -StartDate $StartDate -EndDate $EndDate -RecordType MicrosoftTeams -Operations ChannelAdded

Sensitivity Label Änderungen:


Search-UnifiedAuditLog -StartDate $StartDate -EndDate $EndDate -RecordType MicrosoftTeams -Operations SensitivityLabelChanged

Teams werden gelöscht:


Search-UnifiedAuditLog -StartDate $StartDate -EndDate $EndDate -RecordType MicrosoftTeams -Operations TeamDeleted

Als Referenz  Teams Aktivitäten

 

ZEHN: Teams bereinigen

Das Erstellen und Verwalten von Teams ist zwar eine wichtige Aufgabe, aber Organisationen neigen auch dazu, zu viele Teams zu erstellen, und in anderen Fällen arbeiten Organisationen hart daran, überflüssige Teams regelmäßig zu löschen.  Daher ist das Aufräumen von Teams eine wichtige Aufgabe, die mit den Cmdlets der Gruppe Remove-Team* erledigt werden kann. Im Folgenden findest du einige Beispiele für die Verwendung dieser Cmdlets:

Vorhandenes Microsoft Team entfernen:


Remove-Team -GroupID '933fe926-555a-4832-87d1-8f700736e003'

Bestehenden Microsoft Team-Kanal entfernen:


Remove-TeamChannel -GroupId cfdba387-1319-4f6b-a883-8700046f07e7 -DisplayName 'Internal Sales'

Bestehenden Microsoft Team-Nutzer entfernen:


Remove-TeamUser -GroupID '933fe926-555a-4832-87d1-8f700736e003' -User <UPN> 

 

Fazit

Wie wir aus den Top Ten der Möglichkeiten, PowerShell für Microsoft Teams zu nutzen, ersehen können, gibt es eine ganze Reihe von Aufgaben, die wir automatisieren oder vereinfachen können. Von der Erstellung von Teams über die Änderung von Teams-Einstellungen bis hin zur Protokollierung und vielem mehr - PowerShell bietet Administratoren eine einfache Möglichkeit, ihre Umgebung mittels Programmen zu verwalten.  Mit der Zeit und etwas Übung lassen sich die oben genannten Cmdlets und Aufgaben automatisieren, so dass Administratoren Aufgaben an andere Teammitglieder weitergeben oder vielleicht andere Projekte erledigen können, die schon eine Weile auf sich warten lassen.  Das Wichtigste ist, dass Microsoft viel Zeit und Energie in die PowerShell investiert hat und dass diese Top Ten nur an der sprichwörtlichen Oberfläche kratzen und es noch viel mehr zu lernen gibt.

 

 

 

Good2know

Webinar: PowerShell leicht gemacht für Microsoft Teams Administratoren!

Die Verwaltung von Teams kann ziemlich zeitaufwendig sein. Hast du dich schon einmal gefragt, wie du die entstehende Arbeitsbelastung optimieren und reduzieren kannst?

Das PowerShell-Modul für Microsoft Teams ist dein Schlüssel: Es ermöglicht dir, viele sich wiederholende Aufgaben zu standardisieren und zu automatisieren.

Zum Beispiel:

  • Nachrichten an Teams-Kanäle pushen
  • Auffinden von Teams ohne Besitzer
  • Bulk-Erstellung/Löschung/Archivierung von Teams
  • Hinzufügen/Entfernen von Kanälen/Benutzern in allen/ausgewählten Teams
  • Verwaltung von Sicherheitseinstellungen in allen/ausgewählten Teams
  • Erstellen von Berichten über die aktuelle Team-Infrastruktur

Dieses Webinar richtet sich an IT-Administratoren, IT- und DevOps-Professionals, PowerShell-Entwickler und IT-Leiter.

 scriptrunner-microsoft-teams-webinar

Darum geht es im Webinar:

 

  • Die Möglichkeiten des aktuellen Teams PowerShell-Moduls
  • So sparst du mit ScriptRunner Zeit: Delegiere Aufgaben an Helpdesk-Teams und sogar an Endnutzer!
  • Wir werfen einen Blick auf unsere ready-to-use PowerShell-Skripte,
  • Die zentrale Verwaltung aller PowerShell-Komponenten, wie Skripte, Module, Credentials und
  • Wie du jedes Skript automatisch in ein benutzerfreundliches Webformular verwandeln kannst.

 

Hier liegt die Webinaraufzeichnung

 

 

 

Weiterführende Links

Zusammenhängende Posts

Über den Autor: