Microsoft Teams Deployment in non-persistent VDIs
In verwalteten VDIs sollte beim Einsatz von Teams eine administrative Installation per Machine verwendet werden, statt dem Benutzer selbst die Möglichkeit einer Click-2-Run User Installation zu geben. Zudem hat man dadurch natürlich mehr Möglichkeiten, Teams für die Bedürfnisse der User in einer VDI vorzukonfigurieren.
Installation
Für die administrative Installation benötigt man die Teams MSIs, die standardmäßig auf den üblichen Microsoft Seiten für User nicht zum Download angeboten werden. Hier kann man die benötigten Installer erhalten:
Teams 32 Bit MSI
Teams 64 Bit MSI
x32 Client Installation auf x32- und x64-OS:
msiexec.exe /i <Pfad>\Teams_windows.msi /l*v <Log-File-Pfad-/Name> ALLUSER=1 ALLUSERS=1
x64 Client Installation auf x64-OS:
msiexec.exe /i <Pfad>\Teams_windows_x64.msi /l*v <Log-File-Pfad-/Name> ALLUSER=1 ALLUSERS=1
Parameter
Für die oben beschriebene Installation werden 2 Parameter angegeben, die recht ähnlich klingen, aber unterschiedliche Funktionen haben.
ALLUSER=1
Der Parameter ALLUSER=1
definiert, dass die Machine-wide Installation durchgeführt wird, statt der Per-User Installation.
ALLUSERS=1
Der Parameter ALLUSERS=1
definiert, dass bei der Machine-wide Installation Teams auch unter Programs and Features im Control Panel und in Apps & Features in den Windows Settings aufgelistet wird.
User Profil
Da sich Teams ins User-Profil installiert ist eine der Herausforderungen für Administratoren in VDIs, dass das Profil immer weiter aufgebläht wird. Für dieses Thema gibt es mehrere Lösungsmöglichkeiten, von denen ich 2 hier vorstelle.
Zudem ist darauf zu achten, dass der M365 Licensing Token korrekt geroamt wird. Anleitungen dazu findet ihr vielfach im Internet.
Option 1: Profile Container (z.B. FSLogix)
Die erste Option ist die Nutzung von Profile Container Lösungen. Microsoft hat hierzu die Software FSLogix vor einiger Zeit dazugekauft und empfiehlt deren Nutzung in M365 VDI Umgebungen. Diese Lösung speichert das Profil in einer VHD/VHDX virtual Disk, die während der Laufzeit gemountet wird. Dadurch wird nur eine große Datei beim Login geladen / beim Logoff entladen, statt unzählige kleine Dateien wie beim Roaming Profile. Dies wirkt sich signifikant positiv auf die Ladezeit des Profils und somit auch auf die Performance der VDI aus.
Einen Beitrag zur Installation/Konfiguration findet ihr in einem extra Beitrag, da die Nutzung von Profil Container nicht explizit für Teams ist, sondern für alle M365 Produkte.
Option 2: Profile Manager (z.B. Citrix UPM)
Die zweite Option ist die Nutzung eines Profile Managements. In Citrix VDIs ist dies häufig Universal Profile Management (UPM), da dies in der Regel mit lizenziert ist und besser funktioniert, als die Microsoft-eigenen Mechanismen. Die folgenden Zeilen beziehen sich daher auf UPM; andere Profile Manager sind dann entsprechend anzupassen.
Exclusion list – files
AppData\Local\Microsoft\Packages\Teams*.nupkg AppData\Roaming\Microsoft\Teams\*.txt
Exclusion list – directories
AppData\Local\Microsoft\Teams\Current\Locales AppData\Local\Microsoft\Teams\Current\Resources\Locales AppData\Local\Microsoft\Teams\Packages\SquirrelTemp AppData\Roaming\Microsoft\Teams\Application Cache AppData\Roaming\Microsoft\Teams\Cache AppData\Roaming\Microsoft\Teams\Logs AppData\Roaming\Microsoft\Teams\Media-Stack AppData\Roaming\Microsoft\Teams\Service Worker\CacheStorage
Default exclusion list – directories
Default exclusion list – directories --> ENABLED
Die obige Einstellung aktiviert Standard Exclusions; diese werden benötigt, wenn Teams in Kombination mit Google Chrome verwendet wird.
Files to synchronize
AppData\Local\Microsoft\Teams\Current\Locales\de*.pak AppData\Local\Microsoft\Teams\Current\Resources\Locales\locale-de* AppData\Local\Microsoft\Teams\Current\Resources\Locales\culture*
Hinweis: die ersten beiden Zeilen bewirken, dass alle Locales außer Deutsch nicht synchronisiert, sondern beim Logoff verworfen werden. Werden weitere Sprachen benötigt, können hier analog zu Deutsch weitere Sprachen mit in die Synchronisation aufgenommen werden.
Optimierungen
Autostart deaktivieren
Um den automatischen Start von Teams zu deaktivieren, werden folgende PowerShell Commands im Golden Image der VDI ausgeführt .
x32 Client Konfiguration auf x64-OS:
(Get-Content ${ENV:ProgramFiles(x86)}'\Teams Installer\setup.json').replace('"noAutoStart":"false"', '"noAutoStart":"true"') Set-Content ${ENV:ProgramFiles(x86)}'\Teams Installer\setup.json'
x32 Client Konfiguration auf x32-OS / x64 Client Konfiguration auf x64-OS:
(Get-Content ${ENV:ProgramFiles}'\Teams Installer\setup.json').replace('"noAutoStart":"false"', '"noAutoStart":"true"') Set-Content ${ENV:ProgramFiles}'\Teams Installer\setup.json'
Meldet sich nun ein User in einer VDI mit einer Machine-wide Installation an, werden zwar weiterhin die Programm-Shortcuts angelegt und die Installation ins User-Profil kopiert, aber die Anwendung wird nicht mehr automatisch gestartet.
Möchte man auch dies verhindern und Teams überhaupt nicht starten, lässt sich dies durch das Löschen eines Registry Keys bewerkstelligen.
x32 Client Konfiguration auf x64-OS:
Remove-ItemProperty -Path "HKLM:\SOFTWARE\WOW6432Node\Microsoft\Windows\CurrentVersion\Run" -Name "Teams"
x32 Client Konfiguration auf x32-OS / x64 Client Konfiguration auf x64-OS:
Remove-ItemProperty -Path "HKLM:\SOFTWARE\Microsoft\Windows\CurrentVersion\Run" -Name "Teams"
Um nun Teams für dedizierte User wieder zu starten, lässt sich per PowerShell ein entsprechender Registry Wert wieder in den User Hive geschrieben werden. Alternativ kann in der VDI der Registry Key auch z.B. per Citrix WEM Registry Action gesetzt werden.
x32 Client Konfiguration auf x64-OS:
Set-Item -Path "HKCU:\SOFTWARE\Microsoft\Windows\CurrentVersion\Run" -Name "Teams" -Value "C:\Program Files (x86)\Microsoft\Teams\current\teams.exe"
x32 Client Konfiguration auf x32-OS / x64 Client Konfiguration auf x64-OS:
Set-Item -Path "HKCU:\SOFTWARE\Microsoft\Windows\CurrentVersion\Run" -Name "Teams" -Value "C:\Program Files\Microsoft\Teams\current\teams.exe"
Minimiert starten
Standarmäßig startet Teams maximiert. Ist der User angemeldet, kann er selbst einstellen, dass die Anwendung zukünftig minimiert startet. Möchte man das administrativ bereits vorkonfigurieren, lässt sich dies mit folgenden PowerShell Commands durchführen:
(Get-Content $ENV:APPDATA\Microsoft\Teams\desktop-config.json).replace('"openAsHidden":false', '"openAsHidden":true') Set-Content $ENV:APPDATA\Microsoft\Teams\desktop-config.json
Da die Einstellung User-spezifisch ist, muss man die Commands auch User-spezifisch ausführen. Dazu bietet sich z.B. ein Logoff-Script an (Achtung: Führt man das Script bereits beim Logon aus, erhält der User einmalig eine Fehlermeldung, da zum Zeitpunkt der erstmaligen Ausführung des Scripts Teams noch nicht im User-Profil installiert ist und somit die .json Datei fehlt!).
HDX Optimization
Der HDX Optimization Code für Microsoft Teams ist in Workspace App 1907 und höher, sowie im Virtual Desktop Agent 1906.2 und höher standardmäßig integriert. Ein eigenes Plugin (Optimization Pack) wie für Skype for Business ist nicht erforderlich. Mit der HDX Optimization lassen sich Video, Audio und Screensharing offloaden.
Sind die o.g. Versionsvoraussetzungen erfüllt, reicht die folgende User Policy aus, um die HDX Optimization für Microsoft Teams zu aktivieren:

Microsoft Teams HDX Optimization Policy
Troubleshooting
Quellen:
https://docs.microsoft.com/