Im Teams Admin Center legt man Feiertage pro Schedule Tag für Tag an, und jedes Jahr stellt sich die Frage, ob alle Auto Attendants die richtigen Feiertage kennen und was Anrufer dann hören. Der Artikel zeigt zwei PowerShell-Werkzeuge für Schweizer Teams-Telefonie. Das erste liest die Feiertagslisten aller Auto Attendants samt Rufnummer und zugehöriger Call Queue in eine Excel-Tabelle. Das zweite schreibt die Feiertage eines Kantons in einen bestehenden Schedule, wahlweise ergänzend oder ersetzend. Dazu kommen die Voraussetzungen, zwei gekürzte Codebeispiele, typische Fehler und die Grenzen, vor allem die jährliche Pflege der Daten.
Inhalt 10 Abschnitte

Einmal im Jahr dieselbe Frage: Sind unsere Feiertage im Auto Attendant, und was hört der Anrufer? Zwei Skripte beantworten sie in Minuten.
Auf einen Blick
- Das Admin Center verlangt Handarbeit. Feiertage legst du pro Schedule einzeln und Tag für Tag an.
- Ein Skript liest alle Auto Attendants aus. Das Ergebnis ist eine Excel-Tabelle mit Datum, Rufnummer und zugehöriger Call Queue.
- Ein zweites Skript setzt die Feiertage eines Kantons. Du wählst zwischen Ergänzen und Ersetzen und siehst vorher eine Vorschau.
- Die Daten gelten für ein Kalenderjahr. Prüfe sie jedes Jahr gegen die offizielle Liste deines Kantons.
Das Problem: Feiertage von Hand pflegen
Jeder Betrieb mit Teams-Telefonie stellt jährlich dieselbe Frage. Sind die Feiertage in den Auto Attendants hinterlegt, und welche Ansage hört der Anrufer? Ohne Skript öffnest du jeden Auto Attendant einzeln, klappst die Feiertagsliste auf und liest die Ansage nach.
Bei kantonalen Sonderfeiertagen wird leicht einer vergessen. Der Berchtoldstag, St. Josef, Bruder Klaus oder der Bettagsmontag gelten nicht überall. Der Auto Attendant kennt solche Tage nur, wenn sie im Schedule stehen. Fehlt einer, läuft der Anruf ausserhalb der Geschäftszeit in die falsche Richtung: Er landet in der Warteschlange, obwohl niemand arbeitet.
Die zwei Werkzeuge lösen je einen Teil. Das erste zeigt dir den Ist-Zustand, das zweite schreibt den Soll-Zustand.
Feiertage der Teams Auto Attendants auslesen
Das Auslese-Skript verbindet sich mit dem Teams-Modul und lädt alle Call Queues und Auto Attendants seitenweise. Für jeden Auto Attendant ermittelt es die Rufnummer des Ressourcenkontos und liest die Feiertagslisten samt Zeiträumen. Eine Lookup-Tabelle löst die Namen der Feiertage auf. Die Zuordnung von Auto Attendant zu Call Queue läuft über die GUIDs der Ressourcenkonten.
Das Ergebnis ist eine Excel-Datei mit Autofilter und fixierter Kopfzeile, zusätzlich eine Ansicht im Grid-View. Fehlt das Modul ImportExcel, nutzt das Skript Excel per COM oder Out-GridView.
$autoAttendants = Get-AllPaged { param($t, $s) Get-CsAutoAttendant -First $t -Skip $s } $PageSize $rows = foreach ($aa in $autoAttendants) { $phones = foreach ($id in @($aa.ApplicationInstances)) { try { (Get-CsOnlineApplicationInstance -Identity "$id").PhoneNumber } catch { } } try { $holidays = @(Get-CsAutoAttendantHolidays -Identity $aa.Identity) } catch { Write-Warning "Holidays für '$($aa.Name)' nicht lesbar: $($_.Exception.Message)"; continue } foreach ($h in $holidays) { foreach ($range in @($h.DateTimeRanges)) { [pscustomobject]@{ AutoAttendant = $aa.Name Rufnummer = ($phones | Where-Object { $_ }) -join ', ' Feiertagsliste = $h.Name Start = $range.Start Ende = $range.End Zeitzone = $aa.TimeZoneId } } } } $rows | Sort-Object Start, AutoAttendant | Export-Excel -Path $ExcelPath -WorksheetName 'Feiertage' -TableName 'TeamsFeiertage' -AutoSize -AutoFilter -FreezeTopRow
Dabei fängt der try-Block Auto Attendants ab, deren Feiertage nicht lesbar sind. Das Skript meldet sie als Warnung und macht mit dem nächsten weiter. Die Seitengrösse steuerst du mit -PageSize, Standard ist 100. Die Anleitung von Microsoft zum Aufbau eines Auto Attendants erklärt Schedules und Feiertage im Admin Center.
Kantonsfeiertage per Klick setzen
Das zweite Werkzeug schreibt die Feiertage eines Schweizer Kantons in einen bestehenden Schedule vom Typ Fixed. Im Original hat es eine kleine Windows-Forms-Oberfläche. Du wählst den Schedule, klickst den Kanton an, prüfst die Vorschau und entscheidest dich für einen Modus:
- Ergänzen: Bestehende Einträge bleiben, gleiche Tage werden ersetzt.
- Ersetzen: Nur die Liste des Kantons bleibt übrig.
Ein separates Skript hält die Feiertage aller 26 Kantone für ein Jahr als Hashtables bereit. Das gekürzte Beispiel zeigt den Kern ohne Oberfläche, mit einem Auszug an Daten.
$KantonDaten = @{ 'Luzern' = @('01/01/2026', '19/03/2026', '03/04/2026', '06/04/2026', '01/08/2026', '25/12/2026', '26/12/2026') } $schedule = Get-CsOnlineSchedule | Where-Object Name -eq $ScheduleName | Select-Object -First 1 $ranges = [Collections.Generic.List[object]]::new() if ($Mode -eq 'Append' -and $schedule.FixedSchedule.DateTimeRanges) { $schedule.FixedSchedule.DateTimeRanges | ForEach-Object { $ranges.Add($_) } } foreach ($d in $KantonDaten[$Kanton]) { $start = [datetime]::ParseExact($d, 'dd/MM/yyyy', $ci) @($ranges | Where-Object { (Get-Date $_.Start).Date -eq $start.Date }) | ForEach-Object { [void]$ranges.Remove($_) } $ranges.Add((New-CsOnlineDateTimeRange -Start $start.ToString('dd/MM/yyyy', $ci) -End $start.AddDays(1).ToString('dd/MM/yyyy', $ci))) } $schedule.FixedSchedule.DateTimeRanges = @($ranges | Sort-Object { Get-Date $_.Start }) Set-CsOnlineSchedule -Instance $schedule
Jeder Feiertag ist ganztägig: Das Ende liegt einen Tag nach dem Start. Vor dem Eintragen entfernt das Skript einen gleichen Tag, damit keine Dubletten entstehen. Die Cmdlets New-CsOnlineDateTimeRange und Set-CsOnlineSchedule beschreibt Microsoft in der Referenz. Die Daten im Beispiel sind ein Auszug und gehören vor dem Einsatz gegen die offizielle Liste deines Kantons abgeglichen.
Voraussetzungen und Ablauf
Du brauchst Windows PowerShell 5.1 oder 7 mit dem Modul MicrosoftTeams und die Rolle Teams-Administrator oder Teams-Kommunikationsadministrator. Für den Excel-Export hilft das Modul ImportExcel. Das Setz-Skript braucht eine bestehende Teams-Session, also vorher Connect-MicrosoftTeams.
- Das Auslese-Skript mit
-AccountId [email protected]starten und die Excel-Datei prüfen. - Mit
Connect-MicrosoftTeamsanmelden und das Setz-Skript starten. - Schedule und Kanton wählen, die Vorschau lesen und den Modus bestimmen.
- Die Aktualisierung auslösen und das Ergebnis erneut mit dem Auslese-Skript kontrollieren.
Beide Skripte haben oben einen Konfigurationsblock. Reihenfolge der Werte: Parameter, Konfigurationsblock, automatische Erkennung, Abfrage. Tenant- und Mail-Domäne liest das Skript nach der Anmeldung selbst aus. Beim Start fragt es nach dem Kunden und baut ihn in den Dateinamen der Excel-Datei ein.
Typische Fehler
| Symptom | Ursache | Lösung |
|---|---|---|
„Access Denied“ bei Get-CsCallQueue |
Dem Konto fehlt die Teams-Admin-Rolle |
Rolle zuweisen |
Keine Schedules gefunden |
Es besteht keine Teams-Session |
Zuerst Connect-MicrosoftTeams ausführen |
Excel-Export fehlt |
ImportExcel ist nicht installiert |
Modul installieren, sonst greift COM oder Grid-View |
Tage um einen Tag verschoben |
Zeitzone des Auto Attendants abweichend |
Zeitzone prüfen |
Grenzen
Die Feiertagsdaten gelten für ein Kalenderjahr. Du pflegst sie jährlich und gleichst sie vor dem Einsatz mit der offiziellen Kantonsliste ab. Das Setz-Skript bearbeitet nur Schedules vom Typ Fixed. Kommunale Feiertage sind nicht enthalten. Pro Session arbeitest du mit einem Tenant, und beide Werkzeuge laufen interaktiv. Als Ausbaustufe ist ein Self-Service denkbar: ein Formular, ein Runbook und dann Teams. Die Beispiele sind gekürzt und gehören vor dem produktiven Einsatz in ein Testlab. Wie sich Warteschlangen für Fachabteilungen selbst bedienen lassen, zeigt der Artikel Teams Premium: Queues-App, Shared Call History und Self-Service.
Einordnung: Was das für Teams-Admins in der Schweiz heisst
Feiertage sind eine kleine Aufgabe mit grosser Wirkung am Telefon. Ein vergessener Tag kostet Kundenvertrauen, weil Anrufer vor einer Warteschlange ohne Personal warten. Für Betriebe mit mehreren Standorten in verschiedenen Kantonen lohnt der Export doppelt, denn er zeigt auf einen Blick, wo Listen voneinander abweichen. Plane die Pflege als festen Termin im Dezember. Dann liegen die Listen für das Folgejahr bereit, bevor der erste Feiertag naht. IT-Dienstleister mit vielen Tenants sparen am meisten, weil jeder Kunde dieselben Schritte durchläuft.
Fazit
Feiertage in Auto Attendants sind schnell gepflegt, wenn du sie systematisch ausliest und schreibst. Das Auslese-Skript liefert eine Excel-Übersicht über alle Listen und ihre Warteschlangen. Das Setz-Skript trägt die Tage eines Kantons ein und lässt dir die Wahl zwischen Ergänzen und Ersetzen. Prüfe die Daten jedes Jahr und halte den Termin dafür fest im Kalender.
Geschrieben von Andreas Brauckmann
Änderungshistorie
- — Artikel veröffentlicht.