Functions/Maintenance.ps1


function Maintenance {
    [CmdletBinding()]
    param (
        [Parameter()] [switch] $UpdateAll,
        [Parameter()] [switch] $UpdatePSModules,
        [Parameter()] [switch] $UpdateHelp
    )

    cua
    cr
    rdi

    Write-Host "`n----`n"
    Remove-DownloadFolderItems

    Backup-MySettings -All


    if (Get-Command Get-MpComputerStatus -ea 0) {
        $MpScan_Params = @{
            AsJob = $true
        }
        if ((Get-MpComputerStatus).FullScanOverdue -eq $true) {
            $MpScan_Params.Add('ScanType', 'FullScan')
        }

        if ((Get-MpComputerStatus).QuickScanOverdue -eq $true -or (Get-MpComputerStatus).FullScanOverdue -eq $true) {
            Start-MpScan @MpScan_Params
        }
    }

    if ($UpdateAll -or $UpdatePSModules) {
        Start-Job -ScriptBlock {
            Get-InstalledModule | Update-Module -AcceptLicense -Verbose
            foreach ($m in Get-InstalledModule) {
                Get-InstalledModule $m.Name -AllVersions | Where-Object { $_.Version -ne $m.Version } | Uninstall-Module -Force
            }
        }
    }
    if ($UpdateAll -or $UpdateHelp) {
        Start-Job -ScriptBlock { Update-Help -Force -ea 0 }
    }


}