Dec 05 2022 03:57 PM
We are implementing onedrive to hold known folders (Documents, Pictures, Desktop) and want these files to be "on demand" by default. We have it set via GPO. The main question is, how do I make sure that the files are dehydrated within our 14 day timeframe? We set up storagesense to do it, but how does storagesense have access to unmounted user profiles if storagesense only runs once per day?
Is there an Microsoft supported way of handling Onedrive with FSlogix profiles using storagesense? It appears that as it is now, users could download files over time and they'd never get cleaned up automatically, causing massive storage use as users bring more data in via onedrive.
Dec 06 2022 07:48 AM
Dec 06 2022 12:45 PM - edited Dec 06 2022 12:45 PM
Hopefully we can get some more input on this one. Documentation seems light for this kind of configuration.
Dec 07 2022 09:51 AM
Dec 07 2022 11:48 AM
Dec 08 2022 01:00 PM
Jan 26 2023 08:16 AM - edited Jan 26 2023 08:20 AM
Hi @Travis_78 this is a known issue, when you or the user delete files, fslogix vhd(x) does not compact itself. Here is a solution for you if you are running the latest fslogix version:
To enable VHD Disk Compaction using the registry, you'll need to set the following registry value:
You can do this with PowerShell:
Open an elevated PowerShell prompt and run the following commands:
Set-ItemProperty -Path "HKLM:\SOFTWARE\FSLogix\Apps" -Name VHDCompactDisk -PropertyType DWORD -Value 1 -Force
Restart the computer.
Jan 26 2023 08:28 AM
@hanifaz Yes, but how do you get the files deleted in the first place? Profile compaction is helpful when they finally get the bugs ironed out on the latest FSlogix, but before that, you need storage sense or something that will clear the OneDrive cache store after X amount of time. So far, I don't see that storage sense runs on AVD servers where you can trust it to keep the profile clean.
Run a test where you push a GPO that has storage sense dehydrate any OneDrive files opened less than a day. Come back after a day and you see that the files are still local to the profile and have not been set back to online only, which is Storage Senses's job.
Jan 30 2023 05:44 AM - edited Jan 30 2023 05:49 AM
Try using this Powershell Script in Autostart.
This will activate OneDrive CleanUp for every Connected OneDrive Account or Sharepoint Site.
Data in OneDrive Cache will be flushed every Day.
$EnableStorageSense = 1
$RunInterval = 1
$DeleteTempFiles = 1
$DeleteRecycleBinContent = 1
$DeleteRecycleBinInterval = 1
$DeleteDownloadsContent = 0
$DeleteDownloadsInterval = 0
$DeleteOneDriveContent = 1
$DeleteOneDriveInterval = 1
function Set-RegistryValue
{
param(
[string]$RegPath,
[string]$RegName,
$RegValue,
[ValidateSet("String","ExpandString","Binary","Dword","MultiString","Qword")]
[string]$RegType = "String"
)
If (!(Test-Path -Path $RegPath))
{
Write-Output "Creating the registry key $RegPath"
New-Item -Path $RegPath -Force | Out-Null
}
else
{
$RegPath.Property
Write-Output "$RegPath already exist"
}
If ($RegName)
{
$CheckReg = Get-Item -Path $RegPath
If ($CheckReg.GetValue($RegName) -eq $null)
{
Write-Output "Creating the registry value $RegName in $RegPath"
New-ItemProperty -Path $RegPath -Name $RegName -Value $RegValue -PropertyType $RegType | Out-Null
}
else
{
Write-Output "Modifying the registry value $RegName in $RegPath"
Set-ItemProperty -Path $RegPath -Name $RegName -Value $RegValue | Out-Null
}
}
}
# Storage Sense registry location
$StoragePolicyRegKey = "HKCU:\Software\Microsoft\Windows\CurrentVersion\StorageSense\Parameters\StoragePolicy"
# Enable Storage Sense
Set-RegistryValue -RegPath $StoragePolicyRegKey -RegName "01" -RegType DWORD -RegValue $EnableStorageSense
# Set 'Run Storage Sense' to specified interval
Set-RegistryValue -RegPath $StoragePolicyRegKey -RegName "2048" -RegType DWORD -RegValue $RunInterval
# Enable 'Delete temporary files that my apps aren't using'
Set-RegistryValue -RegPath $StoragePolicyRegKey -RegName "04" -RegType DWORD -RegValue $DeleteTempFiles
# Set 'Delete files in my recycle bin at the specified interval
Set-RegistryValue -RegPath $StoragePolicyRegKey -RegName "08" -RegType DWORD -RegValue $DeleteRecycleBinContent
Set-RegistryValue -RegPath $StoragePolicyRegKey -RegName "256" -RegType DWORD -RegValue $DeleteRecycleBinInterval
# Set 'Delete files in my Downloads folder at the specified interval
Set-RegistryValue -RegPath $StoragePolicyRegKey -RegName "32" -RegType DWORD -RegValue $DeleteDownloadsContent
Set-RegistryValue -RegPath $StoragePolicyRegKey -RegName "512" -RegType DWORD -RegValue $DeleteDownloadsInterval
# Suppress Storage Sense notifications
Set-RegistryValue -RegPath $StoragePolicyRegKey -RegName "StoragePoliciesNotified" -RegType DWORD -RegValue 1
Set-RegistryValue -RegPath $StoragePolicyRegKey -RegName "CloudfilePolicyConsent" -RegType DWORD -RegValue 1
# Prerequisite for OneDrive cleanup configuration, get the user SID
$User1 = New-Object System.Security.Principal.NTAccount($env:userDOMAIN, $env:USERNAME)
$GetSID = $User1.Translate([System.Security.Principal.SecurityIdentifier])
$UserSID = $GetSID.Value
# Configure OneDrive cleanup for all OneDrive providers configured
# Get OneDrive providers
$OneDriveProviders = Get-ChildItem -Path HKCU:\Software\SyncEngines\Providers\OneDrive\
ForEach ($ProviderKeys in $OneDriveProviders)
{
$ProviderKeyString = "OneDrive!"+$UserSID+"!Business1|"+$ProviderKeys.Name.Split("\")[-1]
$ProviderKeyStringPath = $StoragePolicyRegKey +"\" + $ProviderKeyString
Set-RegistryValue -RegPath $ProviderKeyStringPath -RegName "02" -RegType DWORD -RegValue $DeleteOneDriveContent
Set-RegistryValue -RegPath $ProviderKeyStringPath -RegName "128" -RegType DWORD -RegValue $DeleteOneDriveInterval
}
Feb 01 2023 03:39 PM
Feb 02 2023 03:13 AM
Feb 02 2023 05:39 AM
I use this with the menu/startup script. Runs better if you use fslogix Profiles. I had some troubles with GPO Policies in this environment.
At the GPO Logon Script sometimes the fslogix Profile wasn't loaded already and sometimes at logoff is was allready deloaded when the Script runs.
At least, if you deploy it in the Windows Startup Folder, you can use it in any Clone without the need of an GPO. Just create a Link in "C:\ProgramData\Microsoft\Windows\Start Menu\Programs\StartUp"
with the following command
C:\Windows\System32\WindowsPowerShell\v1.0\powershell.exe -windowstyle hidden -file "C:\Windows\OneDrive-CleanUp.ps1"
and of course don't forgett to put the Powershell Script in the described folder ;)
You can also extend the Script and remove some unwanted Windows Apps for every User like this:
Get-AppxPackage *WindowsAlarms*| Remove-AppxPackage
Get-AppxPackage *windowscommunicationsapps*| Remove-AppxPackage
Get-AppxPackage *officehub*| Remove-AppxPackage
Get-AppxPackage *skype*| Remove-AppxPackage
Get-AppxPackage *xbox*| Remove-AppxPackage
Get-AppxPackage *sol* | Remove-AppxPackage
Get-AppxPackage *real* | Remove-AppxPackage
Get-AppxPackage *weather* | Remove-AppxPackage
Get-AppxPackage *feedback* | Remove-AppxPackage
Get-AppxPackage *zune* | Remove-AppxPackage
Get-AppxPackage *stick* | Remove-AppxPackage
Feb 23 2023 08:52 AM
Mar 03 2023 03:12 PM
Mar 03 2023 03:18 PM
Mar 03 2023 03:24 PM
Mar 07 2023 02:13 AM
Mar 07 2023 02:45 AM
You can try to create a scheduled Task with the Command "c:\windows\System32\cleanmgr.exe /autoclean /d C:" on User Logon with a delay of 5 or 10 Minutes.
This will trigger a cleanup for the User.
When you use the Powershell Script for configure Storage Sense with OneDrive, this command also cleanup OneDrive Files.
Mar 07 2023 11:47 AM
Mar 28 2023 11:34 AM
@Travis_78 so I’ve put together a solution that runs a scheduled task at user logon but delays it by 30 minutes so it doesn’t overload the logon process. The task goes through a users onedrive folder and “removes” locally cached files in the container which haven’t been modified for more than 30 days and sets them back to online only.
then fslogix shrinks the container at logoff.
there is some issues with onedrive (bugs) since testing however. If someone tries to download a large file to onedrive and it breaks during the process, onedrive will show the cloud icon but the partial download actually ends up in the profile container. I have no idea how to fix this. The only way this will be fixed is with the user re-attempting the same download to completion which would then flag the file with a green circle. This appears to be a major design flaw in onedrive.
the other issues I’ve come across is if the files are a cloud icon and if you attempt to copy the same files over the top from a file share and select the replace option the files remain a cloud icon but the files actually end up in the container (maybe more of an edge case)
I have serious concerns around the level of testing on this onedrive product as it seems to be pretty inconsistent sometimes in its operations.
ill be implementing the script soon to do the clean up so will see how much of a difference I see on the storage. However as mentioned there are scenarios where it’s not going to work optimally due to what appear to be bugs with onedrive