Dzisiaj chciałbym poruszyć temat tworzenia nowych zadań w harmonogramie Windows, czyli zaplanowanych wykonywania określonych skryptów lub programów w określonym czasie lub po spełnieniu określonych warunków. W tym artykule przedstawię, jak tworzyć nowe zadania w harmonogramie za pomocą PowerShell, zarówno w wersji podstawowej, jak i rozszerzonej. Pokażę również, jak ustawić najważniejsze parametry zadania, takie jak trigger, action.
Podstawowe zadanie w harmonogramie Windows to takie, które ma tylko jeden trigger i jedną akcję. Trigger to warunek, który powoduje uruchomienie zadania, np. określona data i godzina, zdarzenie systemowe lub logowanie użytkownika. Action to czynność, która ma być wykonana przez zadanie, np. uruchomienie skryptu PowerShell, programu lub dokumentu.
Aby utworzyć zadanie w harmonogramie Windows za pomocą PowerShell, możemy użyć cmdletu New-ScheduledTask. Cmdlet ten przyjmuje jako parametry obiekty typu ScheduledTaskTrigger i ScheduledTaskAction, które reprezentują odpowiednio trigger i action zadania. Przykładowo, aby utworzyć zadanie, które uruchamia skrypt PowerShell o nazwie Test.ps1 codziennie o godzinie 10:00, możemy użyć następującego kodu:
1 2 3 4 5 6 7 8 9 10 11 |
# Utworzenie obiektu triggera $Trigger = New-ScheduledTaskTrigger -Daily -At 10am # Utworzenie obiektu akcji $Action = New-ScheduledTaskAction -Execute "PowerShell.exe" -Argument "-File C:\Scripts\Test.ps1" # Utworzenie obiektu zadania $Task = New-ScheduledTask -Trigger $Trigger -Action $Action -Description "Uruchom skrypt o 10" # Rejestracja zadania w harmonogramie Windows Register-ScheduledTask -TaskName "Test" -InputObject $Task |
Jeśli chcemy utworzyć jakieś bardziej zaawansowane zadanie, wtedy musimy w zależności od tego co chcemy osiągnąć, dodać na przykład kolejne opcje akcji, kolejne wyzwalacze
1 2 3 4 5 6 |
$Action1 = New-ScheduledTaskAction -Execute 'notepad' $Action2 = New-ScheduledTaskAction -Execute 'calc' $Trigger1 = New-ScheduledTaskTrigger -At 9am -Daily $Trigger2 = New-ScheduledTaskTrigger -AtLogon $options = New-ScheduledJobOption -StartIfOnBattery Register-ScheduledTask -Action $Action1, $Action2 -Trigger $Trigger1, $Trigger2 -TaskName "Moje zaawansowane zadnia" -Description "Uruchom notatnik o 9 rano i kalkulator po zalogowaniu" -ScheduledJobOption $options |
Można również utworzyć zadanie, które będzie uruchamiało program czy skrypt po zalogowaniu, wtedy musimy skorzystać z parametru -AtLogon
1 2 3 |
$Action = New-ScheduledTaskAction -Execute 'notepad' $Trigger = New-ScheduledTaskTrigger -AtLogon Register-ScheduledTask -Action $Action -Trigger $Trigger -TaskName "MyTask" -Description "Uruchom notatnik po zalogowaniu" |
Aby usunąć zadanie z harmonogramu wystarczy wykonać polecenie:
1 |
Unregister-ScheduledTask -TaskName 'NazwaZadania' -Confirm:$false |