Migration des Citrix UPM-Profils zu FSLogix

Wenn Sie immer noch einer von denen sind, die weiterhin mit Citrix UPM-Roaming-Profilen arbeiten (Benutzerprofilverwaltung) und Sie möchten das Wunder von FSLogix ausprobieren, aber natürlich, Sie haben Benutzer mit einem UPM-Profil und möchten dieses auf FSLogix migrieren, um nicht von vorne zu beginnen, Bist du gebucht?!

Also sagte ich:, Wenn Sie sehen möchten, worum es bei diesem FSLogix geht, haben wir bereits ein Dokument geschrieben, in dem wir erklärt haben, wie es funktioniert., In diesem Beitrag wird nur gezeigt, wie die Daten von einem vorhandenen UPM-Profil in FSLogix VHD- oder VHDX-Container migriert werden.

Wir werden David Ott's wundervolles Drehbuch verwenden, Was es tun wird, ist die Profile, die es findet, in umzuwandeln ‚F:\Perf_XenApp‘ und belässt sie im FSLogix-Format in ‚F:\Perf_FSLogix‘ (offensichtlich im Skript mit den richtigen Pfaden ändern, sowie Ändern der maximalen Größe der virtuellen Festplatte, die erstellt wird, Ich habe es in 10 GB mit dynamischem Wachstum). Bei der Ausführung des Skripts werden die erkannten Profile erkannt, und wir werden diejenigen auswählen, die wir migrieren möchten. Wir können es versuchen, und nach der Validierung gehen Sie nach Gruppen, oder auf einmal wie die Mutigen. Das Gute ist, dass das ursprüngliche Profil nicht berührt wird, nämlich, Sie werden immer einen Rückblick haben, falls die neue VHD oder VHDX des Benutzers Ihnen Probleme bereitet.

Ich lasse hier das Skript, das wir verwenden: Migra_Perfiles_UPM_a_FSLogix.ps1

<#
Geschrieben von David Ott
Dieses Skript konvertiert Citrix UPM-Profile in FSLogix .vhd-Profile (Sie sollten es auch für vhdx bearbeiten können)
Achten Sie auf alle kommentierten Bereiche.  Es verwendet diskpart, um die .vhd-Datei zu erstellen / bereitzustellen / die Bereitstellung aufzuheben, und
Roboterkopie zum Kopieren des UPM-Profils in die .vhd.
Einmal ausgeführt (Angenommen, Sie haben $ newprofilepath und $ oldprofiles entsprechend Ihrer Umgebung bearbeitet) es wird Ihnen eine Liste von geben
zu konvertierende Profile.  Sie können dann welches Profil auswählen(s) Sie möchten in FSLogix-Profile konvertieren.
Sie können dieses Skript auch bearbeiten, um mithilfe von hyperv-Befehlen die vhd / vhdx-Dateien anstelle von diskpart zu erstellen / bereitzustellen / die Bereitstellung aufzuheben
das Hyperv-Modul installiert.
Vor dem Einsatz im Produktionstest!!
#>
# fslogix-Profilpfad
$ newprofilepath = "F:\Perf_FSLogix" ##### FSLogix-Stammprofilpfad
<#
upm Profilpfad - Unsere Produktions-UPM-Stammordner sind username.domain, und das eigentliche Windows 7 Profil lebt unter
v2x64  UPM_Profile:
\\server  share % USERNAME%.% USERDOMAIN% !CTX_PROFILEVER!!CTX_OSBITNESS!
Dies müsste basierend auf der Umgebung bearbeitet werden - Die Hauptsache ist, dass es den vollständigen Pfad zu allen aktuellen UPM_Profilen hat
Verzeichnisse
#>
$oldprofiles = gci F.:\Perf_XenApp | Wählen Sie -Expand fullname | Sortieren | out-gridview -OutputMode Multiple -title "Wähle Profil(s) umwandeln"| %{
Join-Pfad $ _ "UPM_Profile"
}

# | ?{$_.name-like "*.$env:Benutzerdomäne"}
 
# für jedes alte Profil
für jedes ($alt in $ oldprofiles) {
<#
Da ich weiß, dass der Ordner den Benutzernamen enthält, erhalte ich diesen und speichere ihn in der Sam-Variablen, und benutze das, um die Sid des Benutzers zu bekommen
Speichern Sie das dann in $ sid.
Sie müssen höchstwahrscheinlich die Zeile $ sam bearbeiten, um den Benutzernamen aus dem alten Profilpfad zu entfernen.  Spiel mit der Saite und
Split-Path, bis Sie nur noch den Benutzernamen festnageln.  Angenommen, Ihr aktueller Profilpfad lautet
\ server  profileshare  username  v2x64  UPM_Profile Sie könnten so etwas tun
$ sam = (($alt-gespalten "Profileshare")[1] -Teilt "v2x64")[0] -ersetzen "\\",""
Das teilt die Zeichenfolge bei profileshare, und wählt den 2. Teil aus (0 wäre der erste) Das ist  Benutzername  v2x64  UPM_Profile
Anschließend wird es mit v2x64 erneut aufgeteilt und der erste Teil ausgewählt (merken 0 ist die erste) Das ist  Benutzername 
Schließlich ersetzt es die "\" Zeichen (Sie müssen übereinstimmen \\ wie \ ist ein Sonderzeichen, das der erste Schrägstrich nur sagt, um es als zu verwenden
Zeichenfolge) mit nichts... Sie mit dem Benutzernamen verlassen.  
#>
$sam = (($alt-gespalten "Perf_XenApp")[1] -Teilt "UPM_Profile")[0] -ersetzen "\\",""
$sid = (New-Object System.Security.Principal.NTAccount($Sam)).Übersetzen([System.Security.Principal.SecurityIdentifier]).Wert
<#
Eine .reg-Datei in% localappdata%  FSLogix - Als letztes erstellt das Skript die REG-Datei für den Profillistenschlüssel
#>
$regtext = "Windows Registry Editor Version 5.00
 
[HKEY_LOCAL_MACHINE  SOFTWARE  Microsoft  Windows NT  CurrentVersion  ProfileList  $ sid]
`"ProfileImagePath`"= `"C:\\Benutzer \ $ sam`"
`"FSL_OriginalProfileImagePath`"= `"C:\\Benutzer \ $ sam`"
`"Flaggen`"= dword:00000000
`"Staat`"= dword:00000000
`"ProfileLoadTimeLow`"= dword:00000000
`"ProfileLoadTimeHigh`"= dword:00000000
`"RefCount`"= dword:00000000
`"RunLogonScriptSync`"= dword:00000000
"
<# Setzen Sie den Ordnerpfad auf \ newprofilepath  username_sid - Dies ist nicht die Standardeinstellung
Wenn Sie die Standardeinstellung verwenden, ersetzen Sie die Variablen $ sam / $ sid und kehren Sie sie wie folgt um
$ nfolder = Join-Pfad $ newprofilepath ($sid +"_"+$Sam)
#>
$nfolder = join-path $ newprofilepath ($sid +"_"+$Sam) ##### Siehe Hinweis oben
# wenn $ nfolder nicht existiert - erstelle es
wenn (!(Testpfad $ nfolder)) {New-Item -Path $ nfolder -ItemType-Verzeichnis | Out-Null}
& icacls $ nfolder / setowner "$env:Benutzerdomäne  $ sam" /T / C.
& icacls $ nfolder / grant $ env:Benutzerdomäne  $ sam`:`(OI`)`(DIES)F / T.
# setzt vhd auf \ nfolderpath  profile_username.vhd
$ vhd = Join-Path $ n-Ordner ("Profil_"+$sam +".vhd")
# Diskpart-Befehle
$ script1 = "create vdisk file = `"$vhd`" maximal 10240 Typ = erweiterbar"
$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 Teil 1`r`nassign letter = T."
$script5 = "sel vdisk file`"$vhd`"`r`ndetach vdisk"
$script6 = "sel vdisk file = `"$vhd`"`r`nattach vdisk readonly`"`r`ncompact vdisk"
<#
wenn das vhd nicht existiert create, anfügen, warten 5 Sekunden (Fenster müssen aufholen), Partition erstellen / formatieren,
weist den Buchstaben T zu (Ändern Sie dies nach Bedarf), und setzt die Plattenbezeichnung auf Profil-Benutzername
#>
ob (!(Testpfad $ vhd)) {
$script1 | Diskpart
$ script2 | Diskpart
Start-Schlaf -s 5
$script3 | Diskpart
$ script4 | Diskpart
& Etikett T.: Profil- $ sam
New-Item -Path T.:\Profil -ItemType-Verzeichnis | Out-Null
# Legen Sie Berechtigungen für das Profil fest
Startprozess icacls "T:\Profil / Setowner SYSTEM"
Start-Prozess icacls -ArgumentList "T:\Profil / Zurücksetzen / T."
Start-Prozess icacls -ArgumentList "T:\Profil / Vererbung:d"
$cmd1 = "T:\Profil / Grant $ env:Benutzerdomäne  $ sam`:`(OI`)`(DIES)F"
Start-Prozess icacls -ArgumentList "T:\Profil / Gewährung SYSTEM`:`(OI`)`(DIES)F"
Start-Prozess icacls -ArgumentList "T:\Profil / Administrator gewähren`:`(OI`)`(DIES)F"
Start-Prozess icacls -ArgumentList $ cmd1
} sonst {
# Wenn das VHD vorhanden ist, fügen Sie es hinzu, warten 5 Sekunden, Buchstaben T zuweisen
$ script2 | Diskpart
Start-Schlaf -s 5
$script4 | Diskpart
}

# kopiert im UPM-Profil in das Profilverzeichnis auf vhd / E / Purge - Dies ist so, dass es mit den neuesten Informationen aktualisiert wird
"$ Old nach $ vhd kopieren"
& Robokopie $ alt T.:\Profil / E / Spülen / r:0 | Out-Null

# Benennen Sie das bereits migrierte UPM-Profil um
# Element umbenennen -Pfad F.:\Perf_XenApp  $ sam -NewName "Cambio. $ Sam" -Macht

# Verschobenes UPM-Profil verschieben
Move-Item F.:\Perf_XenApp  $ sam F.:\Perf_XenApp_Cambiado_UPM_Profile  $ sam -Force

# Erstellt den Pfad% localappdata%  FSLogix, falls er nicht vorhanden ist
wenn (!(Testpfad "T:\Profil  AppData  Local  FSLogix")) {
New-Item -Path "T:\Profil  AppData  Local  FSLogix" -ItemType-Verzeichnis | Out-Null
}
# Erstellt die Datei profiledata.reg, falls sie nicht vorhanden ist
wenn (!(Testpfad "T:\Profile  AppData  Local  FSLogix  ProfileData.reg")) {$regtext | Out-File "T:\Profile  AppData  Local  FSLogix  ProfileData.reg" -Kodierung von ASCII}
$script5 | Diskpart
}

Ich hoffe, Sie finden es nützlich, falls Sie es jemals brauchen, danke dem Autor des Drehbuchs für seine Arbeit. Wenn Sie gut aussehen, Es wird der Name jedes Benutzers verwendet, um die SID abzurufen und somit das Containerverzeichnis korrekt zu benennen, macht den Containerbenutzer zum Eigentümer mit vollen Berechtigungen, erstellt die VHD mit der angegebenen Größe, Fahr es, Partitionieren Sie es in NTFS, vorübergehend als Einheit T.:, und es wird der gesamte Inhalt des UPM-Profils auf diese VHD kopiert.

Vielen Dank für Ihre Lesezeit & in sozialen Netzwerken teilen.

Hector Herrero