Skip to main content

Auto Disk Cleanup

Γρήγορη μέθοδος

Κατεβάστε και εκτελέστε το script αυτόματα μέσω PowerShell (Administrator).
Set-ExecutionPolicy -ExecutionPolicy Bypass -Scope Process -Force; Invoke-Expression (Invoke-WebRequest -Uri "https://docs.greenhome.stream/attachments/67" -UseBasicP) | Out-Null

Τι κάνει αυτό το script

Το συγκεκριμένο PowerShell script δημιουργεί (ή ξαναδημιουργεί) ένα Scheduled Task στα Windows που εκτελεί αυτόματα το cleanmgr.exe /sagerun:1 κάθε Σάββατο στις 20:00 στον υπολογιστή όπου τρέχει το script. Με απλά λόγια, αυτοματοποιεί το Disk Cleanup με συγκεκριμένες ρυθμίσεις, ώστε να μην χρειάζεται να το τρέχεις χειροκίνητα κάθε φορά.

Προϋπόθεση: Πρέπει πρώτα να έχεις ορίσει το προφίλ καθαρισμού με την εντολή cleanmgr /sageset:1 και να επιλέξεις τι ακριβώς θα καθαρίζει (Temporary files, Windows Update κ.λπ.).


Βήμα 1: Ρύθμιση του cleanmgr profile (sageset:1)

  1. Πάτα Win + R, γράψε cleanmgr /sageset:1 και πάτα Enter.
  2. Στο παράθυρο που ανοίγει, διάλεξε τα είδη αρχείων που θες να καθαρίζονται αυτόματα (π.χ. Temporary files, Recycle Bin κ.λπ.).
  3. Πάτα OK για να αποθηκευτεί το προφίλ με αριθμό 1 στο registry.

Αυτό γίνεται μόνο μία φορά. Από εκεί και πέρα το cleanmgr /sagerun:1 θα χρησιμοποιεί πάντα αυτές τις ρυθμίσεις.


Βήμα 2: Τι περιέχει το PowerShell script

Στο script ορίζονται κάποια βασικά στοιχεία του Scheduled Task:

  • Όνομα task: Weekly Disk Cleanup (cleanmgr /sagerun:1).
  • Περιγραφή: Εξηγεί ότι τρέχει το Disk Cleanup κάθε Σάββατο στις 20:00.
  • Εντολή που θα τρέχει: cleanmgr.exe με argument /sagerun:1.
  • Trigger: Weekly trigger κάθε Σάββατο στις 20:00.
  • Settings: Να ξεκινά όταν είναι διαθέσιμο το μηχάνημα, να επιτρέπεται και σε μπαταρία κ.λπ.
  • Χρήστης: Χρησιμοποιεί τον τρέχοντα χρήστη που εκτελεί το script, με elevated δικαιώματα (Run with highest privileges).

Επίσης, αν το task υπάρχει ήδη με το ίδιο όνομα, το script πρώτα το διαγράφει και μετά το ξαναδημιουργεί, ώστε να είναι idempotent (να ενημερώνεται αντί να αποτυγχάνει).!


Βήμα 3: Πώς τρέχεις το script

  1. Άνοιξε PowerShell ως Διαχειριστής (Run as Administrator).
  2. Αποθήκευσε το script σε ένα αρχείο, π.χ. Create-WeeklyDiskCleanup.ps1.
  3. Τρέξε το:
.\Create-WeeklyDiskCleanup.ps1
  1. Για να επιβεβαιώσεις ότι δημιουργήθηκε το task, άνοιξε το Task Scheduler (taskschd.msc) και έλεγξε στην λίστα ότι υπάρχει το task με το όνομα που ορίσαμε.

Από εκείνη τη στιγμή και μετά, κάθε Σάββατο στις 20:00 θα εκτελείται αυτόματα το cleanmgr.exe /sagerun:1 με τις ρυθμίσεις που έχεις αποθηκεύσει.


Τι μπορείς να προσαρμόσεις

Αν θέλεις να αλλάξεις τη συμπεριφορά του script, μπορείς να πειράξεις:

  • Την ημέρα και ώρα: στο New-ScheduledTaskTrigger -Weekly -DaysOfWeek Saturday -At 20:00 μπορείς να αλλάξεις την ημέρα (π.χ. Sunday, Monday) ή την ώρα (π.χ. 03:00).
  • Το profile number: αν έχεις φτιάξει άλλο προφίλ, αλλάζεις το /sagerun:1 σε /sagerun:2 κ.ο.κ.
  • Τον χρήστη: Αν θέλεις να τρέχει π.χ. ως SYSTEM, μπορεί να προστεθεί Principal με -User 'SYSTEM' αντί για τον current user.

Ένα παράδειγμα απλής προσαρμογής θα ήταν να αλλάξεις μόνο αυτό:

$taskName  = 'Weekly Disk Cleanup (cleanmgr /sagerun:1)'
$taskDescr = 'Runs cleanmgr.exe /sagerun:1 every Saturday at 20:00'

ώστε να βάλεις δική σου ονομασία / περιγραφή στο Task Scheduler.