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

Microsoft Teams HDX Optimization Policy

Troubleshooting

https://support.citrix.com/

Quellen:
https://docs.microsoft.com/

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert

Diese Website verwendet Akismet, um Spam zu reduzieren. Erfahre mehr darüber, wie deine Kommentardaten verarbeitet werden.