Powershell: Comprimir perfiles FSLogix
Os muestro un script que nos va a permitir un mantenimiento de los perfiles FSLogix de nuestros usuarios. El proyecto lo podéis ver en el siguiente enlace:
https://github.com/FSLogix/Invoke-FslShrinkDisk
Yo he reutilizado el script que os he presentado en otra entrada, que revisa el estado y el tamaño de esos perfiles, avisando a los usuarios para que liberen espacio:
https://www.maquinasvirtuales.eu/powershell-script-para-comprobar-perfiles-vhdx-fslogix-en-citrix/
La idea es combinar ambos scripts, en tareas separadas. De forma, que se compriman, y si una vez comprimidos, no se libera espacio y el perfil tiene más de 4GB avise a los usuarios en el otro script.
Para éste script, lo que vamos a hacer, es revisar todos los perfiles de más de 3GB, de forma que no se compriman mas que lo que pasan de cierto tamaño. Os dejo el script:
GITHUB: https://gist.github.com/raulunzue/e14bd899e1d5f5640cb38d48d49f617e
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 |
###################### # FUNCION SABER LINEA ###################### function linea { $input | Select-String '.' | Select-Object -Property LineNumber, Line } ############################### # LISTAR DISCOS Y TAMAÑOS VHDX ############################### $usuarios=Get-ChildItem -Path "C:\Scripts\Invoke-FslShrinkDisk-master" -Filter "*.vhdx" -File | Select-Object Name, @{n = 'SizeInGB'; e = {[math]::round($_.length/1GB,2)}} # SEPARAMOS Y LIMPIAMOS VALORES EN DOS LISTADOS #DISCOS-USUARIOS $usuarios.Name | ForEach-Object { $_ -replace ".vhdx","" } > "C:\SCRIPTS\vhdx.txt" # Limpiamos los espacios en blanco y exportamos a TXT (Get-Content C:\SCRIPTS\vhdx.txt) | ? {$_.trim() -ne "" } | Set-Content C:\SCRIPTS\vhdx.txt #$vhdx=(Get-Content -Path "C:\SCRIPTS\vhdx.txt") #ESPACIO OCUPADO $usuarios.SizeInGB > "C:\SCRIPTS\gigas.txt" # Limpiamos los espacios en blanco y exportamos a TXT (Get-Content C:\SCRIPTS\gigas.txt) | ? {$_.trim() -ne "" } | Set-Content C:\SCRIPTS\gigas.txt #$gigas=(Get-Content -Path "C:\SCRIPTS\gigas.txt") ##################### # TRATAMOS LOS DATOS ##################### $dia=Get-date -Format "MM-dd-yyyy" ForEach ($file in (Get-Content -Path "C:\SCRIPTS\vhdx.txt")) { #SABER LA LINEA EN EL LISTADO DEL VHDX $linea= (Get-Content -Path "C:\SCRIPTS\vhdx.txt") | sls -Pattern $file | linea $linea=$linea.LineNumber #PUNTO DE CONTROL Write-Output "Fila $linea para valor $file" #BUSCAMOS EL TAMAÑO DEL PERFIL #HAGO UN FILTRO AL PRIMER VALOR PARA QUE NO LO CORTE if ($linea -eq 1) { $gigas=(Get-Content -Path "C:\SCRIPTS\gigas.txt" -TotalCount $linea) #PUNTO DE CONTROL Write-Output "Para el disco VHDX $file el valor es $gigas GBs" #################### # HACEMOS UN FILTRO #################### $hora=Get-Date -Format "HH:mm:ss" # SI EL TAMAÑO ES DE MAS DE 3GB if ($gigas -ge 3) { ################# # COMPRIMIR VHDX ################# cd "C:\Scripts\Invoke-FslShrinkDisk-master" .\Invoke-FslShrinkDisk.ps1 "$file.vhdx" -Recurse -PassThru ########################## # GENERA LOG DE ACCIONES ########################## #PUNTO DE CONTROL Write-Output "Perfil mayor de 3GB" Echo "$hora - Perfil VHDX de $file de $gigas GB, se comprime" >> C:\SCRIPTS\LOGS\comprimirvhdx-$dia.log } else { ########################## # GENERA LOG SIN ACCIONES ########################## #PUNTO DE CONTROL Write-Output "Perfil menor de 3GB" Echo "$hora - Perfil VHDX de $file de $gigas GB. No se comprime" >> C:\SCRIPTS\LOGS\comprimirvhdx-$dia.log } } Else { $gigas=(Get-Content -Path "C:\SCRIPTS\gigas.txt" -TotalCount $linea)[-1] #PUNTO DE CONTROL Write-Output "Para el disco VHDX $file el valor es $gigas GBs" #################### # HACEMOS UN FILTRO #################### $hora=Get-Date -Format "HH:mm:ss" # SI EL TAMAÑO ES DE MAS DE 3GB if ($gigas -ge 3) { ################# # COMPRIMIR VHDX ################# cd "C:\Scripts\Invoke-FslShrinkDisk-master" .\Invoke-FslShrinkDisk.ps1 "$file.vhdx" -Recurse -PassThru ########################## # GENERA LOG DE ACCIONES ########################## #PUNTO DE CONTROL Write-Output "Perfil mayor de 3GB" Echo "$hora - Perfil VHDX de $file de $gigas GB, se comprime" >> C:\SCRIPTS\LOGS\comprimirvhdx-$dia.log } else { ########################## # GENERA LOG SIN ACCIONES ########################## #PUNTO DE CONTROL Write-Output "Perfil menor de 3GB" Echo "$hora - Perfil VHDX de $file de $gigas GB. No se comprime" >> C:\SCRIPTS\LOGS\comprimirvhdx-$dia.log } } } # ELIMINAMOS FICHERO TEMPORAL Remove-Item C:\SCRIPTS\vhdx.txt Remove-Item C:\SCRIPTS\gigas.txt |
Espero os parezca interesante…ya que es gratis, comparte ;P
¿Te ha gustado la entrada SÍGUENOS EN TWITTER?
Te ha gustado la entrada SGUENOS EN TWITTER O INVITANOS A UN CAFE?