Version : 1.1 · Date : 2026-10-22 · Domaine 1 de l'examen : Plan and implement an Azure Virtual Desktop infrastructure (40 à 45 %) et domaine 3 : Plan and implement user environments and apps (20 à 25 %)
En une phrase : dans un host pool pooled, le profil de l'utilisateur ne vit pas sur la VM mais dans un disque virtuel (VHDX) posé sur un partage SMB ; FSLogix l'attache à chaque ouverture de session, quel que soit le session host. Le stockage (Azure Files ou Azure NetApp Files), son authentification Kerberos et ses permissions décident de la vitesse et de la fiabilité des ouvertures de session.

Ce que l'examen demande#
Repris mot pour mot du guide d'étude AZ-140 (compétences au 20/07/2026), blocs Plan and implement storage for Azure Virtual Desktop user data et Plan and implement FSLogix :
| # | Compétence mesurée (guide officiel, en anglais) | Section de ce chapitre |
|---|---|---|
| 1.2.1 | Plan storage for Azure Virtual Desktop user data | 2 |
| 1.2.2 | Implement storage for FSLogix components | 5 |
| 1.2.3 | Implement storage accounts for Azure Virtual Desktop | 3 |
| 1.2.4 | Implement file shares for Azure Virtual Desktop | 4 |
| 1.2.5 | Implement Azure NetApp Files for Azure Virtual Desktop | 6 |
| 3.1.1 | Recommend FSLogix configuration | 7 |
| 3.1.2 | Configure FSLogix Profile Containers | 8 |
| 3.1.3 | Configure FSLogix ODFC containers | 9 |
| 3.1.4 | Configure FSLogix Cloud Cache | 10 |
| 3.1.5 | Implement FSLogix application masking | 11 |
Ce chapitre ne refait pas ce que le cours SC-500 traite déjà : les sources d'identité d'Azure Files et les deux niveaux d'autorisation en détail (SC-500 §4.5) et les private endpoints (SC-500 §5.3). Le réseau des session hosts est au chapitre 01, la sauvegarde et la reprise après sinistre au chapitre 08.
1. Les bases : profils, FSLogix et stockage#
1.1 Pourquoi un profil itinérant#
Un host pool pooled répartit les utilisateurs sur plusieurs session hosts identiques et jetables : lundi sur avd-0, mardi
sur avd-3. Sans solution de profil, chaque VM crée un profil local neuf, et l'utilisateur perd son bureau, ses paramètres, son
cache Outlook et sa connexion Teams. Le profil doit donc suivre l'utilisateur : c'est le rôle de FSLogix, la solution de profil
recommandée par Microsoft pour Azure Virtual Desktop.
| Notion | Ce que c'est |
|---|---|
| FSLogix | Agent Windows (services frxsvc et frxccds, pilotes de filtre) qui redirige le profil vers un disque virtuel. Préinstallé sur les images Windows 10 / 11 Enterprise multi-session de la Marketplace |
| Profile container | Un fichier VHD ou VHDX par utilisateur, qui contient tout son profil (C:\Users\{username}) |
| ODFC container | Un second container, facultatif, réservé aux données Microsoft 365 (Outlook, Teams, OneDrive…) |
| VHDLocations | Le ou les partages SMB où FSLogix cherche, puis crée, le container |
| Cloud Cache | Variante qui écrit le container sur plusieurs stockages à la fois (haute disponibilité, multirégion) |
| Application Masking | Fonction séparée de FSLogix : masquer des applications, polices, imprimantes selon l'utilisateur |
Pour le système, le profil reste sur C:\Users\{username} : FSLogix attache le VHDX à l'ouverture de session et le présente à
cet endroit. Les applications ne voient pas la différence, contrairement aux anciens roaming profiles qui copiaient les fichiers.
1.2 Le déroulé d'une ouverture de session#
sequenceDiagram
participant U as Utilisateur
participant SH as Session host et FSLogix
participant ID as Source d'identité
participant AF as Partage SMB
U->>SH: Ouverture de session
SH->>SH: Utilisateur membre de FSLogix Profile Include List ?
SH->>ID: Demande un ticket Kerberos pour le partage
ID-->>SH: Ticket de service
SH->>AF: Cherche le dossier du profil dans VHDLocations
alt Premier passage
SH->>AF: Crée le dossier et Profile_username.VHDX
end
SH->>AF: Attache le VHDX, pose un verrou
SH-->>U: Bureau chargé depuis le VHDX
Note over SH,AF: Fermeture de session : détache le VHDX, libère le verrou
Trois conséquences à retenir pour l'examen :
- l'ouverture de session dépend du stockage (latence, IOPS au moment des pics du matin) ;
- elle dépend de l'identité : sans ticket Kerberos valide, pas de profil (l'utilisateur reçoit un profil temporaire ou un refus selon la configuration) ;
- elle dépend des permissions : le compte de l'utilisateur doit pouvoir créer son dossier et n'ouvrir que le sien.
2. Planifier le stockage des données utilisateur#

2.1 Les quatre options#
| Critère | Azure Files Standard | Azure Files Premium | Azure NetApp Files | Storage Spaces Direct |
|---|---|---|---|---|
| Type | PaaS, HDD | PaaS, SSD | PaaS, appliance NetApp gérée | IaaS, cluster de VM |
| Compte / ressource | StorageV2 (GPv2) | FileStorage | NetApp account > capacity pool > volume | 2 VM minimum + Cloud Witness |
| Performances (maximum) | Plus faibles, mutualisées | Jusqu'à 100 000 IOPS et 10 GiB/s par partage, environ 3 ms | Jusqu'à 460 000 IOPS et 4,5 GiB/s par volume, environ 1 ms | Selon les disques et les VM |
| Taille | Jusqu'à 100 TiB par partage | Jusqu'à 100 TiB par partage | Capacity pool de 1 TiB minimum, volume de 50 GiB minimum | Selon les disques |
| Redondance | LRS, ZRS, GRS, GZRS | LRS, ZRS (pas de géo-redondance) | Zonale, réplication entre régions possible | À construire |
| Disponibilité | Toutes les régions | Toutes les régions | Régions sélectionnées | Partout |
| Exploitation | Aucune | Aucune | Faible | Totale : patchs, sauvegarde, HA |
Microsoft recommande Azure Files pour la plupart des clients ; Azure NetApp Files pour les très grands parcs ou les besoins de latence faible ; Storage Spaces Direct seulement si une contrainte l'impose (il faut tout gérer soi-même).
2.2 Choisir le niveau selon la charge#
Microsoft classe les utilisateurs en quatre profils de charge (workload types) : Light, Medium, Heavy, Power. La page Storage options for FSLogix profile containers donne :
| Charge | Azure Files | Azure NetApp Files |
|---|---|---|
| Light, moins de 200 utilisateurs | Standard | Standard |
| Light, plus de 200 utilisateurs | Premium, ou Standard avec plusieurs partages | Standard |
| Medium, Heavy | Premium | Premium (petit ou moyen parc) ou Standard (grand parc) |
| Power | Premium | Ultra |
La page Azure Files Azure Files guidance for virtual desktop workloads ajoute un repère par nombre d'utilisateurs FSLogix, lié aux limites de handles SMB (2 000 handles ouverts par fichier ou dossier, 10 000 sur la racine du partage) :
| Utilisateurs FSLogix | Recommandation Azure Files |
|---|---|
| Moins de 2 000 | Partage HDD (Standard) possible |
| 2 000 à 5 000 | 1 à 2 partages SSD, avec metadata caching |
| 5 000 à 10 000 | 2 à 4 partages SSD |
| Plus de 10 000 | Plusieurs partages SSD avec metadata caching ; augmentation des limites de handles en préversion |
Les deux pages ne fixent pas le même seuil (200 utilisateurs Light pour la page AVD, 2 000 utilisateurs pour la page Azure Files, qui raisonne en handles et non en charge). À l'examen, retenir la page AVD : Light et moins de 200 → Standard, sinon Premium.
Autres règles de la page Azure Files :
- SSD avec Cloud Cache : Cloud Cache multiplie les écritures, il lui faut du Premium ;
- le stockage reste dans la même région que le host pool, sinon chaque ouverture de session traverse le réseau longue distance ;
- les partages SSD n'ont pas de géo-redondance : la reprise multirégion passe par Cloud Cache (section 10) ou par une copie (chapitre 08).
flowchart TD
A[Charge et nombre d'utilisateurs] --> B{Light et moins de 200 ?}
B -- Oui --> C[Azure Files Standard]
B -- Non --> D{Très grand parc, latence très faible exigée ou Power users ?}
D -- Non --> E[Azure Files Premium]
D -- Oui --> F[Azure NetApp Files Premium ou Ultra]
E --> G{Haute disponibilité ou multirégion ?}
F --> G
G -- Oui --> H[Cloud Cache sur deux fournisseurs SSD]
G -- Non --> I[VHDLocations sur un partage]
2.3 Dimensionner : capacité et IOPS#
Deux grandeurs à calculer, puis à comparer aux limites du partage :
- Capacité = nombre d'utilisateurs × taille du profil (
SizeInMBs, 30 000 Mo par défaut) ; un VHDX dynamique ne consomme que ce qui est écrit, mais il faut prévoir la croissance ; - IOPS : le régime établi et surtout le pic du matin (tous les utilisateurs se connectent entre 8 h et 9 h).
Exemple de la documentation Azure Files : 2 000 utilisateurs, profils de 30 GiB, environ 10 IOPS par utilisateur en régime
établi (20 000 IOPS) et un pic d'ouverture de session estimé à 75 000 IOPS. Avec le modèle provisioned v2 des partages SSD,
le burst vaut MIN(MAX(3 × IOPS provisionnées, 10 000), 102 400) : provisionner 25 000 IOPS donne un burst de 75 000, qui
couvre le pic. Les crédits de burst s'accumulent pendant les heures calmes : (burst − IOPS provisionnées) × 3 600 par heure.
Pour un profil sans FSLogix (roaming profiles, dossiers redirigés), la même page compte environ 50 IOPS par utilisateur à la connexion et 20 en régime établi : FSLogix est aussi plus économe en stockage.
2.4 Ce qu'on stocke où#
| Donnée | Emplacement conseillé |
|---|---|
| Profils FSLogix (profile, ODFC) | Partage SMB dédié, Premium dès que la charge le justifie |
| Images MSIX / App Attach | Partage séparé (voir chapitre 07), pour ne pas mélanger les charges |
| Documents de l'utilisateur | OneDrive (Known Folder Move) plutôt que le profil : le profil reste petit |
redirections.xml |
Partage en lecture pour les utilisateurs, ou dossier local de l'image |
3. Les comptes de stockage Azure Files pour AVD#
3.1 Les choix à faire à la création#
| Paramètre | Valeur pour des profils FSLogix | Pourquoi |
|---|---|---|
| Performance | Premium (kind FileStorage) pour Medium, Heavy, Power ou plus de 200 utilisateurs |
IOPS et latence des ouvertures de session |
| Redundancy | ZRS si la région a des zones, sinon LRS | Premium n'a pas de GRS ; la reprise multirégion se fait autrement |
| Région | Celle du host pool | Latence |
| Networking | Public network access désactivé, private endpoint file dans le VNet des session hosts |
Le SMB 445 ne sort pas sur Internet ; voir SC-500 §5.3 |
| Identity-based access | AD DS, Microsoft Entra Kerberos ou Microsoft Entra Domain Services (une seule source) | Section 5 |
| Secure transfer required | Activé | SMB 3 chiffré |
| Large file shares | Activé (par défaut sur FileStorage) | Partages au-delà de 5 TiB en Standard |
Nommage : le nom du compte devient le nom du serveur SMB ({compte}.file.core.windows.net), celui que l'on écrit dans
VHDLocations, et, avec AD DS, le nom d'un objet du domaine.
3.2 Bicep#
Compte Premium, accès public coupé, Microsoft Entra Kerberos et permission de partage par défaut, avec le partage des profils :
// Compte Azure Files Premium pour les profils FSLogix, authentification Microsoft Entra Kerberos
param location string = resourceGroup().location
param storageAccountName string
resource stProfils 'Microsoft.Storage/storageAccounts@2025-01-01' = {
name: storageAccountName
location: location
kind: 'FileStorage'
sku: { name: 'Premium_ZRS' }
properties: {
minimumTlsVersion: 'TLS1_2'
supportsHttpsTrafficOnly: true
publicNetworkAccess: 'Disabled' // accès par private endpoint uniquement
azureFilesIdentityBasedAuthentication: {
directoryServiceOptions: 'AADKERB' // AD, AADDS ou AADKERB : une seule source par compte
defaultSharePermission: 'StorageFileDataSmbShareContributor'
}
}
}
resource fileService 'Microsoft.Storage/storageAccounts/fileServices@2025-01-01' = {
parent: stProfils
name: 'default'
}
resource shareProfils 'Microsoft.Storage/storageAccounts/fileServices/shares@2025-01-01' = {
parent: fileService
name: 'profiles'
properties: {
shareQuota: 1024 // Go ; en Premium provisioned v1, la capacité provisionnée fixe aussi les IOPS
enabledProtocols: 'SMB'
}
}
Valeurs possibles vérifiées dans la référence ARM Microsoft.Storage/storageAccounts : directoryServiceOptions = None, AD,
AADDS, AADKERB ; defaultSharePermission = None, StorageFileDataSmbShareReader, StorageFileDataSmbShareContributor,
StorageFileDataSmbShareElevatedContributor.
3.3 Terraform#
Vérifié sur la documentation du fournisseur hashicorp/azurerm (version 5.10.0) :
# Compte Azure Files Premium pour les profils FSLogix, authentification Microsoft Entra Kerberos
resource "azurerm_storage_account" "profils" {
name = local.storage_account_name
resource_group_name = azurerm_resource_group.avd.name
location = azurerm_resource_group.avd.location
account_kind = "FileStorage"
account_tier = "Premium"
account_replication_type = "ZRS"
public_network_access = "Disabled"
https_traffic_only_enabled = true
azure_files_authentication {
directory_type = "AADKERB" # AD, AADDS ou AADKERB
default_share_level_permission = "StorageFileDataSmbShareContributor"
}
}
resource "azurerm_storage_share" "profiles" {
name = "profiles"
storage_account_id = azurerm_storage_account.profils.id
quota = 1024 # Go, plus de 100 en Premium
enabled_protocol = "SMB"
}
Pour un rôle sur le partage seul, utiliser l'attribut rbac_scope_id du partage comme scope de azurerm_role_assignment (le
fournisseur l'expose parce que la portée RBAC d'un partage n'est pas son ID Resource Manager).
4. Les partages de fichiers#
4.1 Combien de partages#
- Un partage pour les profils, un autre pour MSIX / App Attach : charges et permissions différentes.
- Au-delà de quelques milliers d'utilisateurs, plusieurs partages (et parfois plusieurs comptes), pour rester sous les limites
de handles et d'IOPS d'un partage (section 2.2). On répartit les utilisateurs par groupe avec les object-specific settings
de FSLogix (
HKLM\SOFTWARE\FSLogix\Profiles\ObjectSpecific\{SID du groupe}, avec son propreVHDLocations). - Ne pas compter sur plusieurs chemins dans
VHDLocationspour la résilience : FSLogix crée le container dans le premier chemin accessible et ne le recopie pas ailleurs (section 10.4).
4.2 Les réglages SMB utiles#
| Réglage (Azure Files) | Usage pour AVD |
|---|---|
| SMB Multichannel (Premium) | Plus de débit par client ; à activer sur les comptes Premium |
| Versions SMB, chiffrement de canal, chiffrement des tickets Kerberos | Durcissement ; Microsoft Entra Kerberos chiffre toujours les tickets en AES-256 |
| Soft delete des partages | Protège contre la suppression d'un partage entier |
| Snapshots et Azure Backup | Restauration d'un profil : chapitre 08 |
Kerberos RC4 → AES. Les mises à jour Windows Server de 2026 font passer le chiffrement Kerberos par défaut d'AD DS de RC4 à AES (avril 2026 selon les pages FSLogix, ou dès avril pour les SPN personnalisés ; juillet 2026 pour le cas général selon la page Azure Files). Un compte de stockage joint à AD DS encore en RC4 perd l'accès aux profils ; Microsoft Entra Kerberos et Entra Domain Services ne sont pas concernés. Correction, non disruptive : depuis une machine du domaine, avec le rôle Storage Account Contributor et les droits Reset Password et Write msDS-SupportedEncryptionTypes sur l'OU,
Update-AzStorageAccountAuthForAES256 -ResourceGroupName {rg} -StorageAccountName {compte}(module AzFilesHybrid : rotation de la clékerb1, AES-256 sur l'objet AD, nouveau mot de passe), puisklist purgeetklist get cifs/{compte}.file.core.windows.netdoit montrerAES-256-CTS-HMAC-SHA1-96.
4.3 Private endpoint et DNS#
Les session hosts doivent résoudre {compte}.file.core.windows.net vers l'adresse privée du private endpoint (zone
privatelink.file.core.windows.net liée au VNet ou au DNS du hub). Mécanique complète : SC-500 §5.3.
Vérification depuis un session host : Resolve-DnsName {compte}.file.core.windows.net doit renvoyer une adresse privée, et
Test-NetConnection {compte}.file.core.windows.net -Port 445 doit réussir.
5. Brancher FSLogix sur le partage : identité et permissions#
5.1 Trois sources d'identité, une seule par compte#

| Source | Quand la choisir | Ce qu'il faut |
|---|---|---|
| AD DS | Domaine AD DS existant, session hosts AD DS joined ou hybrid joined | Ligne de vue vers les DC ; identités synchronisées dans Entra ID ; jonction du compte au domaine (AzFilesHybrid) |
| Microsoft Entra Kerberos | Session hosts Microsoft Entra joined (ou hybrid joined) sans ligne de vue vers les DC | Identités hybrides (Azure, Azure Government, 21Vianet) ou cloud-only et externes (cloud Azure public uniquement) ; admin consent ; exclusion de la MFA ; clé de registre côté client |
| Microsoft Entra Domain Services | Domaine managé déjà en place, ou besoin d'un domaine sans DC à gérer | Session hosts joints au domaine managé ; activation dans le portail |
Les détails communs (rôles de partage, permission par défaut, ACL) sont dans SC-500 §4.5. Ici, ce qui est propre à AVD.
AD DS. Le module AzFilesHybrid crée un objet (compte d'ordinateur ou de service) qui représente le compte de stockage dans le
domaine :
# Depuis une machine jointe au domaine, avec Az.Storage et AzFilesHybrid ; aucun secret dans le script
Join-AzStorageAccount -ResourceGroupName 'rg-avd-profils' -StorageAccountName 'stavdprofils01' `
-DomainAccountType 'ComputerAccount' -OrganizationalUnitDistinguishedName 'OU=Stockage,DC=contoso,DC=com'
Le mot de passe de cet objet doit être renouvelé avant son expiration (sinon plus d'authentification) : la stratégie de mot de passe du domaine s'applique aussi à lui.
Microsoft Entra Kerberos. La configuration la plus fréquente avec des session hosts Microsoft Entra joined :
- activer Microsoft Entra Kerberos sur le compte (portail : File shares > Identity-based access, ou
az storage account update --name {compte} --resource-group {rg} --enable-files-aadkerb true) ; - accorder l'admin consent au service principal créé pour le compte de stockage ;
- exclure l'application du compte de stockage de la MFA dans Conditional Access : le ticket est obtenu silencieusement à l'ouverture de session, sans interface pour un second facteur ;
- pour les groupes cloud-only, ajouter le tag
kdc_enable_cloud_group_sidsdans le manifeste de l'app registration (sinon seuls les groupes synchronisés sont dans le ticket) ; - sur chaque session host, activer la récupération du ticket Kerberos cloud :
| Réglage client | Où |
|---|---|
CloudKerberosTicketRetrievalEnabled = 1 |
HKLM\SYSTEM\CurrentControlSet\Control\Lsa\Kerberos\Parameters, ou Intune Settings catalog (Kerberos), ou GPO Allow retrieving the Azure AD Kerberos Ticket Granting Ticket during logon |
LoadCredKeyFromProfile = 1 |
HKLM\Software\Policies\Microsoft\AzureADAccount : les clés d'identification suivent le profil FSLogix d'une VM à l'autre |
Sur Windows multi-session, passer par le Settings catalog d'Intune : la méthode OMA-URI ne fonctionne pas sur ces machines.
Microsoft Entra Domain Services. Activation dans le portail ; le service crée une OU AzureFilesConfig dans le domaine managé
pour l'objet du compte de stockage.
Règle de choix : la jonction des session hosts décide de la source (AD DS joined → AD DS ; Entra joined → Microsoft Entra Kerberos ; joints au domaine managé → Entra Domain Services). Azure NetApp Files n'accepte que les deux sources à base de domaine (section 6.2).
5.2 Les deux niveaux de permissions#

Niveau partage (Azure RBAC). Il faut un rôle de données SMB pour monter le partage :
| Qui | Rôle | Remarque |
|---|---|---|
| Utilisateurs AVD | Storage File Data SMB Share Contributor | Ou la default share-level permission du compte, recommandée par Microsoft pour toutes les identités authentifiées |
| Administrateurs du stockage | Storage File Data SMB Share Elevated Contributor | Seul ce rôle (ou la clé du compte) permet de modifier les ACL NTFS |
# Rôle de partage pour le groupe des utilisateurs AVD, portée = le partage profiles
$compte = Get-AzStorageAccount -ResourceGroupName 'rg-avd-profils' -Name 'stavdprofils01'
$portee = "$($compte.Id)/fileServices/default/fileshares/profiles"
New-AzRoleAssignment -ObjectId '{objectId du groupe}' -RoleDefinitionName 'Storage File Data SMB Share Contributor' -Scope $portee
Niveau fichiers (ACL NTFS). Les ACL recommandées pour FSLogix : chaque utilisateur peut créer son dossier à la racine, devient son propriétaire (CREATOR OWNER), et ne voit pas le contenu des autres.
| Identité | Accès | S'applique à |
|---|---|---|
| CREATOR OWNER | Modify | Sous-dossiers et fichiers seulement |
| Administrateurs (groupe d'admins) | Full Control | Ce dossier, sous-dossiers et fichiers |
| Utilisateurs AVD (groupe) | Modify | Ce dossier seulement |
Avec AD DS ou une identité hybride, depuis une machine qui voit les DC, partage monté avec une identité qui a le rôle Elevated Contributor :
# Retire l'héritage puis pose les ACL recommandées par la doc FSLogix (CONTOSO = domaine de test)
icacls \\stavdprofils01.file.core.windows.net\profiles /inheritance:r
icacls \\stavdprofils01.file.core.windows.net\profiles /grant:r "CREATOR OWNER:(OI)(CI)(IO)(M)"
icacls \\stavdprofils01.file.core.windows.net\profiles /grant:r "CONTOSO\Domain Admins:(OI)(CI)(F)"
icacls \\stavdprofils01.file.core.windows.net\profiles /grant:r "CONTOSO\Domain Users:(M)"
Avec des identités cloud-only (Microsoft Entra Kerberos), File Explorer et icacls ne savent pas résoudre ces identités : les
ACL se posent dans le portail (Manage access sur le partage) ou par RestSetAcls. Alternative pour tous les cas : le réglage
FSLogix SIDDirSDDL, qui impose l'ACL du dossier de l'utilisateur à sa création.
Monter le partage avec la clé du compte pour poser les ACL est possible mais déconseillé : la clé donne un accès total au compte. Préférer l'identité avec le rôle Elevated Contributor, ou désactiver l'accès par clé (shared key) quand c'est possible.
5.3 Les erreurs classiques#
| Symptôme | Cause probable |
|---|---|
| Profil temporaire, journal FSLogix « Access is denied » | Rôle de partage manquant, ou ACL NTFS trop restrictives |
| « The network path was not found » | DNS public au lieu du private endpoint, port 445 bloqué |
| Ça marche avec un compte admin, pas avec un utilisateur | ACL « Users : Modify » appliquée aux sous-dossiers (ou absente) |
| Entra joined : échec du ticket Kerberos | CloudKerberosTicketRetrievalEnabled absent, admin consent non accordé, MFA exigée sur l'application de stockage |
| Groupes cloud-only sans effet sur les ACL | Tag kdc_enable_cloud_group_sids absent du manifeste |
| Tout casse après la mise à jour Windows de 2026 | Compte AD DS encore en RC4 : Update-AzStorageAccountAuthForAES256 (4.2) |
6. Azure NetApp Files pour AVD#
6.1 L'empilement des ressources#
| Ressource | Rôle | Point d'attention |
|---|---|---|
| NetApp account | Conteneur de gestion | Porte la connexion Active Directory (une seule par NetApp account) |
| Capacity pool | Capacité et niveau de service : Standard, Premium, Ultra | 1 TiB minimum ; le niveau fixe le débit par TiB |
| Volume SMB | Le partage des profils | 50 GiB minimum ; options Continuous Availability, SMB3 encryption, access-based enumeration |
| Sous-réseau délégué | Accès réseau au volume | Délégué à Microsoft.NetApp/volumes, un seul par VNet |
| Connexion AD | Jonction du volume au domaine | DNS, DC, OU, compte autorisé à joindre des machines |
6.2 Les règles propres à FSLogix#
- Authentification : Kerberos via AD DS ou Microsoft Entra Domain Services uniquement. Les identités cloud-only ne sont pas prises en charge sur Azure NetApp Files (pas de Microsoft Entra Kerberos). Les session hosts peuvent être Entra joined si les identités viennent d'AD DS (identités hybrides).
- Permissions : uniquement les ACL Windows (pas de rôle RBAC de partage comme sur Azure Files).
- Continuous Availability à activer sur le volume : elle est prise en charge pour les containers FSLogix (profile et ODFC), MSIX App Attach (500 session hosts maximum par volume) et Citrix App Layering.
- Montée en charge : Microsoft conseille de limiter à environ 3 000 profils actifs simultanés par volume régulier, au-delà répartir sur plusieurs volumes, chacun dans une zone de disponibilité différente.
- Protection : snapshots et Azure NetApp Files backup (voir chapitre 08).
VHDLocations pointe alors vers le chemin SMB du volume, par exemple \\anf-avd-1234.contoso.com\profiles (nom affiché dans les
Mount instructions du volume).
7. Recommander une configuration FSLogix#
7.1 Les décisions dans l'ordre#
| Décision | Recommandation par défaut | Exceptions |
|---|---|---|
| Type de container | Un seul profile container | ODFC si une autre solution gère le profil, ou pour séparer les données Microsoft 365 (section 9) |
| Format | VHDX (VolumeType = VHDX) |
VHD seulement pour des raisons de compatibilité ; le défaut de FSLogix est encore vhd |
| Taille | SizeInMBs 30 000 (défaut), disque dynamique (IsDynamic = 1) |
Plus grand si gros OST Outlook ; on peut augmenter, jamais réduire |
| Emplacement | VHDLocations vers un partage de la région |
CCDLocations (Cloud Cache) si haute disponibilité ou multirégion |
| Qui utilise FSLogix | Tous les utilisateurs (Everyone dans FSLogix Profile Include List) |
Exclure les comptes d'administration via FSLogix Profile Exclude List |
| Contenu du profil | Profil complet | Exclusions ciblées par redirections.xml (Teams, caches), avec parcimonie |
| Comportement en échec | Ne pas laisser ouvrir de session avec un profil temporaire | PreventLoginWithFailure, PreventLoginWithTempProfile |
7.2 Les valeurs du tutoriel Microsoft#
La page AVD Set up FSLogix Profile Container with Azure Files and AD DS or Microsoft Entra Domain Services et le tutoriel FSLogix
proposent ces valeurs sous HKLM\SOFTWARE\FSLogix\Profiles :
| Valeur | Type | Valeur conseillée | Défaut de FSLogix | Effet |
|---|---|---|---|---|
Enabled |
DWORD | 1 | 0 | Active les profile containers (obligatoire) |
VHDLocations |
MULTI_SZ ou REG_SZ | \\{compte}.file.core.windows.net\profiles |
— | Où chercher, puis créer (obligatoire) |
DeleteLocalProfileWhenVHDShouldApply |
DWORD | 1 | 0 | Supprime un profil local existant qui gênerait |
FlipFlopProfileDirectoryName |
DWORD | 1 | 0 | Dossier %username%_%sid% au lieu de %sid%_%username%, plus lisible |
LockedRetryCount |
DWORD | 3 | 12 | Essais si le VHDX est verrouillé |
LockedRetryInterval |
DWORD | 15 | 5 | Secondes entre deux essais |
ProfileType |
DWORD | 0 | 0 | Profil normal, une seule session à la fois |
ReAttachIntervalSeconds |
DWORD | 15 | 10 | Attente entre deux tentatives de réattachement |
ReAttachRetryCount |
DWORD | 3 | 60 | Tentatives de réattachement après une coupure |
SizeInMBs |
DWORD | 30000 | 30000 | Taille maximale du container |
VolumeType |
REG_SZ | VHDX | vhd | Format des nouveaux containers |
Changer FlipFlopProfileDirectoryName sur un parc existant fait chercher FSLogix dans un autre nom de dossier : il crée des
profils neufs (les anciens restent sur le partage). À décider avant le premier utilisateur.
8. Configurer les profile containers#
8.1 Où poser les réglages#
- Dans l'image (script de personnalisation, voir chapitre 04) : le plus simple pour un parc homogène.
- GPO : modèles d'administration FSLogix (
fslogix.admx,fslogix.adml) livrés avec FSLogix, copiés dans le magasin central. - Intune : Settings catalog > FSLogix, pour des session hosts Microsoft Entra joined.
Exemple dans un script d'image, sans aucun secret (le partage s'ouvre avec l'identité de l'utilisateur) :
# Configuration FSLogix des profile containers (valeurs du tutoriel Microsoft)
$ErrorActionPreference = 'Stop'
$cle = 'HKLM:\SOFTWARE\FSLogix\Profiles'
New-Item -Path $cle -Force | Out-Null
$valeurs = @{
Enabled = 1
DeleteLocalProfileWhenVHDShouldApply = 1
FlipFlopProfileDirectoryName = 1
LockedRetryCount = 3
LockedRetryInterval = 15
ReAttachIntervalSeconds = 15
ReAttachRetryCount = 3
SizeInMBs = 30000
}
foreach ($nom in $valeurs.Keys) {
New-ItemProperty -Path $cle -Name $nom -PropertyType DWord -Value $valeurs[$nom] -Force | Out-Null
}
New-ItemProperty -Path $cle -Name VolumeType -PropertyType String -Value 'VHDX' -Force | Out-Null
New-ItemProperty -Path $cle -Name VHDLocations -PropertyType MultiString `
-Value '\\stavdprofils01.file.core.windows.net\profiles' -Force | Out-Null
8.2 Qui est pris en charge : les groupes locaux#
FSLogix crée quatre groupes locaux sur chaque machine : FSLogix Profile Include List, FSLogix Profile Exclude List,
FSLogix ODFC Include List, FSLogix ODFC Exclude List. Par défaut, Everyone est dans les listes Include et les listes
Exclude sont vides. L'exclusion l'emporte. Usage typique : exclure les administrateurs locaux, ou limiter FSLogix à un groupe
pilote. Premier réflexe de dépannage quand un utilisateur reçoit un profil local : vérifier ces groupes.
8.3 Les exclusions : redirections.xml#
FSLogix exclut déjà automatiquement certaines données : redirection vers C:\Users\local_%username% de données d'identité
(Protect, Credentials) et du cache Office, et suppression de données temporaires des applications MSIX à la fermeture.
Pour exclure d'autres dossiers, on écrit un fichier redirections.xml :
<?xml version="1.0" encoding="UTF-8"?>
<FrxProfileFolderRedirection ExcludeCommonFolders="0">
<Excludes>
<Exclude Copy="0">AppData\Local\CrashDumps</Exclude>
</Excludes>
<Includes>
</Includes>
</FrxProfileFolderRedirection>
| Élément | Signification |
|---|---|
ExcludeCommonFolders |
Masque de bits des dossiers connus à sortir du container : 1 Contacts, 2 Desktop, 4 Documents, 8 Downloads, 16 Links, 32 Music, 64 Pictures et Videos, 128 dossiers Low Integrity (ex. 7 = Contacts + Desktop + Documents) |
Exclude Copy="0" |
Dossier vide créé dans local_%username%, rien n'est copié ; supprimé à la fermeture (le cas courant) |
Copy="1" |
Copie depuis le container vers le local à l'ouverture ; les nouveautés sont perdues à la fermeture |
Copy="2" |
Copie vers le container à la fermeture ; à ne pas utiliser sauf demande du support Microsoft |
Copy="3" |
1 + 2 : copie dans les deux sens |
Include |
Réintègre un sous-dossier d'un dossier exclu ; il doit déjà exister dans le profil |
Règles à connaître :
- le chemin est relatif à
%userprofile%(sansC:\Users\%username%) ; Excludel'emporte surIncludepour le même dossier ;- le fichier est copié à l'ouverture de session depuis le dossier indiqué par
RedirXMLSourceFolder(chemin du dossier, sans le nom du fichier) vers%userprofile%\AppData\Local\FSLogix\redirections.xml; - il ne s'applique qu'aux profile containers, pas à l'ODFC ;
- ajouter une exclusion ne vide pas les données déjà dans le VHDX : le container ne rapetisse pas ;
- chaque entrée est vérifiée à chaque accès fichier : peu d'entrées, sur des dossiers volumineux uniquement ;
- vérification :
frx list-redirectssur le session host, et le journalC:\ProgramData\FSLogix\Logs\Profile.
8.4 Conflits de session et verrous#
Un VHDX est attaché en lecture-écriture par une seule session. Cas typiques :
| Situation | Ce qui se passe | Réglage ou action |
|---|---|---|
L'utilisateur a une session déconnectée sur avd-1 et se connecte sur avd-2 |
Le broker AVD le renvoie normalement vers sa session existante ; sinon le VHDX est verrouillé | LockedRetryCount × LockedRetryInterval = temps d'attente avant échec |
| Le session host a planté, le verrou reste | Handle SMB orphelin sur le partage | Sur Azure Files (Az.Storage) : Get-AzStorageFileHandle -ShareName profiles -Path '{dossier}' -Recursive pour voir le handle, puis Close-AzStorageFileHandle -ShareName profiles -Path '{dossier}/{fichier}.VHDX' -CloseAll, après avoir vérifié qu'aucune session n'est ouverte |
| L'utilisateur ouvre un bureau et une RemoteApp sur deux host pools | Deux sessions, deux machines, un seul VHDX | Concevoir pour éviter le cas, ou containers différents par host pool (VHDLocations différents) |
Sessions simultanées (ProfileType = 3, disques de différence) |
Une session en écriture, les autres en lecture seule | Les concurrent connections sur la même machine ne sont pas prises en charge sur un host pool AVD ; OneDrive ne prend jamais en charge les sessions multiples sur le même container |
| Profil inaccessible : l'utilisateur ne doit pas travailler en profil temporaire | Données perdues à la fermeture | PreventLoginWithFailure = 1, PreventLoginWithTempProfile = 1 |
8.5 Garder des containers petits#
- VHD disk compaction : FSLogix récupère l'espace libre du VHDX à la fermeture de session (seuil non configurable).
- OneDrive Known Folder Move pour les documents, plutôt que de les laisser grossir dans le profil.
redirections.xmlpour les caches volumineux et inutiles (Teams, navigateurs), en suivant les listes publiées par Microsoft.
9. Configurer les ODFC containers#

L'ODFC container (Office Data File Containers) ne contient que les données Microsoft 365 : cache Outlook (OST), données
Teams, OneDrive, index de recherche, activation Office. Il est configuré sous HKLM\SOFTWARE\Policies\FSLogix\ODFC :
| Valeur | Défaut | Effet |
|---|---|---|
Enabled |
0 | Active l'ODFC container |
VHDLocations |
— | Partage de l'ODFC (peut être différent de celui des profils) |
IncludeOutlook |
1 | Cache Outlook dans le container |
IncludeOneDrive |
1 | Cache OneDrive |
IncludeTeams |
0 | Données Teams, à activer explicitement |
IncludeOfficeActivation |
1 | Licence Office |
VHDAccessMode |
— | Mode d'accès ; 3 = VHD(x) par session pour les connexions multiples (NumSessionVHDsToKeep) |
Quand l'utiliser :
- Recommandation Microsoft : un seul profile container. Il contient déjà tout ce que l'ODFC contiendrait ; ajouter l'ODFC par-dessus n'apporte rien.
- ODFC seul quand une autre solution gère le profil (roaming profiles, solution tierce) et qu'on veut seulement de bonnes performances Outlook et Teams.
- Profile + ODFC pour séparer les données : par exemple un profil de 10 Go sur un partage et un ODFC de 50 Go sur un autre stockage, ou des sauvegardes différentes.
Si les deux containers sont actifs, Microsoft 365 va dans l'ODFC et le reste dans le profil.
10. Configurer Cloud Cache#

10.1 Le principe#
Avec VHDLocations, la session lit et écrit directement sur le partage : s'il disparaît, la session se fige. Cloud Cache
intercale un cache local sur le session host :
- la session travaille sur un proxy file local, adossé au local cache (
C:\ProgramData\FSLogix\Cachepar défaut) ; - les lectures viennent du cache, ou à défaut du premier fournisseur sain (hydrate) ;
- les écritures partent du cache vers tous les fournisseurs, de façon asynchrone (flush) ;
- un fournisseur peut tomber pendant la session sans la couper ; il est resynchronisé à son retour.
Les fournisseurs (providers) sont des partages SMB (Azure Files, Azure NetApp Files, serveur de fichiers) ou des Azure page
blobs, 4 au maximum, déclarés dans CCDLocations à la place de VHDLocations (les deux ne doivent jamais coexister).
10.2 La syntaxe de CCDLocations#
type=smb,name="AZURE FILES",connectionString=\\stavdprofils01.file.core.windows.net\profiles;type=smb,name="ANF",connectionString=\\anf-avd-1234.contoso.com\profiles
type,name,connectionStringsont sensibles à la casse (type=smb, pastype=SMB) ; pas d'espace autour des délimiteurs ;;entre deux fournisseurs ;- l'ordre compte : le premier fournisseur est le seul lu tant qu'il est sain ;
- pour un page blob, jamais la chaîne de connexion en clair : la stocker dans le Credential Manager de la VM avec
frx add-secure-key -key {nom} -value {chaîne}puis la référencer partype=azure,connectionString="|fslogix/{nom}|". Cette chaîne contient la clé du compte (accès complet) : les fournisseurs SMB, authentifiés par Kerberos, sont préférables.
10.3 Les réglages qui comptent#
| Valeur | Où | Conseil |
|---|---|---|
CCDLocations |
HKLM\SOFTWARE\FSLogix\Profiles (ou ...\Policies\FSLogix\ODFC) |
Obligatoire ; remplace VHDLocations |
ClearCacheOnLogoff |
Idem | 1 sur un host pool pooled : le cache local est supprimé à la fermeture (défaut 0) |
HealthyProvidersRequiredForRegister |
Idem | Défaut 0 (ouverture même sans fournisseur) ; 1 conseillé, avec PreventLoginWithFailure |
HealthyProvidersRequiredForUnregister |
Idem | Défaut 1 : la fermeture attend un fournisseur sain ; jamais 0 (risque de perte des données du cache) |
CacheDirectory |
HKLM\SYSTEM\CurrentControlSet\Services\frxccd\Parameters |
Disque local rapide (SSD, NVMe) ; différent de ProxyDirectory |
CcdMaxCacheSizeInMBs |
— | Retiré le 11/02/2025 |
Points d'attention :
- le cache local occupe de la place sur chaque session host pour chaque utilisateur connecté : dimensionner le disque de l'OS (ou un disque temporaire rapide) en conséquence ;
- si aucun fournisseur ne peut fournir une donnée absente du cache, la session peut se figer, voire planter (BSOD) ;
- Cloud Cache multiplie les écritures : Microsoft recommande des partages SSD.
10.4 Haute disponibilité et multirégion#

La page FSLogix configuration examples décrit des modèles progressifs :
| Modèle | Stockage | Ce qu'il apporte |
|---|---|---|
| Standard | VHDLocations, un partage |
Simple ; pas de résilience au-delà de celle du partage (ZRS) |
| Standard + HA | Cloud Cache sur deux fournisseurs de la même région (ex. Azure Files + Azure NetApp Files) | Survit à la perte d'un stockage |
| Standard + DR | Un host pool de secours dans une autre région, sans reprise des profils | Les utilisateurs retrouvent un bureau, avec un profil neuf |
| Advanced + DR | Cloud Cache : région primaire CCDLocations = A;B, région de secours CCDLocations = B;A |
Le profil existe déjà dans la région de secours ; chaque host pool lit d'abord son stockage local |
| Complex + DR | Actif / actif, utilisateurs répartis sur deux régions | Le plus résilient, le plus coûteux et le plus délicat |
Piège classique : plusieurs chemins dans VHDLocations ne donnent aucune résilience. FSLogix prend le premier accessible et y
crée le container ; si ce partage tombe, il en crée un nouveau (vide) sur le suivant. Pour répartir des utilisateurs sur
plusieurs partages, utiliser les object-specific settings ; pour la résilience, Cloud Cache.
11. Application Masking#

11.1 Le principe#
Une seule image contient toutes les applications ; FSLogix masque celles qu'un utilisateur ne doit pas voir. Cela évite de multiplier les images ou les host pools pour quelques applications sous licence.
- Outil : FSLogix Apps RuleEditor, installé à part (sur une machine d'administration qui a les applications).
- Un rule set = deux fichiers :
.fxr(les règles) et.fxa(les assignments). - Déploiement : copier les deux fichiers dans
C:\Program Files\FSLogix\Apps\Rulessur chaque session host ; le service FSLogix les compile (dossierCompiledRules, fichiers.fxcet.fxac) et les applique immédiatement.
11.2 Les types de règles#
| Type | Effet |
|---|---|
| Hiding | Masque des fichiers, dossiers, clés de registre, polices, imprimantes : l'application disparaît pour l'utilisateur |
| Redirection | Redirige un chemin de fichier ou de registre vers un autre |
| Specify value | Force une valeur de registre |
| App container | Retiré le 11/02/2025 |
11.3 Les assignments#
- Cibles possibles : User, Group, Process, Network Location (adresse IP), Computer, Directory container (OU), Environment
variable (par exemple
CLIENTNAMEpour une licence par appareil). - Un nouveau rule set contient
Everyoneavec Applies = No : sans autre ligne, il ne s'applique à personne. - Évaluation de haut en bas :
Everyone = Noen haut puisCONTOSO\Finance = Yes→ la règle s'applique au groupe Finance seulement ; dans l'ordre inverse, elle ne s'applique à personne. Les deux exemples de Microsoft montrent que la ligne la plus basse qui correspond à l'utilisateur l'emporte (ordre réglé par Move Up / Move Down). - Applies = Yes signifie que la règle s'applique : pour une règle de masquage, l'application est cachée pour cette cible.
- Les assignments ne prennent pas en charge les comptes Microsoft Entra cloud-only : utilisateurs et groupes synchronisés depuis AD DS, et session hosts qui voient un contrôleur de domaine pour résoudre les SID.
Tutoriel Microsoft : masquer Google Chrome. RuleEditor > New rule set > Hiding, choisir l'application installée, tester avec
Apply Rules to System, puis Manage Assignments : Everyone = No, CONTOSO\Domain Users = Yes.
12. Protéger les profils#
- Sauvegarde : Azure Backup pour Azure Files (snapshots de partage), snapshots et backup Azure NetApp Files. Stratégie, restauration d'un profil et reprise multirégion : chapitre 08.
- Réseau : private endpoint et accès public coupé (SC-500 §5.3).
- Accès : rôles de partage par groupe, ACL de la section 5.2, pas de montage avec la clé du compte ;
AccessNetworkAsComputerObject(attacher le VHDX avec le compte ordinateur) seulement si le stockage ne sait pas faire autrement : chaque VM aurait alors accès à tous les profils. - Antivirus : appliquer, dans toutes les couches (antivirus, analyse réseau, DLP), les exclusions publiées par FSLogix :
%ProgramData%\FSLogix\Cache\*et\Proxy\*(Cloud Cache),%TEMP%\*\*.VHD(X)et%WINDIR%\TEMP\*\*.VHD(X)(disques de différence),\\{partage}\*\*.VHD(X)avec.lock,.meta,.metadata, les clésHKLM\SOFTWARE\FSLogixetHKLM\SOFTWARE\Policies\FSLogix, et les points de montage des containers. Sans elles : verrous (ERROR_SHARING_VIOLATION), profils temporaires, corruption de containers, ouvertures et fermetures lentes.
13. Labs conseillés#
Dans un abonnement de test, avec un host pool pooled de test d'une ou deux VM (voir chapitre 03) et deux utilisateurs de test. Coûts principaux : les VM (les arrêter hors usage) et le partage Premium, facturé à la capacité provisionnée même vide (100 GiB minimum). Supprimer le groupe de ressources à la fin de chaque séance.
Lab 1. Un profil FSLogix sur Azure Files avec Microsoft Entra Kerberos.
- Compte
FileStoragePremium, partageprofiles, private endpoint dans le VNet des session hosts. - Activer Microsoft Entra Kerberos, accorder l'admin consent, exclure l'application de stockage de la MFA.
- Default share-level permission : Storage File Data SMB Share Contributor.
- Sur le session host (Entra joined) :
CloudKerberosTicketRetrievalEnabled,LoadCredKeyFromProfile, puis les valeurs de la section 8.1. - Résultat attendu : à la première connexion, un dossier
{username}_{SID}et unProfile_{username}.VHDXapparaissent sur le partage ; à la connexion suivante sur l'autre VM, le fond d'écran choisi est conservé.
Lab 2. Les ACL NTFS recommandées.
- Poser les ACL de la section 5.2 (portail Manage access en cloud-only,
icaclsen hybride). - Se connecter avec les deux utilisateurs.
- Résultat attendu : chacun a son dossier ; depuis la session de l'un, ouvrir
\\{compte}.file.core.windows.net\profiles\{dossier de l'autre}échoue (accès refusé).
Lab 3. Une exclusion avec redirections.xml.
- Fichier avec
<Exclude Copy="0">AppData\Local\CrashDumps</Exclude>, déposé dans un dossier lisible par les utilisateurs. RedirXMLSourceFolder= ce dossier (sans le nom du fichier).- Résultat attendu :
frx list-redirectsliste l'exclusion, le journalProfile-{date}.logmontre la copie du fichier.
Lab 4. Cloud Cache sur deux partages.
- Second compte Premium et partage, mêmes permissions.
- Remplacer
VHDLocationsparCCDLocations(deux fournisseurstype=smb),ClearCacheOnLogoff = 1. - Résultat attendu : après une session, le container existe sur les deux partages ; le cache local est vidé à la fermeture.
Lab 5. Masquer une application.
- Installer une application sur le session host et FSLogix Apps RuleEditor sur une VM d'administration jointe à AD DS.
- Rule set Hiding, assignment
Everyone = Nopuis un groupe synchronisé depuis AD DS= Yes. - Copier
.fxret.fxadansC:\Program Files\FSLogix\Apps\Rules. - Résultat attendu : l'application disparaît pour un membre du groupe, reste visible pour l'autre utilisateur.
14. Les pièges d'examen#
| Situation dans la question | Réponse attendue | Pourquoi |
|---|---|---|
| Session hosts Entra joined, aucune ligne de vue vers les DC, profils sur Azure Files | Microsoft Entra Kerberos | AD DS et Entra Domain Services exigent l'accès à des DC |
| Utilisateurs cloud-only, profils FSLogix | Azure Files + Microsoft Entra Kerberos (tag kdc_enable_cloud_group_sids) |
Azure NetApp Files n'accepte pas les identités cloud-only |
| Activer AD DS et Entra Kerberos sur le même compte | Impossible : une seule source d'identité par compte | Créer un second compte si besoin |
| L'ouverture de session échoue silencieusement avec Entra Kerberos | Exclure l'application du compte de stockage de la MFA | Pas d'interface pour le second facteur |
| Les utilisateurs montent le partage mais ne peuvent pas poser d'ACL | Normal : il faut Storage File Data SMB Share Elevated Contributor | Contributor ne modifie pas les ACL |
| Un utilisateur voit les dossiers des autres | ACL « Users : Modify » sur ce dossier seulement, CREATOR OWNER sur les sous-dossiers | Sinon droits hérités partout |
| 1 000 utilisateurs Medium, stockage le plus simple | Azure Files Premium | Medium = Premium, PaaS sans gestion |
| 150 utilisateurs Light, coût minimal | Azure Files Standard | Seuil de 200 utilisateurs Light |
| Latence d'environ 1 ms, Power users | Azure NetApp Files Ultra | Niveau le plus rapide |
| Profils sur Azure NetApp Files : quelle option du volume ? | Continuous Availability | Prise en charge pour FSLogix, évite les coupures lors des maintenances |
| Résilience si le partage tombe, sans changer de région | Cloud Cache avec deux fournisseurs | Plusieurs VHDLocations ne donnent aucune résilience |
| Reprise dans une autre région avec les profils à jour | Cloud Cache, CCDLocations inversé dans la région de secours |
Le profil est écrit des deux côtés |
| Garder Outlook et Teams performants avec une autre solution de profil | ODFC container seul | ODFC = données Microsoft 365 |
| Profile container déjà en place, ajouter l'ODFC « pour Outlook » ? | Inutile | Le profile container contient déjà ces données |
Réduire SizeInMBs pour récupérer de la place |
Sans effet sur les containers existants | La taille peut augmenter, jamais diminuer |
| Exclure un dossier existant pour alléger les profils | redirections.xml et nettoyer les données déjà présentes |
L'exclusion ne vide pas le VHDX |
RedirXMLSourceFolder = \\srv\fslogix\redirections.xml ne marche pas |
Indiquer le dossier, sans le nom du fichier | Réglage = chemin de dossier |
| Masquer une application pour un groupe Entra cloud-only | Non pris en charge par les assignments | Il faut des groupes synchronisés d'AD DS et la vue sur un DC |
| Le rule set ne s'applique à personne | Ordre des assignments (Everyone = No en haut) ou fichiers absents de Apps\Rules |
Évaluation de haut en bas |
Chaîne de connexion d'un page blob dans CCDLocations |
frx add-secure-key, puis `connectionString=" |
fslogix/{nom} |
15. Scénarios d'entraînement#
1. Contoso déploie 800 utilisateurs Medium sur un host pool pooled en France Central. Les session hosts sont Microsoft Entra joined ; les comptes sont synchronisés depuis AD DS, mais le VNet AVD n'a aucune connexion vers les contrôleurs de domaine. Quel stockage et quelle authentification ?
Azure Files Premium (FileStorage, ZRS) en France Central, avec un private endpoint ; authentification Microsoft Entra Kerberos (identités hybrides, pas besoin de ligne de vue vers les DC). Admin consent, exclusion de la MFA,
CloudKerberosTicketRetrievalEnabledpar le Settings catalog d'Intune, rôle Storage File Data SMB Share Contributor aux utilisateurs.
2. Après l'étape 1, les ACL doivent être posées. L'équipe n'a que des comptes cloud-only pour administrer. Comment faire ?
Les ACL des identités cloud-only se posent dans le portail (Manage access sur le partage) ou avec
RestSetAcls; File Explorer eticaclsne savent pas les résoudre. L'administrateur a besoin du rôle Storage File Data SMB Share Elevated Contributor. Pour des groupes cloud-only, ajouterkdc_enable_cloud_group_sidsau manifeste.
3. Fabrikam a 6 000 utilisateurs Heavy et exige une latence d'environ 1 ms. Les identités viennent d'AD DS, les session hosts sont joints au domaine. Quel stockage, et quelle limite surveiller ?
Azure NetApp Files Premium (ou Ultra pour des Power users), connexion AD sur le NetApp account, sous-réseau délégué à
Microsoft.NetApp/volumes, volume SMB avec Continuous Availability. Environ 3 000 profils actifs par volume : prévoir au moins deux volumes, dans des zones différentes, et répartir les utilisateurs avec les object-specific settings.
4. Un administrateur a mis deux partages dans VHDLocations « pour la redondance ». Le premier partage a été indisponible une
heure : les utilisateurs connectés pendant ce temps ont retrouvé un profil vide. Pourquoi, et que proposer ?
FSLogix a créé de nouveaux containers sur le second partage, accessible.
VHDLocationsne réplique rien. Il faut Cloud Cache (CCDLocationsavec les deux partages SSD), et déciderHealthyProvidersRequiredForRegisterselon le comportement attendu.
5. Une entreprise veut pouvoir basculer AVD de France Central vers Sweden Central en cas de sinistre, avec les profils à jour, sans faire travailler les utilisateurs sur un stockage distant au quotidien. Que configurer ?
Modèle Advanced + DR : un partage dans chaque région ; session hosts primaires avec
CCDLocations = A;B, host pool de secours avecCCDLocations = B;A. Chaque host pool lit d'abord le stockage de sa région ; les écritures vont aux deux.
6. Les profils grossissent de 2 Go par mois à cause d'un cache applicatif dans AppData\Local\{Éditeur}\Cache. Que faire ?
Une entrée
<Exclude Copy="0">AppData\Local\{Éditeur}\Cache</Exclude>dansredirections.xml,RedirXMLSourceFoldervers le dossier du fichier. Les données déjà présentes restent dans le VHDX : les supprimer par script ou laisser la compaction à la fermeture récupérer l'espace libéré.
7. Les utilisateurs ont un profil personnel géré par une solution tierce, mais Outlook (cache OST) et Teams sont lents. Que proposer avec FSLogix ?
Un ODFC container seul (
HKLM\SOFTWARE\Policies\FSLogix\ODFC,Enabled = 1,VHDLocations), avecIncludeTeams = 1(désactivé par défaut). Pas de profile container.
8. Le service Finance doit voir une application sous licence, les autres utilisateurs du même host pool non. Une seule image est souhaitée. Les groupes sont synchronisés depuis AD DS.
Application Masking : rule set Hiding sur l'application ; assignments dans cet ordre :
Everyone = Yes(masquée pour tous) en haut, puisCONTOSO\Finance = Noen dessous (la ligne la plus basse l'emporte : visible pour Finance). Fichiers.fxret.fxacopiés dansC:\Program Files\FSLogix\Apps\Rulespar l'image ou un script.
9. Après la mise à jour Windows Server d'avril 2026, des utilisateurs n'ouvrent plus leur profil sur un partage Azure Files joint à AD DS. Le stockage et les ACL n'ont pas changé. Piste prioritaire ?
Le passage par défaut de Kerberos de RC4 à AES : l'objet AD du compte de stockage est encore en RC4. Lancer
Update-AzStorageAccountAuthForAES256(AzFilesHybrid), puisklist purgesur les clients (4.2).
10. Un utilisateur dont la VM a planté ne peut plus ouvrir de session : « VHD is locked ». Que vérifier ?
Un handle SMB orphelin sur son VHDX (vérifier avec
Get-AzStorageFileHandle, fermer avecClose-AzStorageFileHandle), ou une session encore active sur un autre session host (la fermer depuis le host pool).LockedRetryCountetLockedRetryIntervalrèglent seulement le temps d'attente.
16. Pour aller plus loin (au-delà de l'examen)#
- Object-specific settings : configurations FSLogix différentes par utilisateur ou groupe (
ObjectSpecific\{SID}), pour répartir les profils sur plusieurs partages. - Metadata caching et provisioned v2 sur les partages SSD : à étudier dès quelques milliers d'utilisateurs.
- Migration : FSLogix n'a pas de chemin de migration direct depuis d'autres solutions de profils itinérants (OneDrive
Known Folder Move recommandé) ; pour de petits volumes,
frx copy-profile -filename {chemin}.vhdx -username {DOMAINE\user}copie un profil local dans un VHDX (-size-mbsobligatoire au-delà de 5 Go). - Supervision : journaux FSLogix (
C:\ProgramData\FSLogix\Logs), métriques du partage (latence, transactions, throttling), AVD Insights pour la durée d'ouverture de session : chapitre 08. - Search roaming (
RoamSearch) : plus nécessaire sur Windows Server 2019 et suivants ni sur Windows 10 / 11 multi-session.
17. Fiche à retenir#
- FSLogix = profil dans un VHDX sur un partage SMB, attaché à chaque ouverture de session ; préinstallé sur les images multi-session.
- Azure Files par défaut ; Standard pour Light < 200 utilisateurs, Premium au-delà et pour Medium, Heavy, Power.
- Azure NetApp Files : environ 1 ms, Standard / Premium / Ultra, pool de 1 TiB, sous-réseau délégué, Continuous Availability, AD DS ou Entra DS seulement, ~3 000 profils actifs par volume.
- Stockage dans la région du host pool ; Premium sans géo-redondance ; SSD pour Cloud Cache.
- Une seule source d'identité par compte : AD DS, Microsoft Entra Kerberos (pas de ligne de vue vers les DC, cloud-only possible), Entra Domain Services.
- Entra Kerberos : admin consent, exclure de la MFA,
CloudKerberosTicketRetrievalEnabled,LoadCredKeyFromProfile, tagkdc_enable_cloud_group_sidspour les groupes cloud-only. - Partage : SMB Share Contributor pour les utilisateurs, Elevated Contributor pour poser les ACL.
- ACL : CREATOR OWNER Modify (sous-dossiers et fichiers), Users Modify (ce dossier seulement), Admins Full Control.
- Profils :
Enabled,VHDLocationsobligatoires ;VolumeType = VHDX;SizeInMBs30 000 (augmenter oui, réduire non) ;FlipFlopProfileDirectoryNameà fixer avant le premier utilisateur. - Verrous :
LockedRetryCount3 etLockedRetryInterval15 (conseillé) ; pas de connexions concurrentes sur un host pool AVD ;PreventLoginWithTempProfile. - Groupes locaux Include / Exclude List : l'exclusion l'emporte.
-
redirections.xml: profils seulement,Copy="0"par défaut, jamaisCopy="2";RedirXMLSourceFolder= dossier ; Exclude > Include ; ne vide pas l'existant. - Un seul profile container recommandé ; ODFC si autre solution de profil ou séparation des données ;
IncludeTeamsà 0 par défaut. - Cloud Cache :
CCDLocations(4 fournisseurs maximum, sensible à la casse), lecture sur le premier sain, écriture sur tous ;ClearCacheOnLogoff = 1en pooled ;HealthyProvidersRequiredForUnregisterjamais 0. - Plusieurs
VHDLocations= aucune résilience ; multirégion =CCDLocationsinversé. - Page blob :
frx add-secure-key, jamais de chaîne en clair. - Application Masking : RuleEditor,
.fxr+.fxadansC:\Program Files\FSLogix\Apps\Rules;Everyone = Nopar défaut ; ordre de haut en bas ; pas de comptes cloud-only. - 2026 : Kerberos RC4 → AES par défaut ; comptes joints à AD DS :
Update-AzStorageAccountAuthForAES256, puisklist purge.
Références#
Toutes lues le 22/10/2026 sur Microsoft Learn (et le registre Terraform pour l'exemple azurerm) :
- Study guide for Exam AZ-140
- Storage options for FSLogix profile containers in Azure Virtual Desktop
- Azure Files guidance for virtual desktop workloads
- Set up FSLogix Profile Container with Azure Files and AD DS or Microsoft Entra Domain Services
- Store FSLogix profile containers on Azure Files using Microsoft Entra ID
- Enable Microsoft Entra Kerberos authentication for hybrid and cloud-only identities on Azure Files
- Overview of Azure Files identity-based authentication for SMB access
- Configure SMB storage permissions for FSLogix
- Store FSLogix profile containers on Azure NetApp Files
- Create an SMB volume for Azure NetApp Files
- Create and manage Active Directory connections for Azure NetApp Files
- SMB FAQs for Azure NetApp Files
- FSLogix configuration setting reference
- FSLogix container types
- Local include and exclude groups
- Custom profile redirections.xml
- Concurrent or multiple connections to a single container
- Tutorial: Configure ODFC containers
- FSLogix Cloud Cache
- FSLogix configuration examples
- Protect Azure page blob connection string
- Tutorial: Create and implement rule sets (application masking)
- FSLogix Apps RuleEditor and rule sets
- Microsoft.Storage storageAccounts (référence Bicep)
- azurerm_storage_account et azurerm_storage_share