# ---------- Inicializar sintetizador de voz ---------- Add-Type -AssemblyName System.Speech $speak = New-Object System.Speech.Synthesis.SpeechSynthesizer # Usar voz en español si está disponible $esVoice = $speak.GetInstalledVoices() | Where-Object { $_.VoiceInfo.Culture.Name -like "es-*" } if ($esVoice) { $speak.SelectVoice($esVoice[0].VoiceInfo.Name) } else { Write-Host "[ADVERTENCIA] Voz en español no encontrada. Usando voz predeterminada..." -ForegroundColor Yellow } # ---------- Mensaje de inicio ---------- $speak.Speak("Por favor tenga paciencia. Estamos optimizando su computadora. Cierre todos los programas antes de continuar.") # ---------- Advertencia en pantalla ---------- Add-Type -AssemblyName PresentationFramework [System.Windows.MessageBox]::Show( "ATENCIÓN: Se está realizando una limpieza y optimización avanzada del sistema. Se recomienda cerrar todos los programas antes de continuar.", "Limpieza del sistema - Advertencia", "OK", "Warning" ) Clear-Host Start-Sleep -Seconds 2 # ---------- Inicio de limpieza ---------- $speak.Speak("Iniciando proceso de limpieza y optimización del sistema.") # Crear punto de restauración $speak.Speak("Creando punto de restauración del sistema.") Enable-ComputerRestore -Drive "C:\" Checkpoint-Computer -Description "LimpiezaPowerShell" -RestorePointType "MODIFY_SETTINGS" # Eliminar archivos temporales $speak.Speak("Eliminando archivos temporales.") Remove-Item "$env:TEMP\*" -Recurse -Force -ErrorAction SilentlyContinue Remove-Item "C:\Windows\Temp\*" -Recurse -Force -ErrorAction SilentlyContinue # Vaciar papelera $speak.Speak("Vaciando la papelera de reciclaje.") Clear-RecycleBin -Force -ErrorAction SilentlyContinue # Limpiar caché de Windows Update $speak.Speak("Limpiando la caché de actualizaciones de Windows.") Stop-Service wuauserv -Force Remove-Item "C:\Windows\SoftwareDistribution\Download\*" -Recurse -Force -ErrorAction SilentlyContinue Start-Service wuauserv # Eliminar logs del sistema $speak.Speak("Eliminando registros del sistema.") Remove-Item "C:\Windows\Logs\*" -Recurse -Force -ErrorAction SilentlyContinue # Ejecutar limpieza de disco $speak.Speak("Ejecutando limpieza de disco.") Start-Process cleanmgr.exe "/sagerun:1" # Desinstalar apps innecesarias $speak.Speak("Desinstalando aplicaciones innecesarias.") $apps = @( "Microsoft.Xbox*", "Microsoft.Zune*", "Microsoft.BingNews", "Microsoft.MicrosoftSolitaireCollection", "Microsoft.People", "Microsoft.GetHelp", "Microsoft.Getstarted", "Microsoft.MicrosoftOfficeHub", "Microsoft.SkypeApp" ) foreach ($app in $apps) { Get-AppxPackage -Name $app | Remove-AppxPackage -ErrorAction SilentlyContinue Get-AppxProvisionedPackage -Online | Where-Object {$_.DisplayName -like $app} | Remove-AppxProvisionedPackage -Online -ErrorAction SilentlyContinue } # Desactivar programas del inicio $speak.Speak("Desactivando programas que inician con el sistema.") $startup = Get-CimInstance Win32_StartupCommand foreach ($item in $startup) { $name = $item.Name Remove-ItemProperty -Path "HKCU:\Software\Microsoft\Windows\CurrentVersion\Run" -Name $name -ErrorAction SilentlyContinue Remove-ItemProperty -Path "HKLM:\Software\Microsoft\Windows\CurrentVersion\Run" -Name $name -ErrorAction SilentlyContinue } # Desactivar servicios innecesarios $speak.Speak("Desactivando servicios innecesarios.") $services = @( "DiagTrack", "Fax", "XblGameSave", "MapsBroker", "RemoteRegistry", "SysMain" ) foreach ($svc in $services) { Stop-Service -Name $svc -Force -ErrorAction SilentlyContinue Set-Service -Name $svc -StartupType Disabled -ErrorAction SilentlyContinue } # Detectar si es HDD y desfragmentar $drives = Get-PhysicalDisk | Where-Object {$_.MediaType -eq "HDD"} if ($drives) { $speak.Speak("Desfragmentando disco duro.") defrag C: /O } else { $speak.Speak("Unidad de estado sólido detectada. Se omite la desfragmentación.") } # Activar plan de energía alto rendimiento $speak.Speak("Activando el plan de energía de alto rendimiento.") powercfg -setactive SCHEME_MIN # Limpiar red $speak.Speak("Limpiando la configuración de red.") ipconfig /flushdns netsh winsock reset netsh int ip reset # Actualizar y escanear con Microsoft Defender $speak.Speak("Actualizando Microsoft Defender.") Update-MpSignature $speak.Speak("Iniciando escaneo completo del sistema.") Start-MpScan -ScanType FullScan $speak.Speak("Iniciando escaneo del sector de arranque.") Start-MpScan -ScanType BootSectorScan # ---------- Finalización ---------- $speak.Speak("Tarea de limpieza completada. Por favor, reinicie su computadora para aplicar todos los cambios.") Write-Host "`n[FINALIZADO] Limpieza, optimización y escaneo completados. Por favor, reinicie el sistema." -ForegroundColor Green