Saltar al contenido

Automatice el proceso de limpieza de disco cleanmgr.exe sin la intervención del usuario

Solución:

El siguiente script de Powershell automatiza CleanMgr.exe. En este caso, elimina los archivos temporales y ejecuta la extensión Update Cleanup para purgar los archivos de copia de seguridad del Service Pack reemplazados (Windows 10 ahora lo hace automáticamente a través de una tarea programada). Para automatizar otras extensiones, cree una propiedad “StateFlags0001” en la clave de registro correspondiente, como se hace en las líneas New-ItemProperty. Encontrará los nombres de las claves del Registro en la rama “VolumeCaches”.

En cuanto a ser silencioso, este script intenta iniciar CleanMgr.exe en una ventana oculta. Sin embargo, en algún momento, CleanMgr genera nuevos procesos que son visibles y deben esperarse por separado.

Write-Host 'Clearing CleanMgr.exe automation settings.'
Get-ItemProperty -Path 'HKLM:SOFTWAREMicrosoftWindowsCurrentVersionExplorerVolumeCaches*' -Name StateFlags0001 -ErrorAction SilentlyContinue | Remove-ItemProperty -Name StateFlags0001 -ErrorAction SilentlyContinue

Write-Host 'Enabling Update Cleanup. This is done automatically in Windows 10 via a scheduled task.'
New-ItemProperty -Path 'HKLM:SOFTWAREMicrosoftWindowsCurrentVersionExplorerVolumeCachesUpdate Cleanup' -Name StateFlags0001 -Value 2 -PropertyType DWord

Write-Host 'Enabling Temporary Files Cleanup.'
New-ItemProperty -Path 'HKLM:SOFTWAREMicrosoftWindowsCurrentVersionExplorerVolumeCachesTemporary Files' -Name StateFlags0001 -Value 2 -PropertyType DWord

Write-Host 'Starting CleanMgr.exe...'
Start-Process -FilePath CleanMgr.exe -ArgumentList '/sagerun:1' -WindowStyle Hidden -Wait

Write-Host 'Waiting for CleanMgr and DismHost processes. Second wait neccesary as CleanMgr.exe spins off separate processes.'
Get-Process -Name cleanmgr,dismhost -ErrorAction SilentlyContinue | Wait-Process

$UpdateCleanupSuccessful = $false
if (Test-Path $env:SystemRootLogsCBSDeepClean.log) {
    $UpdateCleanupSuccessful = Select-String -Path $env:SystemRootLogsCBSDeepClean.log -Pattern 'Total size of superseded packages:' -Quiet
}

if ($UpdateCleanupSuccessful) {
    Write-Host 'Rebooting to complete CleanMgr.exe Update Cleanup....'
    SHUTDOWN.EXE /r /f /t 0 /c 'Rebooting to complete CleanMgr.exe Update Cleanup....'
}

Puedes usar cleanmgr /verylowdisk para automatizar silenciosamente todos los pasos de limpieza.

La única solución que encontré es configurar manualmente los valores de registro de esta manera:

#Set StateFlags0012 setting for each item in Windows 8.1 disk cleanup utility
if (-not (get-itemproperty -path 'HKLM:SoftwareMicrosoftWindowsCurrentVersionExplorerVolumeCachesActive Setup Temp Folders' -name StateFlags0012 -ErrorAction SilentlyContinue)) {
set-itemproperty -path 'HKLM:SoftwareMicrosoftWindowsCurrentVersionExplorerVolumeCachesActive Setup Temp Folders' -name StateFlags0012 -type DWORD -Value 2
set-itemproperty -path 'HKLM:SOFTWAREMicrosoftWindowsCurrentVersionExplorerVolumeCachesBranchCache' -name StateFlags0012 -type DWORD -Value 2
set-itemproperty -path 'HKLM:SOFTWAREMicrosoftWindowsCurrentVersionExplorerVolumeCachesDownloaded Program Files' -name StateFlags0012 -type DWORD -Value 2

ver ejemplo completo

¡Haz clic para puntuar esta entrada!
(Votos: 0 Promedio: 0)



Utiliza Nuestro Buscador

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *