Popis scriptu

Potřebovali jsme vytvořit script v PowerShellu, který by se spustil na lokálním PC v doméně, a vyčistil PC od dočasných souborů a nepotřebných aktualizací. Všechny operace chceme logovat, abychom mohli zkontrolovat průběh a smazané položky.

Funkce scriptu

Ze všeho nejdříve script ověřuje, zda ho spouští uživatel s admin právy nebo ne. Pokud ne, vyžádá si přihlašovací údaje. Dále jsou popsány jednotlivé čistící funkce:

  • Clear-CCMCache – V doméně používáme Microsoft Configuration Manager. Klient na každém pc zanáší složku …\Windows\CCMcache aktualizačními soubory instalovaných aplikací. Tato funkce složku korektně vyčistí.
  • Delete-TempFiles – Ve složce …\Windows\Temp se ukládají dočasné systémové soubory. Stává se, že velkost složky časem nabobtná a je třeba ji vyčistit. Tato funkce vymaže dočasné soubory v této složce.
  • Delete-AppDataTempFiles – Ve složce …\…\AppData\Local\Temp pod každým uživatelským účtem, který je na PC vytvořený, se ukládají dočasné soubory. Tato funkce prochází uživatelské profily a maže dočasné soubory z této složky pod každým uživatelem, který má profil na PC.
  • Clear-DNSCache – Funkce pro vycisteni DNS cache.
  • Delete-PrefetchFiles – Prefetch soubory jsou speciální soubory, které vytváří operační systém Windows při prvním spuštění aplikace. Tyto soubory obsahují data potřebná pro rychlejší spuštění aplikací a systému při dalším použití. Tato funkce odstraní všechny soubory ze složky C:\Windows\Prefetch…
  • Delete-OldUpdateFiles – Tato funkce odstraní staré soubory aktualizací Windows, které se ukládají na systémovém disku. Tyto soubory mohou zabírat značné množství místa a jejich odstranění může pomoci uvolnit diskový prostor.
  • Delete-OrphanedRegistryEntries -Tato funkce prochází registr Windows a odstraňuje sirotčí položky, které zůstaly po odinstalaci aplikací nebo po chybách v instalaci. Tyto položky mohou zpomalovat systém a jejich odstranění může zlepšit výkon.
  • Delete-OldLogFiles – Tato funkce maže staré logovací soubory, které se hromadí v systému. Logovací soubory mohou zabírat místo na disku a jejich pravidelné čištění pomáhá udržovat systém efektivní.
  • Delete-SystemRestorePoints – Tato funkce odstraní staré body obnovení systému, které již nejsou potřeba. Body obnovení mohou zabírat značné množství místa na disku a jejich odstranění může uvolnit prostor.
  • Clear-Pagefile – Tato funkce vyčistí stránkovací soubor (pagefile), který Windows používá jako virtuální paměť. Vyčištění stránkovacího souboru může pomoci zlepšit výkon systému.
  • Disable-Hibernation – Tato funkce vypne režim hibernace a odstraní soubor hiberfil.sys, který Windows používá k ukládání stavu systému při hibernaci. Vypnutí hibernace může uvolnit místo na disku.
  • CCM-Hardware – Tato funkce se týká správy hardwarových komponent v rámci Microsoft Configuration Manager. Spustí inventarizaci hardware a souborů, aby se znovu načetlo volné místo co Configuration Manageru.

Kód scriptu

# --------------------------------------------------------------------------------
# Funkce pro kontrolu admin prav
function Test-IsAdmin {
    $currentUser = New-Object Security.Principal.WindowsPrincipal([Security.Principal.WindowsIdentity]::GetCurrent())
    return $currentUser.IsInRole([Security.Principal.WindowsBuiltInRole]::Administrator)
}

# --------------------------------------------------------------------------------
# Pokud neni spusten jako admin, znovu spustit jako admin
if (-not (Test-IsAdmin)) {
    $scriptPath = $MyInvocation.MyCommand.Path
    if ($scriptPath) {
        try {
            Start-Process powershell -ArgumentList "-NoProfile -ExecutionPolicy Bypass -File `"$scriptPath`"" -Verb RunAs
            exit
        } catch {
            Write-Host "Nepodarilo se spustit skript jako administrator." -ForegroundColor Red
            pause
            exit
        }
    } else {
        Write-Host "Cestu ke skriptu nelze zjistit. Spustte skript z .ps1 souboru." -ForegroundColor Red
        pause
        exit
    }
}


# --------------------------------------------------------------------------------
# ------------------------ SKRIPT PRO CISTENI DISKU ------------------------------
# --------------------------------------------------------------------------------

# --------------------------------------------------------------------------------
# Funkce pro vycisteni CCM cache na tomto PC
function Clear-CCMCache {
    param (
        [string]$LogFilePath = "C:\\temp\\CisteniPC.log"
    )

    # Initialize CCM Resource Manager
    [__comobject]$CCMComObject = New-Object -ComObject 'UIResource.UIResourceMgr'

    # Get cache elements
    $CacheInfo = $CCMComObject.GetCacheInfo().GetCacheElements()

    # Delete cache elements
    ForEach ($CacheItem in $CacheInfo) { 
        try {
            $CCMComObject.GetCacheInfo().DeleteCacheElement([string]$($CacheItem.CacheElementID))
            [System.IO.File]::AppendAllText($LogFilePath, "Vymazana polozka cache s ID: $($CacheItem.CacheElementID) - Uspech`n")
            Write-Output "Vymazana polozka cache s ID: $($CacheItem.CacheElementID) - Uspech"
        } catch {
            [System.IO.File]::AppendAllText($LogFilePath, "Nepovedlo se vymazat polozku cache s ID: $($CacheItem.CacheElementID) - Chyba: $_`n")
        }
    }

    # Completion message
    $completionMessage = "Cache kompletne vycistena na $(Get-Date)"
    Write-Output $completionMessage
    [System.IO.File]::AppendAllText($LogFilePath, "$completionMessage`n")

    Write-Output "---"
    Write-Output "Nyni se mazou vyprsele aktualizace."
    Write-Output "Tento krok muze trvat dele. Vyckejte prosim na dalsi dialog." 

    # Run DISM command on the current computer and capture the output
    $dismOutput = dism.exe /online /Cleanup-Image /StartComponentCleanup

    # Display the DISM output on the screen
    Write-Output $dismOutput

    # Save the DISM output to the log file on the local computer
    [System.IO.File]::AppendAllText($LogFilePath, "$dismOutput`n")
}

# --------------------------------------------------------------------------------
# Funkce pro vymazani docasnych souboru
function Delete-TempFiles {
    Write-Output "---"
    Write-Output "---"
    [System.IO.File]::AppendAllText($LogFilePath, "---`n")
    [System.IO.File]::AppendAllText($LogFilePath, "---`n")
    Write-Output "Mazani docasnych souboru..."
    [System.IO.File]::AppendAllText($LogFilePath, "Mazani docasnych souboru...`n")
    try {
        Write-Output "Odstranovani souboru z $env:TEMP..."
        [System.IO.File]::AppendAllText($LogFilePath, "Odstranovani souboru z $env:TEMP...`n")
        Get-ChildItem -Path $env:TEMP\* -Recurse | ForEach-Object {
            Remove-Item -Path $_.FullName -Recurse -Force -ErrorAction SilentlyContinue
            [System.IO.File]::AppendAllText($LogFilePath, "Vymazan soubor: $($_.FullName)`n")
        }
        Write-Output "Odstranovani souboru z C:\\Windows\\Temp..."
        [System.IO.File]::AppendAllText($LogFilePath, "Odstranovani souboru z C:\\Windows\\Temp...`n")
        Get-ChildItem -Path "C:\\Windows\\Temp\*" -Recurse | ForEach-Object {
            Remove-Item -Path $_.FullName -Recurse -Force -ErrorAction SilentlyContinue
            [System.IO.File]::AppendAllText($LogFilePath, "Vymazan soubor: $($_.FullName)`n")
        }
    } catch {
        Write-Output "Chyba pri mazani souboru."
        [System.IO.File]::AppendAllText($LogFilePath, "Chyba pri mazani souboru.`n")
    }
    Write-Output "Docasne soubory byly vymazany."
    [System.IO.File]::AppendAllText($LogFilePath, "Docasne soubory byly vymazany.`n")
}

# --------------------------------------------------------------------------------
# Funkce pro vymazani docasnych souboru v AppData\Local\Temp pro vsechny uzivatele
function Delete-AppDataTempFiles {
    Write-Output "---"
    Write-Output "---"
    [System.IO.File]::AppendAllText($LogFilePath, "---`n")
    [System.IO.File]::AppendAllText($LogFilePath, "---`n")
    Write-Output "Mazani docasnych souboru v AppData\Local\Temp pro vsechny uzivatele..."
    [System.IO.File]::AppendAllText($LogFilePath, "Mazani docasnych souboru v AppData\Local\Temp pro vsechny uzivatele...`n")

    $userProfiles = Get-ChildItem -Path "C:\\Users" | Where-Object { $_.PSIsContainer }
 
    foreach ($profile in $userProfiles) {
        $tempPath = "$($profile.FullName)\AppData\Local\Temp"
        if (Test-Path -Path $tempPath) {
            try {
                Write-Output "Odstranovani souboru z $tempPath..."
                [System.IO.File]::AppendAllText($LogFilePath, "Odstranovani souboru z $tempPath...`n")
                Get-ChildItem -Path "$tempPath\*" -Recurse | ForEach-Object {
                    Remove-Item -Path $_.FullName -Recurse -Force -ErrorAction SilentlyContinue
                    [System.IO.File]::AppendAllText($LogFilePath, "Vymazan soubor: $($_.FullName)`n")
                }
            } catch {
                Write-Output "Chyba pri mazani docasnych souboru v $tempPath."
                [System.IO.File]::AppendAllText($LogFilePath, "Chyba pri mazani docasnych souboru v $tempPath.`n")
            }
        }
    }

    Write-Output "Docasne soubory v AppData\Local\Temp pro vsechny uzivatele byly vymazany."
    [System.IO.File]::AppendAllText($LogFilePath, "Docasne soubory v AppData\Local\Temp pro vsechny uzivatele byly vymazany.`n")
}

# --------------------------------------------------------------------------------
# Funkce pro vycisteni DNS cache
function Clear-DNSCache {
    Write-Output "---"
    Write-Output "---"
    [System.IO.File]::AppendAllText($LogFilePath, "---`n")
    [System.IO.File]::AppendAllText($LogFilePath, "---`n")
    Write-Output "Mazani DNS cache..."
    [System.IO.File]::AppendAllText($LogFilePath, "Mazani DNS cache...`n")
    ipconfig /flushdns

    Write-Output "DNS cache byla vymazana."
    [System.IO.File]::AppendAllText($LogFilePath, "DNS cache byla vymazana.`n")
}

# --------------------------------------------------------------------------------
# Funkce pro odstraneni souboru predbezneho nacteni
function Delete-PrefetchFiles {
    Write-Output "---"
    Write-Output "---"
    [System.IO.File]::AppendAllText($LogFilePath, "---`n")
    [System.IO.File]::AppendAllText($LogFilePath, "---`n")
    Write-Output "Mazani prefetch souboru..."
    [System.IO.File]::AppendAllText($LogFilePath, "Mazani prefetch souboru...`n")

    try {
        Write-Output "Odstranovani souboru z C:\\Windows\\Prefetch..."
        [System.IO.File]::AppendAllText($LogFilePath, "Odstranovani souboru z C:\\Windows\\Prefetch...`n")
        Get-ChildItem -Path "C:\\Windows\\Prefetch\*" -Recurse | ForEach-Object {
            Remove-Item -Path $_.FullName -Recurse -Force -ErrorAction SilentlyContinue
            [System.IO.File]::AppendAllText($LogFilePath, "Vymazan soubor: $($_.FullName)`n")
        }
    } catch {
        Write-Output "Chyba pri mazani prefetch souboru."
        [System.IO.File]::AppendAllText($LogFilePath, "Chyba pri mazani prefetch souboru.`n")
    }

    Write-Output "Prefetch soubory byly vymazany."
    [System.IO.File]::AppendAllText($LogFilePath, "Prefetch soubory byly vymazany.`n")
}

# --------------------------------------------------------------------------------
# Funkce pro odstraneni starych instalacnich souboru
function Delete-InstallerFiles {
    Write-Output "---"
    Write-Output "---"
    [System.IO.File]::AppendAllText($LogFilePath, "---`n")
    [System.IO.File]::AppendAllText($LogFilePath, "---`n")
    Write-Output "Mazani starych instalacnich souboru..."
    [System.IO.File]::AppendAllText($LogFilePath, "Mazani starych instalacnich souboru...`n")
    try {
        Get-ChildItem -Path "$env:windir\Installer\*" -Recurse | ForEach-Object {
            Remove-Item -Path $_.FullName -Recurse -Force -ErrorAction SilentlyContinue
            [System.IO.File]::AppendAllText($LogFilePath, "Vymazan soubor: $($_.FullName)`n")
        }
    } catch {
        Write-Output "Chyba pri mazani instalacnich souboru."
        [System.IO.File]::AppendAllText($LogFilePath, "Chyba pri mazani instalacnich souboru.`n")
    }
    Write-Output "Stare instalacni soubory byly vymazany."
    [System.IO.File]::AppendAllText($LogFilePath, "Stare instalacni soubory byly vymazany.`n")
}

# --------------------------------------------------------------------------------
# Funkce pro odstraneni starych aktualizacnich souboru
function Delete-OldUpdateFiles {
    Write-Output "---"
    Write-Output "---"
    [System.IO.File]::AppendAllText($LogFilePath, "---`n")
    [System.IO.File]::AppendAllText($LogFilePath, "---`n")
    Write-Output "Mazani starych aktualizacnich souboru..."
    [System.IO.File]::AppendAllText($LogFilePath, "Mazani starych aktualizacnich souboru...`n")

    Write-Output "Zastavovani sluzby Windows Update..."
    [System.IO.File]::AppendAllText($LogFilePath, "Zastavovani sluzby Windows Update...`n")
    net stop wuauserv

    try {
        Write-Output "Odstranovani souboru z $env:windir\SoftwareDistribution..."
        [System.IO.File]::AppendAllText($LogFilePath, "Odstranovani souboru z $env:windir\SoftwareDistribution...`n")
        if (Test-Path -Path "$env:windir\SoftwareDistribution") {
            Get-ChildItem -Path "$env:windir\SoftwareDistribution\*" -Recurse | ForEach-Object {
                Remove-Item -Path $_.FullName -Recurse -Force -ErrorAction SilentlyContinue
                [System.IO.File]::AppendAllText($LogFilePath, "Vymazan soubor: $($_.FullName)`n")
            }
        } else {
            Write-Output "Cesta $env:windir\SoftwareDistribution nebyla nalezena."
            [System.IO.File]::AppendAllText($LogFilePath, "Cesta $env:windir\SoftwareDistribution nebyla nalezena.`n")
        }
    } catch {
        Write-Output "Chyba pri mazani souboru."
        [System.IO.File]::AppendAllText($LogFilePath, "Chyba pri mazani souboru.`n")
    }

    Write-Output "Restartovani sluzby Windows Update..."
    [System.IO.File]::AppendAllText($LogFilePath, "Restartovani sluzby Windows Update...`n")
    net start wuauserv

    Write-Output "Stare aktualizacni soubory byly vymazany."
    [System.IO.File]::AppendAllText($LogFilePath, "Stare aktualizacni soubory byly vymazany.`n")
}

# ----------------------------------------------------------------------------------
# Funkce pro odstraneni osirelych zaznamu registru
function Delete-OrphanedRegistryEntries {
    Write-Output "---"
    Write-Output "---"
    [System.IO.File]::AppendAllText($LogFilePath, "---`n")
    [System.IO.File]::AppendAllText($LogFilePath, "---`n")
    Write-Output "Mazani sirotcich polozek registru..."
    [System.IO.File]::AppendAllText($LogFilePath, "Mazani sirotcich polozek registru...`n")

    $paths = @("HKLM:\SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall", "HKCU:\Software\Microsoft\Windows\CurrentVersion\Uninstall")
    foreach ($path in $paths) {
        Write-Output "Prohledavani cesty: $path"
        [System.IO.File]::AppendAllText($LogFilePath, "Prohledavani cesty: $path`n")

        if (Test-Path -Path $path) {
            Get-ChildItem -Path $path | ForEach-Object {
                try {
                    if (! (Get-ItemProperty -Path $_.PSPath -Name DisplayName -ErrorAction SilentlyContinue)) {
                        Write-Output "Odstranovani sirotci polozky: $($_.PSPath)"
                        [System.IO.File]::AppendAllText($LogFilePath, "Odstranovani sirotci polozky: $($_.PSPath)`n")
                        Remove-Item -Path $_.PSPath -Recurse -Force -ErrorAction SilentlyContinue
                    }
                } catch {                    Write-Output "Chyba pri mazani sirotci polozky: $($_.PSPath)"
                    [System.IO.File]::AppendAllText($LogFilePath, "Chyba pri mazani sirotci polozky: $($_.PSPath)`n")
                }
            }
        } else {
            Write-Output "Cesta $path nebyla nalezena."
            [System.IO.File]::AppendAllText($LogFilePath, "Cesta $path nebyla nalezena.`n")
        }
    }
    Write-Output "Sirotci polozky registru byly vymazany."
    [System.IO.File]::AppendAllText($LogFilePath, "Sirotci polozky registru byly vymazany.`n")
}

# --------------------------------------------------------------------------------
# Funkce pro odstraneni starych log souboru
function Delete-OldLogFiles {
    Write-Output "---"
    Write-Output "---"
    [System.IO.File]::AppendAllText($LogFilePath, "---`n")
    [System.IO.File]::AppendAllText($LogFilePath, "---`n")
    Write-Output "Mazani starych logovacich souboru..."
    [System.IO.File]::AppendAllText($LogFilePath, "Mazani starych logovacich souboru...`n")

    try {
        Write-Output "Odstranovani souboru z C:\Windows\Logs..."
        [System.IO.File]::AppendAllText($LogFilePath, "Odstranovani souboru z C:\Windows\Logs...`n")
        Get-ChildItem -Path "C:\Windows\Logs\*" -Recurse | ForEach-Object {
            Remove-Item -Path $_.FullName -Recurse -Force -ErrorAction SilentlyContinue
            [System.IO.File]::AppendAllText($LogFilePath, "Vymazan soubor: $($_.FullName)`n")
        }
    } catch {
        Write-Output "Chyba pri mazani logovacich souboru."
        [System.IO.File]::AppendAllText($LogFilePath, "Chyba pri mazani logovacich souboru.`n")
    }
    Write-Output "Stare logovaci soubory byly vymazany."
    [System.IO.File]::AppendAllText($LogFilePath, "Stare logovaci soubory byly vymazany.`n")
}

# --------------------------------------------------------------------------------
# Funkce pro odstraneni starych bodu obnoveni
function Delete-SystemRestorePoints {
    Write-Output "---"
    Write-Output "---"
    [System.IO.File]::AppendAllText($LogFilePath, "---`n")
    [System.IO.File]::AppendAllText($LogFilePath, "---`n")
    Write-Output "Mazani bodu obnoveni systemu..."
    [System.IO.File]::AppendAllText($LogFilePath, "Mazani bodu obnoveni systemu...`n")

    try {
        Write-Output "Odstranovani bodu obnoveni systemu..."
        [System.IO.File]::AppendAllText($LogFilePath, "Odstranovani bodu obnoveni systemu...`n")
        vssadmin delete shadows /for=c: /all
    } catch {
        Write-Output "Chyba pri mazani bodu obnoveni systemu."
        [System.IO.File]::AppendAllText($LogFilePath, "Chyba pri mazani bodu obnoveni systemu.`n")
    }

    Write-Output "Body obnoveni systemu byly vymazany."
    [System.IO.File]::AppendAllText($LogFilePath, "Body obnoveni systemu byly vymazany.`n")
}

# --------------------------------------------------------------------------------
# Funkce pro zmenseni nebo vyprazdneni souboru pagefile.sys
function Clear-Pagefile {
    Write-Output "---"
    Write-Output "---"
    [System.IO.File]::AppendAllText($LogFilePath, "---`n")
    [System.IO.File]::AppendAllText($LogFilePath, "---`n")
    Write-Output "Zmensovani nebo vyprazdneni souboru pagefile.sys..."
    [System.IO.File]::AppendAllText($LogFilePath, "Zmensovani nebo vyprazdneni souboru pagefile.sys...`n")

    try {
        Write-Output "Zmena nastaveni pagefile.sys..."
        [System.IO.File]::AppendAllText($LogFilePath, "Zmena nastaveni pagefile.sys...`n")

        # Nastaveni pagefile.sys na minimalni velikost
        wmic computersystem where name="%computername%" set AutomaticManagedPagefile=False
        wmic pagefileset where name="C:\\pagefile.sys" set InitialSize=16,MaximumSize=16

        Write-Output "Soubor pagefile.sys byl zmensen."
        [System.IO.File]::AppendAllText($LogFilePath, "Soubor pagefile.sys byl zmensen.`n")
    } catch {
        Write-Output "Chyba pri zmensovani souboru pagefile.sys."
        [System.IO.File]::AppendAllText($LogFilePath, "Chyba pri zmensovani souboru pagefile.sys.`n")
    }

    Write-Output "Operace byla dokoncena."
    [System.IO.File]::AppendAllText($LogFilePath, "Operace byla dokoncena.`n")
}

# --------------------------------------------------------------------------------
# Funkce pro vypnuti hibernace
function Disable-Hibernation {
    Write-Output "---"
    Write-Output "---"
    [System.IO.File]::AppendAllText($LogFilePath, "---`n")
    [System.IO.File]::AppendAllText($LogFilePath, "---`n")
    Write-Output "Vypinani hibernace..."
    [System.IO.File]::AppendAllText($LogFilePath, "Vypinani hibernace...`n")

    try {
        Write-Output "Vypinani hibernace pomoci powercfg..."
        [System.IO.File]::AppendAllText($LogFilePath, "Vypinani hibernace pomoci powercfg...`n")
        powercfg -h off
    } catch {
        Write-Output "Chyba pri vypinani hibernace."
        [System.IO.File]::AppendAllText($LogFilePath, "Chyba pri vypinani hibernace.`n")
    }

    Write-Output "Hibernace byla vypnuta."
    [System.IO.File]::AppendAllText($LogFilePath, "Hibernace byla vypnuta.`n")
}

# --------------------------------------------------------------------------------
# Funkce pro spusteni akci CCM
function CCM-Hardware {
    Write-Output "---"
    Write-Output "---"
    [System.IO.File]::AppendAllText($LogFilePath, "---`n")
    [System.IO.File]::AppendAllText($LogFilePath, "---`n")
    Write-Output "Napojuji se na CCM..."
    [System.IO.File]::AppendAllText($LogFilePath, "Napojuji se na CCM...`n")
 
    try {
        Write-Output "Spoustim cyklus inventare hardwaru..."
        [System.IO.File]::AppendAllText($LogFilePath, "Spoustim CCM cyklus inventare hardwaru...`n")
        # Spustte cyklus inventare hardwaru na klientovi
        Invoke-CimMethod -Namespace "root\ccm" -ClassName "SMS_Client" -MethodName "TriggerSchedule" -Arguments @{sScheduleID="{00000000-0000-0000-0000-000000000001}"}
        Write-Output "Cyklus inventare hardwaru spusten."
        [System.IO.File]::AppendAllText($LogFilePath, "Cyklus inventare hardwaru spusten.`n")
    } catch {
        Write-Output "Chyba pri spousteni cyklu inventare hardwaru: $_"
        [System.IO.File]::AppendAllText($LogFilePath, "Chyba pri spousteni cyklu inventare hardwaru: $_`n")
        return
    }

    try {
        Write-Output "Spoustim cyklus sberu souboru..."
        [System.IO.File]::AppendAllText($LogFilePath, "Spoustim cyklus sberu souboru...`n")
        # Spustte cyklus sberu souboru na klientovi
        Invoke-CimMethod -Namespace "root\ccm" -ClassName "SMS_Client" -MethodName "TriggerSchedule" -Arguments @{sScheduleID="{00000000-0000-0000-0000-000000000003}"}
        Write-Output "Cyklus sberu souboru spusten."
        [System.IO.File]::AppendAllText($LogFilePath, "Cyklus sberu souboru spusten.`n")
    } catch {
        Write-Output "Chyba pri spousteni cyklu sberu souboru: $_"
        [System.IO.File]::AppendAllText($LogFilePath, "Chyba pri spousteni cyklu sberu souboru: $_`n")
        return
    }
}

# --------------------------------------------------------------------------------
# --------------------------------------------------------------------------------
# Hlavni skript
# --------------------------------------------------------------------------------
# --------------------------------------------------------------------------------

do {
    # Prompt for log file path
    $LogFilePath = Read-Host "Zadejte cestu k logovacimu souboru (nebo stisknete Enter pro vychozi cestu: C:\temp\cisteniPC.log)"
    if (-not $LogFilePath) {
        $LogFilePath = "C:\temp\cisteniPC.log"
    }

    # Vycisti CCM cache na lokalnim PC
    Clear-CCMCache -LogFilePath $LogFilePath

    # Cistici funkce
    Delete-TempFiles
    Delete-AppDataTempFiles
    Clear-DNSCache
    Delete-PrefetchFiles
    Delete-OldUpdateFiles
    Delete-OrphanedRegistryEntries
    Delete-OldLogFiles
    Delete-SystemRestorePoints

    Clear-Pagefile
#   Tato funkce zmensi soubor pagefile.sys - muze mit vliv na vykon PC po restartu, pokud nema PC dostatek RAM. 

    # Disable-Hibernation
    CCM-Hardware

    # Ask if the user wants to clean the cache again
    $continue = Read-Host "Chcete vycistit cache znovu? (ano/ne)"
} while ($continue -eq "ano")

# --------------------------------------------------------------------------------
# -----------------------------  KONEC SKRIPTU -----------------------------------
# --------------------------------------------------------------------------------

0 komentářů

Napsat komentář

Zástupce avatara

Vaše e-mailová adresa nebude zveřejněna. Vyžadované informace jsou označeny *