diff --git a/docs/release-0.6.3.md b/docs/release-0.6.3.md index 6415d1c..3208cda 100644 --- a/docs/release-0.6.3.md +++ b/docs/release-0.6.3.md @@ -14,6 +14,8 @@ Files se consume mediante su endpoint público. incluyendo equipos que habían aplicado la política directa anterior. - Se impide el retorno silencioso a un perfil local o temporal cuando FSLogix no puede registrar el contenedor. +- El cierre de sesión deja de esperar indefinidamente por un proveedor remoto: + se limita a 60 segundos y conserva la caché local si vence el plazo. - La documentación agrega capacidad de disco, validación del registro efectivo y rutas de diagnóstico para ambos modos. diff --git a/docs/user-roaming.md b/docs/user-roaming.md index c74132b..ad9d0dc 100644 --- a/docs/user-roaming.md +++ b/docs/user-roaming.md @@ -48,7 +48,9 @@ un endpoint público sólo debe usarse para diagnóstico. Cloud Cache necesita espacio local suficiente para el perfil (30 GB de máximo por omisión), conserva la caché tras cerrar sesión y exige al menos un proveedor -remoto sano al registrar o desmontar el perfil. La GPO también impide el inicio +remoto sano al registrar o desmontar el perfil. Si el proveedor no completa la +sincronización, el cierre espera como máximo 60 segundos y después conserva la +caché local para reintentar; no la descarta. La GPO también impide el inicio con perfil temporal o local cuando FSLogix falla, para que una incidencia no produzca dos perfiles divergentes silenciosamente. diff --git a/scripts/Enable-SguAzureUserRoaming.ps1 b/scripts/Enable-SguAzureUserRoaming.ps1 index 24e9678..3c3e635 100644 --- a/scripts/Enable-SguAzureUserRoaming.ps1 +++ b/scripts/Enable-SguAzureUserRoaming.ps1 @@ -449,30 +449,37 @@ $fsLogixValues = [ordered]@{ } $cloudCacheOnlyValues = @( 'CCDLocations', + 'CcdUnregisterTimeout', + 'ClearCacheOnForcedUnregister', 'ClearCacheOnLogoff', 'HealthyProvidersRequiredForRegister', 'HealthyProvidersRequiredForUnregister', 'PreventLoginWithFailure', - 'PreventLoginWithTempProfile', - 'VHDCompactDisk' + 'PreventLoginWithTempProfile' ) if ($resolvedStaffProfileStorageMode -eq 'CloudCache') { $fsLogixValues.CCDLocations = @{ Type = 'String' Value = "type=smb,name=`"SGU Azure Files`",connectionString=$profilesSharePath" } + $fsLogixValues.CcdUnregisterTimeout = @{ Type = 'DWord'; Value = 60 } + $fsLogixValues.ClearCacheOnForcedUnregister = @{ Type = 'DWord'; Value = 0 } $fsLogixValues.ClearCacheOnLogoff = @{ Type = 'DWord'; Value = 0 } $fsLogixValues.HealthyProvidersRequiredForRegister = @{ Type = 'DWord'; Value = 1 } $fsLogixValues.HealthyProvidersRequiredForUnregister = @{ Type = 'DWord'; Value = 1 } $fsLogixValues.PreventLoginWithFailure = @{ Type = 'DWord'; Value = 1 } $fsLogixValues.PreventLoginWithTempProfile = @{ Type = 'DWord'; Value = 1 } - $fsLogixValues.VHDCompactDisk = @{ Type = 'DWord'; Value = 0 } } else { $fsLogixValues.VHDLocations = @{ Type = 'String'; Value = $profilesSharePath } } +Set-SguGpoRegistryValue -GpoName $staffGpo.DisplayName -DomainName $domainName ` + -Server $DomainController -Key 'HKLM\SOFTWARE\FSLogix\Apps' ` + -ValueName 'VHDCompactDisk' -Type DWord -Value 0 foreach ($staffGroup in @($professorGroup, $administrativeGroup)) { $objectSpecificKey = "$fsLogixRoot\ObjectSpecific\$($staffGroup.SID.Value)" + Set-SguGpoRegistryValueDeletion -GpoName $staffGpo.DisplayName -DomainName $domainName ` + -Server $DomainController -Key $objectSpecificKey -ValueName 'VHDCompactDisk' if ($resolvedStaffProfileStorageMode -eq 'CloudCache') { Set-SguGpoRegistryValueDeletion -GpoName $staffGpo.DisplayName -DomainName $domainName ` -Server $DomainController -Key $objectSpecificKey -ValueName 'VHDLocations' diff --git a/tests/UserRoaming.Tests.ps1 b/tests/UserRoaming.Tests.ps1 index 946d6b2..9a4afec 100644 --- a/tests/UserRoaming.Tests.ps1 +++ b/tests/UserRoaming.Tests.ps1 @@ -100,8 +100,11 @@ Describe 'SGU role-specific roaming policies' { $source | Should Match "ValueName 'VHDLocations'" $source | Should Match '\*\*del\.\$ValueName' $source | Should Match 'HealthyProvidersRequiredForRegister' + $source | Should Match 'CcdUnregisterTimeout.*60' + $source | Should Match 'ClearCacheOnForcedUnregister' $source | Should Match 'PreventLoginWithFailure' - $source | Should Match 'VHDCompactDisk' + $source | Should Match "'HKLM\\SOFTWARE\\FSLogix\\Apps'" + $source | Should Match "ValueName 'VHDCompactDisk'" } It 'uses an AD computer identity with AES-256 Kerberos' {