15 min read
Keine Chance für 'Wildwuchs'! Mit diesen Maßnahmen verhinderst du Teams Sprawl
Möchtest du mehr über die Überwachung von Microsoft Teams mit PowerShell erfahren? Lies, wie du die Einstellungen im...
ScriptRunner Blog
Du administrierst Microsoft Teams? Dann kommen hier einige sehr hilfreiche Cmdlets und entsprechende Erklärungen. Wie viele von Damians Top Ten kanntest du schon?
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.
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.
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.
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.
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.
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
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
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}
}
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)"}
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
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
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>
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.
Kennst du schon unsere Webinare?
Die Verwaltung von Teams kann sehr zeitaufwendig sein. Hast du dich schon einmal gefragt, wie du die entstehende Arbeitslast optimieren und reduzieren kannst?
Das PowerShell-Modul für Microsoft Teams ist dein Schlüssel dazu: Es ermöglicht dir, viele sich wiederholende Aufgaben zu standardisieren und zu automatisieren.
Zum Beispiel:
Dieses Webinar richtet sich an Administratoren, IT- und DevOps-Professionals, PowerShell-Entwickler und IT-Leiter.
Wir freuen uns darauf, dich als Webinar-Teilnehmer begrüßen zu dürfen!
Klicke hier für das Teams Webinar
Mai 22, 2024 by Damian Scoles
Möchtest du mehr über die Überwachung von Microsoft Teams mit PowerShell erfahren? Lies, wie du die Einstellungen im...
Dez 22, 2023 by Damian Scoles
Du administrierst Microsoft Teams? Dann kommen hier einige sehr hilfreiche Cmdlets und entsprechende Erklärungen. Wie...
Sep 27, 2022 by Michael Gall
In den letzten Jahren haben Hackerangriffe zugenommen. Leider wird nur über die spektakulärsten (wie z.B. den Uber...
Damian Scoles ist ein zehnfacher Microsoft MVP mit Spezialisierung auf Exchange, Office 365 und PowerShell, der über 25 Jahre Erfahrung in der IT-Branche mitbringt. Er ist im Großraum Chicago ansässig und begann mit der Verwaltung von Exchange 5.5 und Windows NT. Im Laufe der Jahre hat er mit Office 365 seit BPOS gearbeitet und darüber hinaus Erfahrung mit Azure AD, Security and Compliance Admin Centers und Exchange Online. Zu seinem Engagement in der Community gehören Beiträge in TechNet-Foren, die Erstellung von PowerShell-Skripten, die in seinen Blogs zu finden sind, das Schreiben von ausführlichen PowerShell/Office365/Exchange-Blogartikeln, Tweets und die Erstellung von PowerShell-Videos auf YouTube. Er hat fünf PowerShell-Bücher geschrieben und arbeitet außerdem aktiv an dem Buch "Microsoft 365 Security for IT Pros".