
Migrando o perfil do Citrix UPM para o FSLogix
Se você ainda é um daqueles que ainda trabalha com perfis móveis do Citrix UPM (Gerenciamento de perfil de usuário) e você quer experimentar a maravilha do FSLogix, Mas é claro, você tem usuários com um perfil UPM e deseja migrá-lo para o FSLogix para não começar do zero, Esta é a sua postagem!
Então o que eu disse, se você quiser ver do que se trata o FSLogix, já escrevemos um documento onde explicamos como funciona, Nesta postagem, veremos apenas como migrar dados de um perfil UPM existente para contêineres FSLogix VHD ou VHDX.
Usaremos o maravilhoso roteiro de David Ott, o que ele fará é converter os perfis que encontra em 'F:\Perf_XenApp’ e vai deixá-los no formato FSLogix em 'F:\Perf_FSLogix’ (obviamente no script modificar com seus caminhos corretos, bem como modificar o tamanho máximo do disco virtual que você criará, Eu tenho em 10GB com crescimento dinâmico). Quando você executa o script, ele detecta os perfis descobertos, e selecione os que queremos migrar. Poderemos experimentar um, e tras validarlo ir por grupos, o todos a la vez como los valientes. Lo bueno es que no se toca el perfil original, Isso é, siempre tendrás una vuelta atrás por si el VHD o VHDX nuevo del usuario te da problemas.
Os dejo aquí el script que estamos utilizando: Migra_Perfiles_UPM_a_FSLogix.ps1
<# Escrito por David Ott Este script converterá perfis Citrix UPM em perfis FSLogix .vhd (Você deve ser capaz de editá-lo para fazer VHDX também) Preste atenção a todas as áreas comentadas. Ele usa o diskpart para criar/montar/desmontar o arquivo .vhd, e robocopy para copiar o perfil UPM para o .vhd. Uma vez executado (supondo que você tenha editado $newprofilepath e $oldprofiles para corresponder ao seu ambiente) Ele lhe dará uma lista de perfis para converter. Você pode então selecionar qual perfil(s) que você deseja converter para perfis FSLogix. Você também pode editar este script para usar comandos hyperv para criar/montar/desmontar os arquivos vhd/vhdx em vez do diskpart se tiver o módulo hyperv instalado. Antes de usar no teste de produção!! #> # caminho do perfil fslogix $newprofilepath = "F:\Perf_FSLogix" ##### Caminho do perfil raiz do FSLogix <# Caminho do perfil UPM - nossas pastas raiz UPM de produção são username.domain, e o Windows real 7 O perfil vive sob v2x64UPM_Profile: \\servidorshare%NOME DE USUÁRIO%.%DOMÍNIODOUSUÁRIO%!CTX_PROFILEVER!!CTX_OSBITNESS! this would have to be edited based on environment - the main thing is to have it have the full path to all of the actual UPM_Profile directories #> $oldprofiles = gci F:\Perf_XenApp | select -Expand fullname | sort | out-gridview -OutputMode Multiple -title "Select profile(s) to convert"| %{ Join-Path $_ "UPM_Profile" } # | ?{$_.name -like "*.$env:userdomain"} # foreach perfil antigo foreach ($velho em $oldprofiles) { <# Como eu sei que a pasta tem o nome de usuário, eu pego isso e salvo na variável sam, and use that to get the user's sid then save that to $sid. Você provavelmente terá que editar a linha $sam para extrair o nome de usuário do caminho do perfil antigo. Brinque com a string e o caminho dividido até encontrar apenas o nome de usuário. For instance let's say your current profile path is \\server\profileshare\username\v2x64\UPM_Profile you could do something like this $sam = (($antigo -split "Compartilhamento de perfil")[1] -fender "v2x64")[0] -Substituir "\\","" Isso divide a string no profileshare, e seleciona a 2ª parte (0 seria o primeiro) que é usernamev2x64UPM_Profile ele então divide isso novamente usando v2x64 e seleciona a primeira parte (lembrar 0 é o primeiro) que é username Finalmente, substitui o "\" characters (you need to match \\ as \ is a special character the first slash just says to use it as a string) with nothing... leaving you with the username. #> $sam = (($antigo -split "Perf_XenApp")[1] -fender "UPM_Profile")[0] -Substituir "\\","" $sid = (New-Object System.Security.Principal.NTAccount($sam)).translate([System.Security.Principal.SecurityIdentifier]).Valor <# A .reg file located in %localappdata%\FSLogix - last thing the script does is create the .reg file for the profilelist key #> $regtext = "Windows Registry Editor Version 5.00 [HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\ProfileList\$sid] `"ProfileImagePath`"=`"C:\\Users\\$sam`" `"FSL_OriginalProfileImagePath`"=`"C:\\Users\\$sam`" `"Flags`"=dword:00000000 `"State`"=dword:00000000 `"ProfileLoadTimeLow`"=dword:00000000 `"ProfileLoadTimeHigh`"=dword:00000000 `"RefCount`"=dword:00000000 `"RunLogonScriptSync`"=dword:00000000 " <# set the nfolder path to \\newprofilepath\username_sid - isso não é padrão Se você estiver usando o padrão, substitua e inverta as variáveis $sam/$sid conforme abaixo $nfolder = join-path $newprofilepath ($sid+"_"+$sam) #> $nfolder = caminho de junção $newprofilepath ($sid+"_"+$sam) ##### Veja a nota acima # if $nfolder doesn't exist - crie-o se (!(caminho de teste $nfolder)) {Novo-Item -Caminho $nfolder -Diretório ItemType | Out-Null} & icacls $nfolder /setowner "$env:domínio do usuário$sam" /T/C & icacls $nfolder /grant $env:domínio do usuário$sam':`(OI')`(CI')F / T # define vhd como \nfolderpathprofile_username.vhd $vhd = Join-Path $nfolder ("Perfil_"+$Sam+".Vhd") # comandos diskpart $script 1 = "criar arquivo vdisk ='"$vhd'" máximo 10240 tipo=expansível" $script2 = "sel vdisk file='"$vhd'"'r'nanexar 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 parte 1'r'nassign letra=T" $script5 = "sel vdisk arquivo'"$vhd'"'r'ndetach vdisk" $script6 = "sel vdisk file='"$vhd'"'r'nattach vdisk somente leitura'"'r'ncompact vdisk" <# if the vhd doesn't exist create, anexar, esperar 5 Segundos (O Windows tem que recuperar o atraso), criar/formatar a partição, atribui a letra T (mude isso conforme necessário), e define o rótulo do disco como Profile-username #> se (!(caminho de teste $vhd)) { $script1 | diskpart $script 2 | diskpart Start-Sleep -s 5 $Script3 | diskpart $script 4 | diskpart & etiqueta T: Perfil-$sam Novo-Item -Caminho T:\Diretório Profile -ItemType | Out-Null # Definir permissões no processo inicial do perfil ICACLs "T:\Perfil /setowner SYSTEM" Start-Process icacls -ArgumentList "T:\Perfil /reset /T" Start-Process icacls -ArgumentList "T:\Perfil /herança:d" $cmd1 = "T:\Perfil /conceder $env:domínio do usuário$sam':`(OI')`(CI')F" Start-Process icacls -ArgumentList "T:\Perfil/SISTEMA de subvenções»:`(OI')`(CI')F" Start-Process icacls -ArgumentList "T:\Perfil /conceder Administradores:`(OI')`(CI')F" Start-Process icacls -ArgumentList $cmd 1 } mais { # Se o VHD existir, anexe, esperar 5 Segundos, atribuir letra T $script 2 | diskpart Start-Sleep -s 5 $script4 | diskpart } # cópias no perfil UPM para o diretório Perfil no vhd /E /Purge - Isso é para que ele seja atualizado com as informações mais recentes "Copiando $old para $vhd" & robocopy $old T:\Perfil /E /Purge /r:0 | Out-Null # cambiar nombre perfil UPM ya migrado #Rename-Item -Path F:\Perf_XenApp$sam -NewName "Cambio.$sam" -Força # Mover perfil UPM ya migrado Move-Item F:\Perf_XenApp$sam F:\Perf_XenApp_Cambiado_UPM_Profile$sam -Força # cria o caminho %localappdata%FSLogix se ele não existir se (!(Caminho de teste "T:\PerfilAppDataLocalFSLogix")) { Novo Item -Caminho "T:\PerfilAppDataLocalFSLogix" -Diretório ItemType | Out-Null } # creates the profiledata.reg file if it doesn't exist if (!(Caminho de teste "T:\PerfilAppDataLocalFSLogixProfileData.reg")) {$texto de registro | Arquivo de saída "T:\PerfilAppDataLocalFSLogixProfileData.reg" -Codificando ascii} $script5 | diskpart }
Espero que os sea de utilidad por si alguna vez lo necesitáis, agradecer al autor del script su trabajazo. Si nos fijamos bien, ele usará o nome de cada usuário para fazer com que o SID nomeie o diretório do contêiner corretamente, será o proprietário do usuário do contêiner com permissões completas, criará o VHD com o tamanho indicado, Ele monta, particiona-o em NTFS, Temporariamente como uma unidade T:, e copie todo o conteúdo do perfil UPM para este VHD.
Obrigado a todos por seus tempos de leitura & Compartilhe nas redes sociais.