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ářů