functions/set-d365sdpcleanup.ps1

<#
.SYNOPSIS
Set the cleanup retention period
 
.DESCRIPTION
Sets the configured retention period before updates are deleted
 
.PARAMETER NumberOfDays
Number of days that deployable software packages should remain on the server
 
.EXAMPLE
Set-D365SDPCleanUp -NumberOfDays 10
 
This will set the retention period to 10 days inside the the registry
 
The cmdlet REQUIRES elevated permissions to run, otherwise it will fail
 
.NOTES
This cmdlet is based on the findings from Alex Kwitny (@AlexOnDAX)
 
See his blog for more info:
http://www.alexondax.com/2018/04/msdyn365fo-how-to-adjust-your.html
 
#>

function Set-D365SDPCleanUp {
    [CmdletBinding()]
    param (
        [int] $NumberOfDays = 30
    )

    if(!$Script:IsAdminRuntime){
        Write-PSFMessage -Level Host -Message "It seems that you ran this cmdlet <c='em'>non-elevated</c>. Making changes to the registry requires you to run this cmdlet from an elevated console. Please exit the current console and start a new with `"Run As Administrator`""
        Stop-PSFFunction -Message "Stopping because of missing parameters"
        return
    }

    Set-ItemProperty -Path "HKLM:\SOFTWARE\Microsoft\Dynamics\Deployment" -Name "CutoffDaysForCleanup" -Type STRING -Value "$NumberOfDays" -Force
}