Ce que vous devez connaître sur les UPD (User Profile Disks) sous RDS 2012 et 2012 R2

Publié: 06/11/2015 dans TSE & RDS
Tags:, , , , , , , ,

 

S’applique à : RDS Windows Server 2012 et 2012 R2

Introduction

La gestion des profils utilisateurs dans un environnement RDS préoccupe la plus part des IT en charge de la gestion d’une infrastructure RDS.

Si vous n’utilisez pas de solutions tierces pour gérer les données et paramètres des utilisateurs RDS, vous avez plus de chance d’avoir des problèmes liés à ceux-ci.

Les profils « Itinérants » représente la solution classique que nous étions tous amenés à mettre en place pour la persistance des données de profils utilisateurs du réseau, vous avez probablement essayé de l’implémenter pour un environnement RDS et constaté que celle-ci ne répond pas vraiment au besoin du fait que les profils utilisateurs RDS ne fonctionnent pas de la même manière que les profils des utilisateurs standards du domaine.

Le géant américain a enfin compris la problématique et besoins des clients en matière de gestion de profils utilisateurs RDS et a introduit une nouvelle solution qui s’intègre directement avec le rôle RDS 2012 et 2012, et ce pour les deux scénarios de déploiement : Session & VDI.

Il s’agit de « UPD : User Profils Disks », cette fonctionnalité permet de stocker d’une manière centralisée les données des utilisateurs et des applications dans un seul disque virtuel (VHDx) dédié à chaque profil utilisateur.

Quand un utilisateur distant ouvre une Session sur un serveur RDSH ou lance un Programme RemoteApp, son disque de profil associé est attaché à sa session, il est ensuite détaché lors de la fermeture de sa session, avec ce processus, aucune donnée n’est copiée à l’ouverture et fermeture de la session, ce qui permet d’éviter les erreurs de récupération et synchronisation connues avec les Profils Itinérants.

Prérequis

L’activation des UPDs nécessite les deux éléments suivants :

  • Collection RDS (de Sessions ou de Bureaux Virtuels)
  • Un Partage par Collection (de Sessions ou de Bureaux Virtuels)

En effet, la fonctionnalité UPD peut être activée et configurée au niveau d’une Collection RDS, le stockage des données de profils utilisateurs RDS nécessite un espace de stockage (Partage Réseau, Espace de stockage partagé …)

HowTo : Activer la fonctionnalité UPD dans un environnement RDS 2012 /2012 R2

Suivez les instructions suivantes pour activer et configurer la persistance des données de profils RDS via UPD.

Note : dans l’exemple suivant, la fonctionnalité UPD sera activée au niveau d’une Collection de Session appelée « MesApps », de plus les VHDx associés aux profils utilisateurs RDS seront stockés sur un Partage hébergé sur un DC nommé « LABDC1 » :

  • Un dossier partagé doit être créé avec les informations suivantes :
    • Nom du dossier  : UPD_Utilisateurs
    • Nom du Partage  : UPD_Utilisateurs
    • Permissions Partage : Tout le monde | Lecture (permission par défaut)

UPD_1

  • Le Gestionnaire de Serveur doit être lancé depuis un serveur regroupant les 3 services de rôles RDSH – RDCB – RDWA (Remote Desktop « Session Host – Connection Broker – Web Access »)
  • La Collection « MesApps» est sélectionnée dans notre exemple et ses Propriétés sont éditées depuis le Menu « TÂCHES »
  • Cliquez ensuite sur « Disques de profil utilisateur» et cochez la case « Activer les disques de profil utilisateur », spécifiez ensuite le chemin UNC du dossier partagé créé précédemment, \\LABDC1\UPD_Utilisateurs dans notre exemple. Comme illustré dans l’image ci-après, nous allons limiter la taille des disques (VHDx) de profil utilisateur à 5Go par profil :

UPD_2

Note : Si vous rajoutez des serveurs RDSH supplémentaires dans le déploiement, l’assistant configure automatiquement leurs droits d’accès (Partage & permissions NTFS) au niveau du partage spécifié sur les UPDs, aucune action de votre part n’est donc requise.

  • Cliquez sur « Appliquer » et ensuite « OK ». L’assistant prend en charge les informations de configuration spécifiées et apporte les changements suivants :
    • Crée un disque virtuel « modèle» sur le partage spécifié : UVHD-template.vhdx
    • Positionne le droit « Control total» pour l’ensemble des serveurs RDSH de la Collection sur le partage spécifié et ce au niveau des Permission de partage et NTFS (Sécurité). Dans l’exemple suivant, la Collection de Session « MesApps » regroupe deux serveurs Hôtes de Session (LABRDSH1 & LABRDSH2) :

UPD_3

UPD_4

  • Ouvrez une Session Bureau à distance ou lancez un Programme RemoteApp hébergé sur la Collection « MesApps» et constatez l’apparition de votre disque de profil sur le partage \\LABDC1\UPD_Utilisateurs. le nom du disque généré porte le nom « UVHD » suivi de – et un numéro alphanumérique qui correspond au SID (Security IDentifier) de votre compte utilisateur Active Directory :

UPD_5

  • Notez que les disques virtuels de profil utilisateurs peuvent être montés sur l’Exploration Windows, cela peut vous être utile si vous souhaitez déposer ou récupérer des données directement sur le profil RDS d’un utilisateur distant.

UPD_6

Publicités
commentaires
  1. Jerome dit :

    Bonjour, Avez-vous rencontré le problème de profil temporaire en utilisant le mode UPD ?
    Ferme de 2 serveurs RDSH 1 RDCB et 1 serveur de fichier pour les profils UPD

    • Hicham KADIRI dit :

      Bonjour Jérôme. Oui dans le passé. le chargement des profils tmp signifie que les disques virtuels (VHDx) n’ont pas pu être chargé au logon des utilisateurs Bureau à distance.
      Une question : est-ce que tu as essayé de supprimer le profil d’un utilisateur généré /stocké sur ton serveur RDSH et reouvrir une nouvelle session ?

      • Jerome dit :

        Oui, j’ai même désactiver l’analyse à l’accès de l’antivirus, fait des exclusions pour les fichiers vhdx, exclusion cliché instantané du dossier contenant les vhdx. Lorsque j’interdit les ouvertures de session sur l’un ou l’autre des RDSH, aucun problème de connexion au profil. je pense à une latence réseau ou à l’ordre des GPO. Mon service broker est sur un DC qui est aussi service WebRD et RD licence.
        Un piste que je n’aurai pas exploré.

      • Hicham KADIRI dit :

        Essayez de supprimer la liste de toutes les entrées BAK depuis Regedit.exe >> HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\ProfileList

        Une question : depuis quand ce problème est apparu sur vos serveurs RDSH?

        Notez aussi que le déploiment du rôle RDS sur un DC est fortement déconseillé (DC écoute sur les ports 3389 RDP /443 RDWA, services Windows liés à la solution RDS exécutés sur le DC…)

      • Jerome dit :

        Seul le service broker est utilisé sur le DC, la web interface n’est pas en service et le DC ne reçoit pas de session utilisateur. J’ai déjà supprimé les .bak, rien n’y fait.
        J’ai le problème depuis la mise en production

      • Hicham KADIRI dit :

        Les UPD sont hébergés sur quel serveur ? utilises-tu du stockage local ou partagé ? as-tu des problèmes réseaux ponctuels ?

      • Jerome dit :

        Sur un serveur de fichier hébergé sur le même hyper-V autonome et stockage local, certainement le réseau car je ne vois pas ce que ce pourrai être

      • Hicham KADIRI dit :

        Vérifiez votre config réseau physique /réseaux virtuels. essayez entre temps la manip suivante : si cela est possible, créez une nouvelle Collection RDS > Ne pas activer l’UPD au niveau de cette nouvelle Collection > Créer un nouvel remote user dans l’AD > Autoriser cet utilisateur à accéder à la Collection nouvellement créée > Ouvrez une Session Bureau à distance avec le nouveau compte user > Maintenant retournez sur le RDMS > Activez l’UPD au niveau de la nouvelle Collection > Choisissez un dossier partagé (stocké localement sur le même serveur RDCB) > Refaitez un test de Connexion avec le compte user et notez le résultat. Tenez moi informé du résultat.

  2. jb dit :

    Bonjour,
    j’ai exactement le même problème ce matin,
    certains de mes profils utilisateurs sont locked,
    je suis actuellement en cours de recherche …

  3. jb dit :

    ce qui est dingue c’est que dans la console RDS je ne vois pas les utilisateurs de connectés mais sur l’appli SIDDER je vois les disques montés ????

  4. Teddy dit :

    Bonjour,

    Encore un très bon article.

    J’aimerais comprendre en quoi les profils « Itinérants » ne répondent pas vraiment au besoin ?

    Et aussi par la même occasion j’aimerais savoir en quoi les profils utilisateurs RDS ne fonctionnent pas de la même manière que les profils des utilisateurs standards du domaine ?

    • Hicham KADIRI dit :

      un Disque de profil utilisateur est un disque virtuel (VHDx) mappé au Logon et démappé au Logoff. Un profil itinérant est un dossier hébergé sur un share et synchroniser au logon et au Logoff. On connait tous les problèmes de synchro classique liés aux profils itinérants. De plus, un UPD est chargé 10 fois plus qu’un profil itinérant standard (bien évidemment selon dépendra de la taille du profil) mais ce nouveau concept de profil permet d’éviter tous les problèmes liés aux profils utilisateurs ayant besoin de changer de PC /Laptop everyday :). j’espère avoir répondu à votre question. HK

  5. jb dit :

    Salut, pour info mon problème ne s’est pas reproduit, j’ai eu un souci avec le serveur de fichier qui héberge les profils je pense qu’il y avait cause a effet,

    j’ai une autre question
    j’ai vu dans c:\users sur chaque RDSH qu’il y avait un répertoire : UVHDCLEANUPBIN
    il stocke les profils temporairement a ce que je comprend
    peut’on le supprimer
    j’ai fait une taches planifiée qui supprime une fois semaine les profil finissant par BACKUP-*
    est ce que je peux supprimer ce répertoire en même temps ?

    merci

    • Jerome dit :

      Bonjour JB, Quel était ton souci sur ton serveur de fichier ? je soupçonne le miens.

      Voici le type d’erreur sur un RDS lors de l’échec de connexion.

      Nom du journal :Microsoft-Windows-TerminalServices-RemoteConnectionManager/Admin
      Source : Microsoft-Windows-TerminalServices-RemoteConnectionManager
      Date : 25/11/2016 08:35:17
      ID de l’événement :20495
      Catégorie de la tâche :Aucun
      Niveau : Erreur
      Mots clés :
      Utilisateur : Système
      Ordinateur : RDS2.*****.local
      Description :
      Les services Bureau à distance n’ont pas pu attacher de disque de profil utilisateur pour le compte d’utilisateur dont le SID est S-1-5-21-1328952203-2743117469-4275915706-1756. Code d’erreur : 0x21.135

  6. jb dit :

    Salut Jérôme
    en fait nous avions installé un nouveau soft sur le serveur de fichier qui gère des audits concernant les droits NTFS, a priori nous l’avions mal installé car tous les matins notre serveur de fichier était a 80% de cpu, nous avons donc reconfiguré ce logiciel,
    depuis je n’ai plus aucun souci de profils temporaires

    • Hicham KADIRI dit :

      Bonjour jb, lors de la configuration des profils UPD sur une Collection spécifique regroupant des serveurs RDSH, ces derniers se voient automatiquement positionnés certaines droits NTFS sur le répertoire /share hébergeant les disques de profils utilisateurs (disques VHDx). si une couche soft gérant /modifiant les droits NTFS sur un serveur de fichiers stockant les UPDs est déployée, il faudrait étudier la modification /changement généré(e) par celle-ci. je vous recommande la mise en place d’une infra de test (représentative à votre env de prod) >> PoC. déployer ensuite votre solution de management de droits NTFS /WS, étudier ensuite l’impact sur l’utilisation des UPDs et éviter tout déploiement en prod avant de prendre connaissance des éventuels effets de bord dû à cette solution.

  7. jb dit :

    Salut Hicham, merci pour tes réponses, nous avons mis en place Netwrix pour gérer les modifications ntfs sur notre domaine
    j’ai une ferme de tests ou j’effectue quelques essais,
    depuis reconfiguration je n’ai plus de souci,
    par contre sais tu a quoi sert le dossier caché UVHDCLEANUPBIN dans c:\users sur les RDSH ?

    • Jerome dit :

      Bonjour,

      Quel est la bonne pratique pour l’enregistrement DNS pointant sur le nom de la ferme ? Comme avec 2008 R2, pointeur RDS sur les hôtes de bureau à distance + RoundRobin ? Ou seulement pointer sur le broker avec l’ajout dans le registre de « :tsv://MS Terminal Services Plugin.1.nom_collection » ?

      Je pense que mon pb de profil temporaire est lié, sinon voici un lien MS KB RDS
      https://support.microsoft.com/fr-fr/kb/2933664

      • Hicham KADIRI dit :

        Bonjour Jérôme, les options de Load balancing ont changé depuis RDS 2012 et 2012 R2 (mais aussi pour RDS 2016 :)).
        Vous pouvez continuer à utiliser du DNSRR (Round Robin DNS) mais ce n’est pas ce qui recommandé (enfin si, mais pour les LAB /PoC).
        Le DNS RR n’intégre pas de système intelligent pour qui permet de détecter la défaillance d’un hôte pour switcher sur un autre hôte.
        Ce que je recommande à mes clients :
        (si budget OK) : partir sur une solution NLB Hardware, de type F5 Big-IP ou A10 (Network).
        (si pas de buget) : partir sur la fonctionnalité native de WS Server 2012 /2012 R2 >> Microsoft NLB

        Microsoft NLB (ou les solutions tierces comme F5BIP /A10) sont utilisées pour le HA du service Web Acces et Gateway RDS
        Pour le HA du service Broker, un système de haute disponibilité est désormais native, un seul prérequis existe : SQL Server pour héberger la base de données RDCB HA.
        Pour le service Hôte de Session, idem, un système de load balancing existe, il suffit d’avoir de seveurs Hôte de session et +

        si cela vous intéresse, tout est détaillé dans mon livre RDS 2012 R2 guide du consultant, dispo format ebook:PDF (sur YouScribe et BecomeITExpert.com) et broché (sur Amazon).

        J’espère avoir répondu à tes questions.
        HK.

    • Hicham KADIRI dit :

      Le dossier UVHDCLEANUPBIN correspond à emplacement de cache pour les UPD des remote user. quand vous activez la fonctionnalité UPD, les utilisateurs distants ouvrant une session sur un ou plusieurs RDSH mappent leur vDisk au Logon, leurs données personnelles et celles d’Apps sont temporairement chargées pour optimiser la lecture de celles lors de l’utilisation dela session Bureau à distance. un système de CleanUp est lancé automatiquement au moment du logoff (démontage du vDisk).

  8. ludovic dit :

    defrag des « user profil disk » ?

  9. Johan dit :

    Bonjour Hicham et merci pour ce super article,
    Je suis en train de mettre en place un infra RDS sous 2012R2.
    Toutefois je rencontre un souci avec UPD.
    Le stockage des vhdx sera fait sur un serveur de fichier dans le même domaine AD, le partage a été fait et les permissions se sont bien mise en place pour les serveur RDS à l’issue de la configuration UPD de la Collection.
    Le template VHDX s’est bien créé au bon endroit. Tout les résultats sont conformes à cet article.
    Toutefois, je fais des tests et même avec un utilisateur fraîchement créé dans AD, et le résultat est le même :
    – Profil temporaire.
    – Aucune création du vhdx attaché d’un SID…
    il doit y avoir un lézard quelque-part et j’avoue tourner en rond depuis un certain temps maintenant…
    J’ai bien vérifier que le partage est accessible depuis les RDS, broker etc… et c’est qui est le cas.

    Encore merci 🙂

    Johan

  10. Cédric CHAISSAC dit :

    Bonjour Hicham,
    savez-vous comment réduire la taille d’un fichier vhdx ? Certains de nos utilisateurs aillant atteints le quota appliqué, nous leur avons demandé de libérer de la place mais leur disque virtuel reste à la même taille.

    Cédric

    • Hicham KADIRI dit :

      Bonjour Cédric,
      la taille des VHDx ne peut être modifiée après création.
      C’est la raison pour laquelle, il est recommandé de bien étudier cette option dans la phase « Design ».
      Une fois la taille définie sur la taille, la taille des VHDx existants ne peut être augmentée.
      En revanche, vous pouvez utiliser la Cmd-let « Set-RDSessionCollectionConfiguration avec le paramètre -MaxUserProfileDiskSizeGB (et bien sûre -CollectionName pour augmenter la taille des UPDs (VHDx). Tout nouveau VHDx qui sera généré occupera une taille MAX définie via la Cmd-let Set-RDSessionCollectionConfiguration. Les VHDx déjà créés ne sont pas affectés ni modifiés.

  11. frédéric dit :

    Bonjour Hicham,

    J’ai configuré un collection RDS de 4 serveurs avec des UPD sur une cinquième serveur.
    Je cherche à faire du multi session sur cette collection pour un même utilisateur.
    Cette contrainte étant dû à un logiciel métier qu’y n’ouvre qu’une seule instance dans mon environnement, et le fait de faire du multi session permet d’ouvrir 2 instances de ce logiciel et donc de travailler sur deux écrans pour l’utilisateur. Ce qui lui fait gagner énormément de temps.

    Avec les profils itinérants je n’avais pas de problèmes. Cependant, avec les UPD lorsque mon utilisateur ouvre sa première session tout se passe bien, mais lorsqu’il ouvre sa deuxième session j’ai un profil temporaire.

    Après analyse du problème, je comprends que l’utilisateur1 s’étant connecté sur le RDS1 avec son UPD la première session fonctionne bien. Mais lorsque l’utilisateur1 veut ouvrir sa deuxième session sur RDS2, RDS3 ou RDS4 il a un profil temporaire car son UPD est occupé sur RDS1.

    La question que je me pose est donc :
    – Comment gérer le multi session sur une collection RDS afin qu’un utilisateur ouvre sa deuxième session sur me le même serveur RDS déjà ouvert?
    – Ou bien il y a t il un moyen différent de faire du multi-session pour un seul utilisateur sur différent serveur RDS avec la technologie UPD? Ce qui paraît techniquement compliqué …

    Merci de ton aide,

    • Hicham KADIRI dit :

      Bonjour Frédéric, un utilisateur RDS ne peut avoir deux sessions Bureau à distance ouvertes (simultanément) sur un seul et même serveur RDS(h); en revanche, il peut lancer plusieurs instance d’une même Application; par contre, un Rds user X peut lancer plusieurs instances de l’App Y sur une même session Rds; maintenant, si vous avez les UPD, le profil de l’utilisateur RDS sera chargé sur chaque serveur RDS sur lequel il sera connecté, généralement dans ce mode de fonctionnement, le Broker redirigera toujours l’utilisateur au premier serveur sur lequel est déjà connecté. pour conclure, il faut oublier l’ouverture de plusieurs sessions Bureau à distance sur un même serveur avec les UPDs et garder à l’esprit qu’on peut faire du multi instance d’App sur la meme session; j’espère avoir répondu à ta question; goodluck; a+

      • frédéric dit :

        Merci Hicham, cela me confirme bien le problème de mappage d’UDP sur un seul serveur. Néanmoins si je voulais ouvrir plusieurs sessions, c’est justement que j’ai un logiciel métier qui m’interdit de l’ouvrir plusieurs fois sur une même session. Et je ne trouve pas comment tricher sur ce logiciel pour qu’il ouvre plusieurs instances. Merci encore pour ta réponse et réactivité. Ton blog est super!

      • Hicham KADIRI dit :

        Thank’s Fréd :); a bientôt

  12. Frédéric dit :

    Bonjour,
    J’ai mis en place un environnement RDS 2016 (bureaux distant) avec UPD (sur un cluster SOFS 2016) et je constate des avertissement ID 158 : Duplicate GUID sur les serveurs RDSH. Ill ne semble pas y avoir de problème à l’usage. Mais je me demandais si ce message était normal ?

    • Hicham KADIRI dit :

      Yes, l’event 158 remonte un warning car il detecte de multiples devices (disques) avec le même Disk ID (GUID). de mémoire, en activant la MPIO feature, ces messages d’erreurs ne seront plus remontés sur l’event viewer. sinon rien de grave pour votre plateforme RDS. aucun impact, côté srv ou client RDS (fonctionnement, perfs, accès…)

  13. TSILA dit :

    Bonjour,

    J’ai un broker avec 2 RDhost et des upds stockés sur le broker ma question est la suivante:
    Est ce que l’utilisateur peut ouvrir plusieurs session avec son compte utilisateur (une session sur le premier rdhost et une autre sur le deuxième) ou le broker dirigera toujours la connexion vers le serveur sur lequel la session est active??

    • Hicham KADIRI dit :

      Bonjour TSILA,
      Si la session de l’utilisation distant est hébergée sur le premier RD Session Host, et que celle ci est dans un état « Active » ou « Déconnectée », le serveur Broker va toujours rediriger cet utilisateur vers sa session existante. Pour être redirigée vers un autre Serveur Hôte de session du déploiement, la session hébergée sur le premier RD Session Host server doit être fermée (logoff de la session).

      j’espère avoir répondu à votre question.
      A+
      HK.

      • TSILA dit :

        Bonjour merci pour votre retour,Donc il y a pas moyen d ouvrir une session concurrente?

  14. TSILA dit :

    ou d’utiliser des profils itinérants au lieu des upds?

    • Hicham KADIRI dit :

      Les UPDs peuvent être utilisés pour éviter l’utilisation des profils itinérants (pour éviter les erreurs classiques des synchro au logoff /logon); maintenant, rien vous empeche d’utiliser des profils itinérants avec des redirections de folder. par contre, ouvrir deux sessions concurrents sur deux serveurs Hote de session appartenant à une meme collection ne sera pas possible quelque soit l’option utilisée (profils itinérants ou autre).

      • Thomas dit :

        Bonjour Hicham,
        Je rencontre des problèmes de profils temporaires avec les UPD depuis quelques temps après la mise en production de ma collection…
        Je n’avais pas ces problèmes pendant les phases de tests…

        J’ai bien vérifié :
        – le disque virtuel de l’utilisateur qui essaie de se connecter n’est pas monté (avec Sidder)
        – Plus de registre .bak dans ProfileList
        – Plus de répertoire TEMP dans le C:\USERS du RDSH

        Cela n’arrive que sur mon deuxième RDSH, sachant que mon premier est aussi RDCB et espace de stockage des UPD.

        Sais-tu d’où cela pourrait venir ? En te remerciant.

  15. Béa dit :

    Bonjour
    J’utilise les UPD dans une infra RDS : taille limitée à 3Go.
    Certains utilisateurs ont atteint cette limite alors qu’il n’y a rien dedans pratiquement.
    En montant les upd posant problèmes, je me suis aperçu que le dossier windows dans appdata/local/Microsoft fesait à lui seul pratiquement la taille de 2,65Go pourtant quand je vais dedans pour rechercher quels sont les sous dossiers qui sont trop gros il n’y a rien… J’ai affiché les dossiers et fichiers cachés, les fichiers system aucun sous dossiers n’est énorme.
    Avez-vous déjà rencontré le problème et comment puis-je le solutionner ? Mes recherches sur internet n’ont rien donné T_T

    • Béa dit :

      Bah en faite laissez tomber j’ai trouvé… Du coup j’ai resolu le problème. Normalement je devrais facilement pouvoir éviter ce désagrément à l’avenir par gpo. A tester.

    • Hicham KADIRI dit :

      Bonjour Béa, cela n’est pas normal, car par défaut, un UPD est vide, les 2, 65 GB occupée doit correspondre à des données spécifiques (cache d’une App, Logiciel /Programme spécifique …?).
      Un outil tel que DirWinState affiche quoi comme infos sur le dossier occupant les 2.65 GB ?

      • Béa dit :

        Oui, mais ça fait un bout de temps que mon infra est en place et que les UPD sont utilisés.
        En faite c’était le dossier InetCache dans Apdata\Local\Microsoft\windows qui était plein. Il était hyper caché : je ne l’ai vu qu’en allant en ligne de commande dans l’UPD (alors que j’avais bien mis afficher les dossiers cachés). Dès que je l’ai vidé, tout est rentré dans l’ordre. J’ai du louper une GPO quelque part…

      • Hicham KADIRI dit :

        le Dossier InetCache doit être régulièrement Updaté par une Package d’App /un Soft spécifique présent sur vos serveurs RDSH. J’avais un de mes client qui avait rencontré le même soucis (dossier InetCache à + de 30GB). et selon mes derniers diagnostics, c’était un Bug de chez MS. nous avions ouvert un case chez le technicla support MS qui a confirmé le Bug. aucun Hotfix n’est proposé. C’est vraiment spécifique aux Apps utilisées. il faudrait penser à créer scheduled task qui delete le contenu du dossier InetCache, de manière hebdomadaire ou mensuelle. de mémoire, aucun risk /impact n’a lieu quand vous supprimez /vider le dossier InetCache.

  16. Béa dit :

    En faisant un DIR /s /p sur ce dossier je me suis aperçue que c’était essentiellement des fichiers temporaires d’internet (jpg, pages web) et des fichiers temp de word qui en étaient la cause. Du coup j’ai tout effacé sans grand scrupule.
    Merci pour les infos en tous cas.

  17. Michel dit :

    Bonjour Hicham,

    Bravo pour cet article et pour tes ebooks

    J’ai configuré un environnement RDS en suivant m’appuyant sur ton ebook « RDS-Windows-Server-2016-Guide-du-Consultant » dont j’ai fait l’acquisition. J’ai donc choisi d’utiliser des UPD que j’avais dimensionnés à 2 Go.

    Je souhaite finalement augmenter la taille de ces UPD. Existe-t-il une procédure pour le faire ? Quelles sont les commandes ?

    Merci d’avance pour tes réponses

    • Hicham KADIRI dit :

      Hello Michel et merci pour l’intérêt que vous portez à mes eBooks :).

      Ci-après la réponse à votre question :

      #1. Tout d’abord, vous devez faire une extension de taille en exécutant la commande suivante (dans l’exemple suivant, le disque virtuel concerné est placé dans D:\UPDs\111111.vhdx et sa taille sera augmentée à 2GB) :
      Resize-VHD –Path D:\UPDs\111111.vhdx –SizeBytes 2GB

      Il faut ensuite « Mount /Monter » le disque depuis le Disk Manager > Faire un « Extend/Etendre » du disque virtuel et récupérer l’espace non alloué.
      et voilà le tour est joué :).

      Je ferai un article détaillant la démarche, merci pour ce comment :).

      #HK

      • Michel dit :

        Merci pour cette réponse rapide et précise.

        J’avais effectivement trouvé et appliqué cette commande, mais j’obtiens un le message d’erreur suivant : « Les outils d’administration Hyper-V n’ont pas pu accéder à la classeWMI attendue sur l’ordinateur … « . Je précise que le service Hyper-V n’est pas installé sur mon serveur.

        Est-ce que cette erreur n’est pas due au fait que je veux augmenter la taille d’un vhdx au-delà du quota attribué ?

        Quelle est la commande pour augmenter le quota des nouveaux UPDs ?

        Merci d’avance

        Michel

  18. Michel dit :

    Hello Hicham, pas d’idée pour ces dernières questions ? 🙂

    • Hicham KADIRI dit :

      Michel, Hello Again 🙂

      Tout d’abord, il faut savoir qu’une fois configurée (via les Propriétés de la Collection > UPD ou ia RemoteDesktop PS Module), cette valeur ne peut être modifiée. C’est la raison pour laquelle le champs devient d’ailleurs « Grisé ».

      Maintenant, pour le problème que tu me décrive, il faut simplement vérifier que sur la machine depuis laquelle la commande est exécuté, les outils RSAT du rôle Hyper-V sont présents car la Cmd-let Resize-VHD est fourni avec les tools Hyper-V.
      Exécutez cette commande depuis une machine n’ayant pas les module PowerShell Hyper-V peut retourner ce type d’erreur, qui indique un problème d’accès à la classeWMI.

      • Michel dit :

        Je suis désolé de t’ennuyer avec ça, mais les outils RSAT d’Hyper-V sont bien installés, car lorsqu’ils ne le sont pas, l’erreur est la suivante :  » Le terme «Resize-VHD» n’est pas reconnu comme nom d’applet de commande … ».

        Du coup, je suis dans le flou 😦

        Merci d’avance pour ta réponse.

        Michel

      • Hicham KADIRI dit :

        Tout dépend, quand l’install des HV RSAT Tiols ne sont pas bien déployés (e.g : WS Master Image) tu peux aussi avoir ce type d’erreur qui veut d’ailleurs rien dire :).
        Une petite question :
        La commande tu l’exécute depuis quelle machine ? quelle est le type de cette machine > Physique /Virtuel ?

        T’as essayé d’exécuter depuis un autre hôte pour voir si le problème résultat/message d’erreur est retourné ?

        A bientôt
        #HK

  19. Michel dit :

    Hello Hicham,

    As-tu reçu mes derniers commentaires, je ne les vois pas apparaitre sur le site ?!?!?

  20. Michel dit :

    Hello Hicham,

    La commande était exécutée depuis un bureau virtuel sur le serveur RDS et sur lequel j’ai installé les outils RSAT d’hyper-V.
    Entretemps, j’ai contourné le problème en utilisant DISKPART.
    Merci encore pour ton aide.
    Peux-tu me conseiller un ebook de qualité sur le déploiement de Citrix XenApp et XenDesktop ?
    J’ai lu quelque part sur ton blog que pour l’achat de l’un de tes ebooks, on pouvait en obtenir un gratuit. Comment doit-on procéder ?
    Merci encore pour tout, à bientôt.
    Michel

  21. Frédéric dit :

    Bonjour,
    Nous utilisons les UPD dans une infrastructure RDS 2016 et cela conduit à de nombreux problèmes lié à des clef dupliquée dans la base de registre. J’ai des ticket ouvert avec Microsoft qui a reconnu les bug mais cela train à être corrigé.
    Les symptômes les plus courant sont la désactivation du menu démarré
    Avez vous déjà rencontré ce problème ?
    Avez vous identifié toutes les clefs qui posent soucis ?
    Auriez vous un outil permettant d’identifiez les clef contenant de nombreuses sous clefs ou valeurs
    J’ai repérer les clefs suivante :
    HLM\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Notifications : ici les clef ne sont pas réellement dupliqué mais s’accumulent à l’infini ce qui n’est pas le cas sur un serveur normal
    HKLM\SYSTEM\CurrentControlSet\Services\SharedAccess\Parameters\FirewallPolicy\FirewallRules ; ici les règles de pare-feu pour les appx système dont le menu démarré lié à un utilisateur sont recrées et donc dupliquée à chaque ouverture de session.
    HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\SharedAccess\Parameters\FirewallPolicy\RestrictedServices\Configurable\System : par que ci dessus

    Les imprimantes des utilisateurs sont également dupliqué dans : HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Print\Providers\Client Side Rendering Print Provider\Servers\{NomServeur}\Printers : Chaque imprimante à une clef dont le nom est un SID les doublons se repère car il sont de la forme {SID},xxxx

    Lorsque les clef de pare-feu contiennent trop de lignes les appx ne s’enregistre plus
    Si il y a trop de ligne dans notification c’est l’appx de paramètres qui ne fonctionne plus mais ce symptôme est beaucoup plus long à apparaître.

    J’ai également l’impression qu’il y a des doublons du coté de HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\DeviceClasses mais je n’ai pas encore identifié les détails.

    • Maxime dit :

      Bonjour Frédéric,

      Je constate le même problème sur ma ferme RDS, as tu avancé sur ce problème ou minimisé les dégât en purgeant la base de registre ?

      D’autre part, malgré quelques recherches je ne trouve pas de « guide de bonne pratique » pour supprimer un UVHD, quelqu’un saurait-il m’éclairer sur se sujet ?
      J’ai un jour tenté une suppression de type « bête et méchant » mais cela a planté mon infra jusqu’à ce que je redémarre l’ensemble des serveurs.
      (Infra en WS 2016)

      Merci de vos commentaires

      • Hicham KADIRI dit :

        Bonjour Maxime,

        Tout d’abord, il faut savoir qu’après son activation, l’UPD devient le principal profile (%userprofile%) qui contient toutes les data & user settings de votre utilisateur RDS > donc pense à bien sauvegarder les données de l’UPD avant toute opération de suppression.

        Pour répondre à ta question, la suppression d’un UPD nécessite plusieurs opérations :

        1 (encore une fois) s’assurer que toutes les données pourront être migrées vers un profil local ou un autre UPD
        2 Si vous voulez rebasculer en mode « Profil Local », pensez à désactiver la fonctionnalité UPD au niveau de votre COllection RDS
        3 Vérifier qu’aucun ancien profil local (généré avant l’activation des UPD) n’existe dans C:\Users
        4 Noter le SID de l’utilisation dont l’UPD doit être supprimé. Cela peut se faire via l’utilisation de l’outil WMIC (wmic useraccount get name,sid) ou Via PowerShell (AD Module) > Get-ADUser Toto (le résultat retourné contient le SID de l’utilisateur)
        5 Lancer l’éditeur de Registre (Regedit.exe) et naviguer jusqu’au : HKLM\Software\Microsoft\WindowsNT\CurrentVersion\ProfileList
        6 Localiser l’entrée comportant le SID trouvé précédemment (étape 4)
        7 Faire click-droit sur la clé avec le SID en question et exporter la clé (vers le Bureau ou C:\ par exemple)
        8 Editer la clé de registre exportée précédemment (avec Notepad ou Notepad++ de préférence), et localiser le GUID de l’utilisateur dont l’UPD doit être supprimé
        9 A l’aide du GUID noté précédemment, ouvrir Regedit.Exe et naviguer jusqu’au : HKLM\Software\Microsoft\WindowsNT\CurrentVersion\ProfileGuid
        10 Enfin, localiser la clé de Registre portant le GUID noté précédemment comme nom, faire click-droit et supprimer la clé de Registre

        Et voilà le tour est joué :).
        A+
        #HK

      • Maxime dit :

        Bonjour Hicham et merci pour ces informations, je viens seulement de tomber dessus je vais pouvoir tester ça. Une fois cette manipulation effectuée, je peux supprimer le fichier espace de données vhdx de l’utilisateur sans incidence ?

        Si Frédéric est toujours dans le coin 🙂 je me traine toujours mes problèmes de menu démarrer bloqué… je suis au bord du gouffre. Je suis quasi certain qu’une « purge » de la base de registre permet de résoudre cela car cela se produit plus ou moins tard dans la vie du serveur RDS en fonction du nombre de connexion qu’il reçoit (enfin s’est ce que j’en ai déduit) Si quelqu’un sait résoudre se problème j’accueille la solution a bras ouvert.

      • Hicham KADIRI dit :

        Bonjour Maxime, la suppression d’un UPD doit se faire correctement et proprement pour éviter tout problème lié au profil de l’utilisateur RDS.

        Je vais bientôt publier un article qui détaille les instructions à suivre pour correctement supprimer un UPD.

        L’opération de suppression passe effectivement par le CleanUp de la BDR.

      • Frédéric dit :

        Bonjour Maxime,
        Désolé pour cette réponse tardive.
        Tu trouveras ci joint deux script que j’utilise pour nettoyer les clefs de registre du pare feu qui se dupliquent. Le premier supprime les entrées en double et l’autre supprime les entrées des utilisateurs qui n’existe pas sur le serveur au moment du lancement du script.
        Script 1 :
        #Fonction pour écrire des log dans un fichier ou l’écran
        Function Write-Log {

        Param(
        [Parameter(Mandatory=$False)]
        [ValidateSet(« INFO », »WARN », »ERROR », »FATAL », »DEBUG »)]
        [String]
        $Level = « INFO »,

        [Parameter(Mandatory=$True)]
        [string]
        $Message,

        [Parameter(Mandatory=$False)]
        [string]
        $logfile
        )

        $Stamp = (Get-Date).toString(« yyyy/MM/dd HH:mm:ss »)
        $Line = « $Stamp $Level $Message »
        If($logfile) {
        Add-Content $logfile -Value $Line
        }
        Else {
        Write-Output $Line
        }
        }

        Write-Log -Message « Récuperation des règles de pare-feu » -logfile « c:\temp\suppRegles.log »
        $rules=Get-NetFirewallRule -all |Where-Object {($_.Owner -ne $null)}|Sort-Object -Property Owner,DisplayName
        Write-Log -Message « Récuperation des règles ConfigurableServiceStore » -logfile « c:\temp\suppRegles.log »
        $rules2 = Get-NetFirewallRule -All -PolicyStore ConfigurableServiceStore|Where-Object {($_.Owner -ne $null)}|Sort-Object -Property Owner,DisplayName
        $nomAffiche= » »
        $util= » »
        $i=1
        Write-Log -Message « Traitement des règles de pare-feu » -logfile « c:\temp\suppRegles.log »
        foreach($rule in $rules)
        {
        if($rule.DisplayName -eq $nomAffiche -and $rule.owner -eq $util)
        {
        Write-Log -Message « $($util) : $($i)/$($rules.Count) »
        remove-itemproperty -path « HKLM:\System\CurrentControlSet\Services\SharedAccess\Parameters\FirewallPolicy\FirewallRules » -name $rule.name
        $i=$i+1
        }
        else
        {
        $nomAffiche=$rule.DisplayName
        $util=$rule.Owner
        }
        }
        $nomAffiche= » »
        $util= » »
        $nbparefeu = $i-1
        $i=1
        Write-Log -Message « Traitement des règles ConfigurableServiceStore » -logfile « c:\temp\suppRegles.log »
        foreach($rule in $rules2)
        {
        if($rule.DisplayName -eq $nomAffiche -and $rule.owner -eq $util)
        {
        Write-Log -Message « $($util) : $($i)/$($rules2.Count) »
        remove-itemproperty -path « HKLM:\System\CurrentControlSet\Services\SharedAccess\Parameters\FirewallPolicy\RestrictedServices\Configurable\System » -name $rule.name
        $i=$i+1
        }
        else
        {
        $nomAffiche=$rule.DisplayName
        $util=$rule.Owner
        }
        }
        $i=$i-1
        Write-Log -Message « $nbparefeu règles de pare-feu supprimées » -logfile « c:\temp\suppRegles.log »
        Write-Log -Message « $i règles ConfigurableServiceStore supprimées » -logfile « c:\temp\suppRegles.log »

        Lorsque le menu démarré ne fonctionne plus la première étape du script peut être très longue donc pas d’inquiétude. Par contre pour un serveur qui est planté depuis très longtemps tu peux avoir un message indiquant qu’il n’y a pas assez de mémoire. Dans ce cas il faut supprimé carrément la clef de registre qui pose problème. Un redémarrage la recrée.

        Script 2 (utilise la même fonction pour les log je ne le remet pas ici) :
        Write-Log -Message « Récuperation des règles de pare-feu » -logfile « c:\temp\suppRegles.log »
        $rules=Get-NetFirewallRule -all |Where-Object {($_.Owner -ne $null)}|Sort-Object -Property Owner,DisplayName
        $nbtot=$rules.Count
        $util= » »
        $i=1
        Write-Log -Message « Traitement des règles de pare-feu » -logfile « c:\temp\suppRegles.log »
        foreach($rule in $rules)
        {
        if($util -ne $rule.Owner)
        {
        try
        {
        $utilsam=(Get-ItemPropertyValue -ErrorAction Continue « HKLM:\SOFTWARE\Microsoft\Windows NT\CurrentVersion\ProfileList\$($rule.Owner) » ‘ProfileImagePath’).substring(9);
        }
        catch
        {
        $utilsam= »@@@@@@ »
        }
        $connecte = query user /server:$SERVER|? {$_ -match $utilsam};
        if(!$connecte)
        {
        Remove-NetFirewallRule -Owner $rule.Owner
        Remove-NetFirewallRule -Owner $rule.Owner -PolicyStore ConfigurableServiceStore
        $util=$rule.Owner
        Write-Log -Message « Avancement $($i)/$($nbtot) »
        Write-Log -Message « règles de pare-feu de $($rule.Owner) supprimées » -logfile « c:\temp\suppRegles.log »

        }
        }
        $i=$i+1
        }
        Ce script va afficher plein de message rouge si il y a des utilisateurs qui ont des règles de pare-feu à supprimer. C’est normal car je n’ai pas réussi à supprimé l’affiche du message malgré l’interception de l’erreur.

        Je te met également un script que j’utilise en fermeture de session afin de maintenir la base registre propre qui supprime les règle de pare-feu de l’utilisateur avant de quitter. Par contre cela ralentit la fermeture de session :
        $KeyFile = « c:\temp\AES.key »
        $PasswordFile = « C:\temp\Pass.key »
        $User = « .\administrateur »
        $key = Get-Content $KeyFile
        $AdminCred = New-Object -TypeName System.Management.Automation.PSCredential -ArgumentList $User, (Get-Content $PasswordFile | ConvertTo-SecureString -Key $key)

        $util = [System.Security.Principal.WindowsIdentity]::GetCurrent()
        $strSID = $util.User.Value
        if ($strSID -ne $null)
        {
        Write-Log -Message « Utilisateur : $($Util.Name), SID : $($strSID) » -logfile « c:\temp\suppRegles.log »

        $rules=Get-NetFirewallRule -All | Where-Object {$_.Owner -eq $strSID}
        Write-Log -Message « Règles de pare feu: $($rules.Count) » -logfile « c:\temp\suppRegles.log »

        $rulesConfigurable=Get-NetFirewallRule -All -PolicyStore ConfigurableServiceStore | Where-Object {$_.Owner -eq $strSID}
        Write-Log -Message « Règles du ConfigurableServiceStore : $($rulesConfigurable.Count) » -logfile « c:\temp\suppRegles.log »

        $totalRules=$rules.Count + $rulesConfigurable.Count
        Write-Log -Message « Nombre de règles total pour l’utilisateur $($util.Name) : $($totalRules) » -logfile « c:\temp\suppRegles.log »

        if ($totalRules -ne 0)
        {
        Write-Log -Message « Suppression en cours » -logfile « c:\temp\suppRegles.log »
        Invoke-Command -ScriptBlock {Remove-NetFirewallRule -Owner $Using:strSID; Remove-NetFirewallRule -Owner $Using:strSID -PolicyStore ConfigurableServiceStore} -ComputerName localhost -Credential $AdminCred
        Write-Log -Message « Les règles été supprimées » -logfile « c:\temp\suppRegles.log »

        }
        }

        Les deux fichiers cités AES.key et Pass.key permettent de lancé l’invokecommand en tant qu’administrateur sans avoir le mot de passe en clair dans le script cela peut être modifié. Sinon la méthode pour générer ces fichiers se trouve sur le WEB facilement.

        Il y a une autre clef qui pose problème mais plus tard dans la vie du serveur c’est : HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Notifications
        Pour tester si elle posera problème il suffit d’essayer de l’ouvrir avec regedit si cela prend du temps (sur un serveur la première fois que je m’y suis intéressé il a fallut 30 minutes pour afficher la clef) l’ouverture de session sera ralentit et si c’est trop long aucune appx ne fonctionnera plus. Y compris les paramètres.
        Dans cette clef tu peux effacer toutes les valeurs sauf : SequenceNumber

        Depuis quelques temps nous avons trouvé un nouveau système pour nous simplifier la tache :
        Nous avons transformé nous serveurs physiques RDS en hyperviseur Windows 2016 autonome et avons crée sur chaque serveurs 4 VM en utilisant un Template et des disque de différentiation pour chaque VM.
        Chaque disque de différentiation est sauvegardé juste après l’insertion dans la collection (environs 3Go) puis tout le quelques jours les VM sont arrêtées à tour de rôles et le disque de différentiation est remplacé par celui sauvegardé. Une réinitialisation du mot de passe du compte de l’ordinateur est nécessaire si la sauvegarde du disque de différentiation est plus vielle que 30 jours. Donc on le fait systématiquement.
        Lorsque l’on fait une mise à jour on la fait sur le Template (dont on conserve toujours une copie avant le sysprep) on refait le sysprep puis l’on arrête toute les VM d’un serveur physique après les avoirs sortie de la collection. On réinitialise les disques des VM avec un nouveau disque de différentiation basé sur le nouveau Template on remet les machine dans le domaine et la collection on sauvegarde les disque de différentiation et on repart.
        Avec ce système on a des serveur toujours propre et plus performant que lorsque l’on était directement sur le serveur physique. Avant cela ramait à partir de 120 utilisateurs par serveur maintenant avec 40 utilisateurs par VM soit 160 par serveur physiques il n’y a aucune ralentissement.
        Par contre les disques des serveurs physiques doivent être des SSD pour éviter les problème de temps d’accès disque. Chez nous nous avons des SSD de 256 Go c’est pourquoi nous avons limité à 4 VM.

        Je suis en train de faire des script pour automatiser cela. Je pourrais les fournir si cela intéresse quelqu’un.

        Voilà j’espère que cela t’aideras.

  22. Michel dit :

    Hello Hicham,

    Peut-on utiliser les UPD avec Citrix XenApp/XenDesktop 7.15 LTSR ?
    Si oui, sais tu où trouver un tuto pour le mettre en oeuvre ?

    Merci d’avance.

    Michel

  23. Thomas dit :

    Bonjour Hicham,
    Je rencontre des problèmes de profils temporaires avec les UPD depuis quelques temps après la mise en production de ma collection…
    Je n’avais pas ces problèmes pendant les phases de tests…

    J’ai bien vérifié :
    – le disque virtuel de l’utilisateur qui essaie de se connecter n’est pas monté (avec Sidder)
    – Plus de registre .bak dans ProfileList
    – Plus de répertoire TEMP dans le C:\USERS du RDSH

    Cela n’arrive que sur mon deuxième RDSH, sachant que mon premier est aussi RDCB et espace de stockage des UPD.

    Sais-tu d’où cela pourrait venir ? En te remerciant.

    • Frédéric dit :

      Bonjour,
      Cela peut arrivé si le fichier UPD n’a pas été correctement démonté lors de la dernière fermeture.
      Voici un script qui démonté les UPD qui sont monté sur le serveur d’où est lancé le script et qui correspondent à des utilisateurs non connectés :
      Get-PhysicalDisk|where friendlyName -eq « Msft Virtual Disk »|ForEach-Object {
      $l=$_.PhysicalLocation.LastIndexof(« . »)-27;
      $util=(Get-ItemPropertyValue « HKLM:\SOFTWARE\Microsoft\Windows NT\CurrentVersion\ProfileList\$($_.PhysicalLocation.substring(27,$l)) » ‘ProfileImagePath’).substring(9);
      $connecte = query user /server:$SERVER|? {$_ -match $util};
      if(!$connecte -and $util -ne « administrateur.000 » )
      {
      Write-Host « $($_.DeviceId) : $($_.PhysicalLocation) »
      Dismount-DiskImage -ImagePath $_.PhysicalLocation
      }
      }

      Attention si le serveur RDS est une VM il y aura des erreurs en rouge mais pas graves (le nom du disque virtuel est inférieur à 27 caractères pour les disques systèmes qui sont virtuels).

      Le problème peut se posé même dans le cas ou l’utilisateur se reconnecte sur un serveur sur lequel son UPD est déjà monté.

Laisser un commentaire

Entrez vos coordonnées ci-dessous ou cliquez sur une icône pour vous connecter:

Logo WordPress.com

Vous commentez à l'aide de votre compte WordPress.com. Déconnexion /  Changer )

Photo Google+

Vous commentez à l'aide de votre compte Google+. Déconnexion /  Changer )

Image Twitter

Vous commentez à l'aide de votre compte Twitter. Déconnexion /  Changer )

Photo Facebook

Vous commentez à l'aide de votre compte Facebook. Déconnexion /  Changer )

w

Connexion à %s