Jak usunąć pliki starsze niż 7 dni, za pomocą PowerShell’a? Jak zrobić to automatycznie, w określonym cyklu? Takie zadania są najczęstszymi tematami administracyjnymi, poniżej znajdziecie sprawdzone rozwiązanie na cykliczne operacje automatyczne z użyciem skryptu PowerShell. Przykładowe zadanie dotyczy usuwania danych z określonej lokalizacji, kryterium to czas utworzenia plików. Ale w miejsce tego konkretnego skryptu możecie wstawić dowolne polecenie PowerShell….
Zaczynamy od przygotowania skryptu który z określonej lokalizacji usuwa pliki starsze niż 8 dni (wg. daty utworzenia). Skrypt oparty jest o parametry które każdy może łatwo zdefiniować dla swojego środowiska.
#days
$days = (Get-Date).AddDays(-7)
#path
$path = "D:\backups"
#delete files form $path older than $days
Get-ChildItem -Path $path -Recurse -Force | Where-Object { !$_.PSIsContainer -and $_.CreationTime -lt $days } | Remove-Item -Force
Tak przygotowany skrypt zapisujemy w lokalizacji do której będziemy się odwoływać z poziomu Harmonogramu Zadań w naszym przypadku c:\scripts
Uruchamiamy Harmonogram Zadań (Task Scheduler) i z użyciem kreatora tworzymy proste zadanie:
Wprowadzamy nazwę dla zadania, opcjonalnie opis:
Wybieramy kiedy ma wystartować nasze zadanie:
W akcji wskazujemy aby zadanie uruchamiało program (Microsoft powoli zmusza do używania aplikacji w zadaniach co widać na poniższym ekranie):
W polu program/script wskazujemy powłokę powershell:
C:\Windows\System32\WindowsPowerShell\v1.0\powershell.exe
A jako argument wskazujemy w lokalizacje naszego skryptu w raz z jego nazwą (koniecznie w ” „ ), w naszym wypadku będzie to:
"C:\scripts\script.ps1"
Zamykamy okno z podsumowaniem naszego zadania:
Zadanie w harmonogramie mamy gotowe, zmieńmy jeszcze tryb jego uruchamiania i wskażmy aby było realizowane przez użytkownika systemowego. W tym celu na zadaniu klikamy prawym przyciskiem myszy wybierając jego właściwości. W oknie właściwości na zakładce Ogólne zmieniamy użytkownika który tworzył zadanie na użytkownika SYSTEM. Zgodnie z poniższym zrzutem ekranu:
Aby nie czekać z testowy uruchomieniem naszego skryptu do zaplanowanego terminu, zawsze warto wykonać zadanie jednorazowo z poziomu Harmonogramu Zadań i sprawdzić w historii czy działa poprawnie a co najważniejsze czy skrypt zadziałał.
Jak widać oprócz skryptowania będzie Was czekać trochę klikania. Od razu odpowiadam że całe powyższe zadanie można oczywiście zdefiniować i utworzyć z poziomu samego PowerShell – przygotujemy na to oddzielny wpis.
Pamiętajcie aby przed utworzeniem zadania i po jego zdefiniowaniu sprawdzić wasze skrypty. Najczęściej pojawiają się problemy z odpowiednimi uprawnieniami, polityką wykonywania skryptów etc. Sam Harmonogram Zadań jest z nami od lat i to jedno z częściej używanych narzędzi przez administratorów.