
Migration du profil Citrix UPM vers FSLogix
Si vous faites toujours partie de ceux qui travaillent encore avec les profils mobiles Citrix UPM (Gestion des profils d’utilisateurs) et vous voulez essayer les merveilles de FSLogix, Mais bien sûr, vous avez des utilisateurs avec un profil UPM et vous souhaitez le migrer vers FSLogix afin de ne pas partir de zéro, Ceci est votre message!
Alors ce que j’ai dit, si vous voulez voir ce qu’est FSLogix, nous avons déjà écrit un document où nous avons expliqué comment cela fonctionne, Dans cet article, nous allons voir comment migrer des données d’un profil UPM existant vers des conteneurs FSLogix VHD ou VHDX.
Nous utiliserons le merveilleux scénario de David Ott, ce qu’il va faire, c’est convertir les profils qu’il trouve dans 'F:\Perf_XenApp’ et les laissera au format FSLogix en 'F:\Perf_FSLogix’ (Évidemment, dans le script, modifiez avec vos chemins corrects, ainsi que de modifier la taille maximale du disque virtuel que vous allez créer, Je l’ai en 10GB avec une croissance dynamique). Lorsque vous exécutez le script, il détecte les profils qu’il a découverts, et sélectionner ceux que nous voulons migrer. Nous pourrons en essayer un, et après l’avoir validé, allez en groupes, ou tout à la fois comme les braves. La bonne chose est que le profil d’origine n’est pas touché, C’est, vous aurez toujours un retour en arrière au cas où le nouveau VHD ou VHDX de l’utilisateur vous poserait des problèmes.
Voici le script que nous utilisons: Migra_Perfiles_UPM_a_FSLogix.ps1
<# Écrit par David Ott Ce script convertit les profils Citrix UPM en profils FSLogix .vhd (Vous devriez être en mesure de le modifier pour faire VHDX également) Faites attention à toutes les zones commentées. Il utilise diskpart pour créer/monter/démonter le fichier .vhd, et robocopy pour copier le profil UPM sur le .vhd. Une fois exécuté (en supposant que vous avez modifié $newprofilepath et $oldprofiles pour correspondre à votre environnement) Il vous donnera une liste de profils à convertir. Vous pouvez ensuite sélectionner le profil(s) que vous souhaitez convertir en profils FSLogix. Vous pouvez également modifier ce script pour utiliser les commandes hyperv afin de créer/monter/démonter les fichiers vhd/vhdx au lieu de diskpart si le module hyperv est installé. Avant utilisation en test de production!! #> # Chemin d’accès du profil FSLOGIX $newprofilepath = "F:\Perf_FSLogix" ##### Chemin d’accès au profil racine FSLogix <# Chemin d’accès du profil UPM - nos dossiers racines UPM de production sont nomdutilisateur.domaine, et les fenêtres réelles 7 Le profil vit sous V2X64UPM_Profile: \\serveurshare%USERNAME%.%USERDOMAIN%!CTX_PROFILEVER!!CTX_OSBITNESS! cela devrait être modifié en fonction de l’environnement - L’essentiel est qu’il ait le chemin complet vers tous les répertoires de UPM_Profile réels #> $oldprofiles = gci F:\Perf_XenApp | select -Développer le nom complet | trier | out-gridview -OutputMode Multiple -title "Sélectionner un profil(s) pour convertir"| %{ Chemin d’accès $_ "UPM_Profile" } # | ?{$_.name -like "*.$Env:utilisateurdomaine"} # foreach ancien profil foreach ($vieux à $oldprofiles) { <# Comme je sais que le dossier contient le nom d’utilisateur, je l’obtiens et l’enregistre dans la variable sam, and use that to get the user's sid then save that to $sid. Vous devrez probablement modifier la ligne $sam pour extraire le nom d’utilisateur de l’ancien chemin d’accès au profil. Jouez avec la chaîne et le chemin d’accès partagé jusqu’à ce que vous ne fixiez que le nom d’utilisateur. For instance let's say your current profile path is \\server\profileshare\username\v2x64\UPM_Profile you could do something like this $sam = (($ancien -split "Partage de profil")[1] -fendre "v2x64")[0] -Remplacer "\\","" Cela divise la chaîne au niveau de profileshare, et sélectionne la 2ème partie (0 serait le premier) qui est nom_utilisateurv2x64UPM_Profile il le divise ensuite à nouveau en utilisant v2x64 et sélectionne la première partie (se souvenir 0 est le premier) qui est username Enfin, il remplace le "\" caractères (que vous devez assortir \\ as \ est un caractère spécial, la première barre oblique dit simplement de l’utiliser comme une chaîne) sans rien.... vous laissant avec le nom d’utilisateur. #> $Sam = (($ancien -split "Perf_XenApp")[1] -fendre "UPM_Profile")[0] -Remplacer "\\","" $sid = (Système.Sécurité.Principal.NTCacompte($Sam)).Traduire([System.Security.Principal.SecurityIdentifier]).Valeur <# Un fichier .reg situé dans %localappdata%FSLogix - La dernière chose que fait le script est de créer le fichier .reg pour la clé ProfileList #> $regtext = "Version de l’éditeur de registre Windows 5.00 [HKEY_LOCAL_MACHINESOFTWAREMicrosoftWindows NTCurrentVersionProfileList$sid] `"ProfileImagePath'"=`"C:\\Utilisateurs\$sam'" `"FSL_OriginalProfileImagePath »"=`"C:\\Utilisateurs\$sam'" `"Drapeaux'"=dword:00000000 `"État'"=dword:00000000 `"ProfileLoadTimeLow'"=dword:00000000 `"ProfileLoadTimeHigh'"=dword:00000000 `"RefCount'"=dword:00000000 `"RunLogonScriptSync'"=dword:00000000 " <# Définissez le chemin d’accès nfolder sur \NewProfilePathusername_sid - ce n’est pas par défaut Si vous optez pour la valeur par défaut, remplacez puis inversez les variables $sam/$sid comme ci-dessous $nfolder = join-path $newprofilepath ($SID+"_"+$Sam) #> $nfolder = chemin d’accès à la jointure $newprofilepath ($SID+"_"+$Sam) ##### Voir la note ci-dessus # if $nfolder doesn't exist - créez-le si (!(chemin d’essai $nfolder)) {Répertoire New-Item -Path $nfolder -ItemType | Vide-Vide} & icacls $nfolder /setowner "$Env:utilisateurdomaine$sam" /L /C & ICACLS $nfolder $env de subventions:utilisateurdomaine$sam':`(OI')`(CREUSER)F /T # définit vhd sur \nfolderpathprofile_username.vhd $vhd = Join-Path $nfolder ("Profil_"+$sam+".Vhd") # Commandes diskpart $script 1 = "créer vdisk file='"$vhd'" maximum 10240 type=extensible" $script2 = "sel vdisk file='"$vhd'"'r’nattach vdisk" $script3 = "sel vdisk file='"$vhd'"'r’ncreate part prim’r’nselect part 1'r’nformat fs=ntfs quick" $script4 = "sel vdisk file='"$vhd'"'r’nsel part 1'r’nassign lettre=T" $script5 = "sel vdisk file'"$vhd'"'r’ndetach vdisk" $script6 = "sel vdisk file='"$vhd'"'r’nattach vdisk en lecture seule'"vdisk compact" <# if the vhd doesn't exist create, joindre, attendre 5 Secondes (Windows doit rattraper son retard), Créer/formater la partition, attribue la lettre T (Modifiez-le au besoin), et définit l’étiquette du disque sur Profile-username #> si (!(chemin d’essai $vhd)) { $Scénario1 | DiskPart $script 2 | diskpart Démarrer-Dormir -s 5 $Scénario3 | DisquePartie $script 4 | diskpart & étiquette T: Profil-$sam Nouvel élément -chemin T:\Répertoire Profile -ItemType | Vide-Vide # Définir les autorisations sur le profil start-process icacls "T:\Profil /setowner SYSTÈME" Start-Process icacls -ArgumentList "T:\Profil /reset /T" Start-Process icacls -ArgumentList "T:\Profil / héritage:d" $cmd1 = "T:\Profil / $env de subvention:utilisateurdomaine$sam':`(OI')`(CREUSER)F" Start-Process icacls -ArgumentList "T:\Profil /subvention SYSTEM':`(OI')`(CREUSER)F" Start-Process icacls -ArgumentList "T:\Profil /grant Administrateurs':`(OI')`(CREUSER)F" Start-Process icacls -ArgumentList $cmd 1 } autre { # Si le disque dur virtuel existe, alors attachez-le, attendre 5 Secondes, attribuer la lettre T $script 2 | diskpart Démarrer-Dormir -s 5 $Scénario4 | diskpart } # copie dans le profil UPM dans le répertoire Profile sur le vhd /E /Purge - C’est ainsi qu’il sera mis à jour avec les dernières informations "Copie de $old vers $vhd" & robocopie $old T:\Profil /E /Purge /r:0 | Vide-Vide # cambiar nombre perfil UPM ya migrado #Rename-Item -Path F:\Perf_XenApp$sam -NouveauNom "Cambio.$sam" -Force # Mover perfil UPM ya migrado Move-Item F:\Perf_XenApp$sam F:\Perf_XenApp_Cambiado_UPM_Profile$sam -Force # crée le chemin %localappdata%FSLogix s’il n’existe pas si (!(Chemin d’essai "T:\ProfilAppDataLocalFSLogix")) { Chemin-de-l’élément nouveau "T:\ProfilAppDataLocalFSLogix" -Répertoire ItemType | Vide-Vide } # creates the profiledata.reg file if it doesn't exist if (!(Chemin d’essai "T:\ProfilAppDataLocalFSLogixProfileData.reg")) {$regtext | Fichier de sortie "T:\ProfilAppDataLocalFSLogixProfileData.reg" -Encodage ASCII} $Scénario 5 | diskpart }
J’espère qu’il vous sera utile au cas où vous en auriez besoin, Remerciez l’auteur du scénario pour son travail. Si nous regardons de plus près, il utilisera le nom de chaque utilisateur pour que le SID nomme correctement le répertoire du conteneur, sera propriétaire de l’utilisateur du conteneur avec toutes les autorisations, créera le disque dur virtuel avec la taille indiquée, Il l’assemble, le partitionne en NTFS, Temporairement en tant qu’unité T:, et copiez tout le contenu du profil UPM sur ce disque dur virtuel.
Merci à tous pour vos temps de lecture & Partager sur les réseaux sociaux.