Automatizace čištění počítače s Windows

Formát: AktualitaŠtítky: , , ,

Jak automatizovat nástroj Windows Cleanup Utility

Čím více je počítač používán tím pomalejším se stává a následkem toho se také rychleji opotřebovává. V průběhu času instalujeme software, stahujeme programy, tyto programy pak často vytvářejí dočasné soubory. Ten kdo ví, kde tyto soubory a složky nachází má z poloviny vyhráno.

Časem se můžou tyto aktivity v počítači projevovat ubývajícím prostorem na disku a je výrazně pomalejší chodem celého systému, než v době kdy jsme počítač poprvé zapnuli.

Jedním ze způsobů, jak revitalizovat počítač, je buď reinstalace operačního systému s bitové kopie, nebo je možnost celou jednotku úplně odstranit a nainstalovat Windows od začátku.

Tato varianta by měla být, ale až tím posledním krokem, osobně volím jakoukoli jinou možnost než se potit při nahrávání všeho potřebné a buďte si jistí, že se najde spousta věcí, na které zapomenete a až je budete potřebovat tak na Vás čekat nemilé překvapení 🙂

Pokud byste raději systém vyčistili a předešli kompletní reinstalaci můžete např. vyprázdnit koš, vyčistit dočasné soubory a tak dále. Nakonec ale zapomenete na všechny důležité kroky a právě s tímto Vám má pomoc následující skript.

Vytvořený skript ke stažený.

V závislosti na konfiguraci a nainstalovaném softwaru může každý počítač vyžadovat různé činnosti, které je třeba provést. Chcete-li se postarat o nejmenší společný jmenovatel, budeme automatizovat nástroj Windows Disk Cleanup, neboli Vyčištění disku, který je přímo součástí operačních systémů Microsoft Windows.

Tento nástroj se stará o spoustu činností a identifikuje následně pak vyčistí různé oblasti. Nástroj pro vyčištění disku systému Windows má grafické uživatelské rozhraní, které lze spustit. My, ale tento proces budeme automatizovat pomocí skriptu.

Ve výchozím nastavení umožňuje skript všechny možné kategorie pomocí nástroje Windows Disk Cleanup.

Tyto kategorie jsou: Active Setup Temp Folders,Branch Cache,Content Indexer Cleaner,Device Driver Packages,Downloaded Program Files,Game News Files,Game Statistics Files,Game Update Files,Internet Cache Files,Memory Dump Files,Offline Pages Files,Old ChkDsk Files,Previous Installations,Recycle Bin,Service Pack Cleanup,Setup Log Files,System error memory dump files,System error minidump files,Temporary Files,Temporary Setup Files,Temporary Sync Files,Thumbnail Cache,Update Cleanup,Upgrade Discarded Files,User file versions,Windows Defender,Windows Error Reporting Archive Files,Windows Error Reporting Queue Files,Windows Error Reporting System Archive Files,Windows Error Reporting System Queue Files,Windows ESD installation files,Windows Upgrade Log Files.

To je spousta kategorií. Skript však má také parametr oddílu, který umožňuje uživateli provádět pouze jednu nebo více kategorií namísto toho, aby pouštěl celou sadu.

Chcete-li spustit skript pro vyčištění disku ve Windows se všemi těmito kategoriemi, spusťte příkaz .Invoke-WindowsDiskCleanup.ps1 bez parametrů. Níže, používám pouze parametr Verbose, abych získal podrobnosti o tom, co dělá:

.Invoke-WindowsDiskCleanup.ps1 -Verbose
VERBOSE: Clearing CleanMgr.exe automation settings.
VERBOSE: Adding enabled disk cleanup sections…
VERBOSE: Starting CleanMgr.exe…
VERBOSE: Waiting for CleanMgr and DismHost processes..

Chcete-li povolit pouze několik kategorií, můžete použít parametr Sekce pro zadání jedné nebo více kategorií.

.Invoke-WindowsDiskCleanup.ps1 -Section ‚Memory Dump Files‘,’Offline Pages Files‘,’Old ChkDsk Files‘

Tento skript vytváří také „building block“ PowerShell. Pokud jste správcem IT, pravděpodobně nebudete mít jen jeden počítač, který by vyčistil, ale spoustu. Použitím funkce PowerShell remoting a malého extra kódu můžeme tento skript zkopírovat do vzdáleného počítače a spustit jej také vzdáleně!

$localScriptPath = ‚C:Program FilesWindowsPowerShellScriptsInvoke-WindowsDiskCleanup.ps1‘
$computers = ‚PC1′,’PC2‘

foreach ($comp in $computers) {
try {
$remoteFile = Copy-Item -Path $localScriptPath -Destination „\\$comp\c$“ -PassThru
Invoke-Command -ComputerName $comp -ScriptBlock { C:Invoke-WindowsDiskCleanup.ps1 }
} catch {
Write-Error $_.Exception.Message
} finally {
if (Get-Variable -Name remoteFile -ErrorAction Ignore) {
#Remove-Item -Path $remoteFile.FullName -ErrorAction

Ignore
}
}
}


Zdroj: internet