Tips voor Windows Taakplanner
Met een cynische inslag zou je kunnen stellen dat je computer met Taakplanner klusjes uitvoert die er zonder hem helemaal niet zouden zijn. Dat klopt maar ten dele: als je Taakplanner goed doorhebt, kan hij je leven makkelijker maken.
Windows voert continu allerlei onderhoud sklusje sop de achtergrond uit. Het systeem werkt zichzelf bijvoorbeeld voortdurend bij en verhindert dat de verzameling aan verwijderde gegevens op de schijf en in het geheugen uit de klauwen loopt. Wanneer en hoe vaak dat nodig is, hangt af van de desbetreffende taak: het defragmenteren van een harde schijf kan rustig wachten tot je pc even een tijdje niets te doen heeft, maar veiligheidsupdates kunnen het beste zo snel mogelijk gedownload en geïnstalleerd worden. De universele tool die in Windows al die taken beheert en de klusjes op de gewenste momenten uitvoert, is Taakplanner.
Taakplanner doet niet alleen allerlei klusjes voor het besturingssysteem. Talloze geïnstalleerde toepassingen laten ook hun onderhoud door Taak planner uitvoeren, in het algemeen voor het plannen van updates of het synchroniseren van bestanden. Als gebruiker kun je Taakplanner ook opdrachten automatisch voor je laten uitvoeren.
De opdrachten configureer je in een apart venster dat je het eenvoudigste geval opent door de Windowstoets in te drukken en de eerste paar letters van Taakplanner in het Windows zoekscherm in te typen. Of je kunt Taakplanner bijvoorbeeld starten door Windows+R in te drukken en dan taskschd.msc in te typen. De layout van het venster lijkt een beetje op Windows Verkenner. Links zie je een boomstructuur met mappen, waarin nog submappen of taken kunnen zitten. Er zijn verder echter geen overeenkomsten met het bestandssysteem. In een nieuwe Windowsinstallatie staan de meeste taken in submappen van ‘Task S che du l er bibliotheek\ Micro soft\ Windows ’. Geïn
stalleerde toepassingen van derden slaan hun taken meestal direct in ‘Task Schedulerbibliotheek’ op. Als er in een map opdrachten staan, verschijnen ze in de bovenste helft in het midden van het venster. Dat is alleen een preview – de details van een taak kom je hier niet te weten en je kunt ze hier ook niet wijzigen.
BASISGEREEDSCHAP
De details zie je en kun je wijzigen in het Eigenschappenvenster. Dat open je door op een taak dubbel te klikken. We raden je niet aan in het wilde weg bestaande taken aan te passen. Om de functies van Taakplanner uit te proberen, kun je het beste in de Task Schedulerbibliotheek een eigen map aan te maken, die selecteren, er met de rechtermuisknop op te klikken en de opdracht ‘Nieuwe map’ te selecteren.
Een nieuwe taak maak je via twee mogelijke opdrachten die in het contextmenu van een map staan: met ‘Basistaak maken’ start je een wizard die je begeleidt door de belangrijkste stappen om een taak te definiëren. Veel details kun je daarmee echter niet instellen. Alle opties krijg je alleen te zien met de opdracht ‘Taak maken’. Daarmee open je hetzelfde venster dat opent als je op een bestaande taak dubbelklikt, maar zonder enige ingevulde informatie. Als alternatief kun je ook eerst een nieuwe taak met de wizard maken en die dan via het eigenschappenvenster configureren.
Voordat je iets zinvols kunt uitvoeren, moet je eerst twee centrale begrippen kennen: een taak bevat altijd ten minste één ‘actie’ . Die bepaalt wat de taak moet doen. Een of meerdere ‘triggers’ definiëren wanneer dat moet gebeuren. Daar later meer over.
Het configureren van de details van een taak doe
je via de tabbladen van het eigenschappenvenster. Op het eerste met de naam Algemeen moet je de nieuwe taak een naam geven. Bij een bestaande taak kun je de naam achteraf niet meer aanpassen. Als de taak met een ander gebruikersaccount dan je eigen moet worden uitgevoerd, kun je dat instellen bij de Beveiligingsopties. Daar kun je bijvoorbeeld ook als account ‘SYSTEM’ kiezen. Dat is bijvoorbeeld handig om backups mee in te stellen, omdat het gebruikersoverkoepelend toegang krijgt tot alle bestanden.
De optie ‘Uitvoeren ongeacht of gebruiker wel of niet is aangemeld’ zorgt er voor dat de taak ook wordt uitgevoerd wanneer de gekozen gebruiker niet aangemeld is. De taak wordt echter ook uitgevoerd wanneer de gebruiker juist wel is aangemeld. Hij wordt dan niet interactief op het bureaublad uitgevoerd, maar onzichtbaar op de achtergrond. Dat betekent wel dat mogelijke foutmeldingen van het uitgevoerde programma niet worden getoond. Ook als het programma de vraag ‘Weet u het zeker?’ stelt, krijg je die niet te zien. De gebruiker krijgt niet de gelegenheid om de vraag te bevestigen en de actie voert zijn taak mogelijk niet naar wens uit. Zonder actieve aanmelding is bovendien het gebruikersaccountbeheer (UAC) niet actief. Accounts die werken met administratorrechten hebben binnen die context altijd volledige rechten.
TRIGGERS
Je hoeft voor een taak niet per se een trigger te definieren. Als je door de taken neust die het systeem heeft ingesteld, kom je er genoeg tegen zonder trigger. Dat kan handig zijn om bijvoorbeeld meerdere acties met alle veiligheids en uitvoeropties als taak op te slaan, maar die dan niet in te plannen maar via een script uit te voeren. Je start de taak handmatig met de opdracht Uitvoeren. Die staat zowel in het contextmenu als in het Actiesmenu dat in het Taakplannervenster rechts in beeld staat.
Als je triggers definieert, zul je waarschijnlijk een trigger voor het uitvoeren volgens een tijdsplanning het meeste gebruiken. Daarmee kun je taken regelmatig laten uitvoeren, bijvoorbeeld ’s nachts om 3 uur. Maar je kunt taken ook volgens complexere planningen laten uitvoeren, zoals elke tweede en vierde donderdag van de maand. Ook als je een taak maar eenmalig wilt laten uitvoeren, zit je met de optie Gepland goed. Een taak die regelmatig is ingepland kun je met de optie ‘Verloopt op’ en het invullen van de bijbehorende velden na een bepaalde tijd ook weer automatisch laten beëindigen.
De meeste andere typen triggers spreken voor zich. De optie ‘Tijdens maken of wijzigen van taak’ betekent niets anders dan nu meteen. Met de optie ‘Bij een gebeurtenis’ wordt bedoeld dat de trigger wordt gestart op het moment dat er een bepaalde invoer in het systeemlogboek wordt geschreven, oftewel het logboek dat je met de logboekenapp kunt bekijken [1]. Systeembeheerders kunnen daarmee berichten ontvangen, bijvoorbeeld wanneer Windows Defender een bedreiging op een pc heeft gevonden (logboek: MicrosoftWindowsWindows Defender/Operational, GebeurtenisID’s 1006, 1015, 1116).
Bij de geavanceerde instellingen kun je het uitvoeren van een taak na het afgaan van een trigger nog voor een bepaalde duur vertragen. Dat kan bijvoorbeeld zinvol zijn als je taken die bij het aanmelden worden gestart, één voor één wilt laten starten en niet allemaal tegelijk.
Taken die je meerdere malen per dag wilt laten lopen, stel je op de volgende manier in: stel allereerst een dagelijks tijdsschema op. Vink daarna het selectievakje voor ‘Taak herhalen elke’ aan en kies het gewenste interval. Bij ‘gedurende’ laat je ‘1 dag’ staan. Omdat je de taak op ‘Dagelijks’ hebt ingesteld, blijft Taakplanner de taak tenslotte elke dag opnieuw uitvoeren. Het is niet meteen evident, maar de velden voor het vertragen en voor het herhalen zijn niet beperkt tot de opgegeven waarden. Taakplanner snapt het ook als je daar iets invult als ’90 minuten’ of ‘4:30’ (vierenhalf uur).
De optie ‘Taak stoppen indien actief langer dan’ leek bij onze tests geen effect te hebben. Een andere
manier die wel werkte, vonden we op het tabblad Instellingen van de Eigenschappen.
ACTIES
Bij elke taak hoort minstens één actie. Bij Windows 10 staat in Taakplanner ‘Programma starten’ als enige beschikbare optie. Je moet dan het pad naar de applicatie invoeren, waarbij je optioneel nog opdrachtpromptcommando’s kunt meegeven, zodat Taakplanner pas op het moment dat de taak uitgevoerd moet worden gaat kijken wat de juiste map is.
De opties om een email te verzenden of een bericht weer te geven vermeldt Taakplanner als ‘afgeschaft’. Je kunt ze nog selecteren, maar dat levert een foutmelding op. Dat is niet zo erg, want er zijn programma’s als Blat en sendEmail (zie de link op de rechterpagina) om emails automatisch te verzenden. Daarmee kunnen beheerders zich bijvoorbeeld regelmatig een rapport laten toesturen over de status van de apparaten die ze beheren. Een aparte tool kan een rapport dan samenstellen dat via email wordt verzonden.
Om een melding op het scherm te tonen, voldoet al een minimaal VBScript dat je in MsgBox gebruikt – een voorbeeld daarvan staat bij de link aan het eind van dit artikel. Je kunt het script bijvoorbeeld gebruiken om je elke donderdag om 17:30 uur een bericht te laten sturen dat je je werk moet afsluiten omdat het tijd wordt dat je naar je training gaat.
Als je bij een opdracht meerdere acties instelt, voert de opgaveplanning een actie pas uit wanneer een vorige actie voltooid is. Dat is handig, bijvoorbeeld als je een bericht wilt laten sturen wanneer een opruimactie is voltooid.
OPTIES
Via het tabblad Voorwaarden in het eigenschappenvenster kun je nog instellen dat een opdracht alleen wordt uitgevoerd wanneer het systeem aan bepaalde voorwaarden voldoet. De optie dat een taak alleen wordt uitgevoerd zolang het systeem op netstroom werkt, staat standaard ingeschakeld. Voor minder belangrijke onderhoudstaken is het bovendien aan te raden dat je het systeem alleen laat starten zolang de computer idle draait.
De Taakplanner vindt dat een systeem idle is als er vier minuten lang geen toets of muisactiviteit heeft plaatsgevonden (dat is 15 minuten bij Windows 7) en dat gedurende die tijd de cpu’s en gegevensdragers ten minste 80 procent van de tijd niets te doen hadden (oftewel 90 procent bij Windows 7). Naar wens kan Taakplanner ook een tijd lang idle wachten, maar een taak ook afkappen wanneer hij tijdens het afwerken ervan merkt dat er weer gebruikersactiviteit plaatsvindt.
De opties op het tabblad Instellingen van het Eigenschappenvenster zijn helaas maar gedeeltelijk bruikbaar. Wat je met de optie ‘Als de taak mislukt, opnieuw opstarten elke’ kunt doen, konden we niet ontdekken – ook niet met het nodige speurwerk op internet en door zelf wat te experimenteren. Een 0 als resultaatwaarde van een script of een programma wordt in ieder geval niet als fout herkend. Ook het wel of niet aanvinken van de optie ‘De actieve taak geforceerd stoppen…’ leek geen enkel effect te hebben bij onze pogingen.
FOUTEN ZOEKEN
Als je op speurtocht gaat naar fouten in een taak die door jezelf of het systeem fout gedefinieerd is, dan kun je in het Actiesmenu rechts in het venster de optie ‘De geschiedenis van alle taken uitschakelen’ gebruiken om een logboek bij te houden. De lijst van items op het tabblad Geschiedenis zal dan na verloop van tijd steeds langer gaan worden. De items beschrijven uitvoerig wanneer een taak wordt gestart en beeindigd. Maar let op: het logboek groeit wel behoorlijk snel. Het loggen kun je daarom het beste alleen specifiek voor het opsporen van fouten inschakelen en dan niet vergeten om het op den duur ook weer uit te schakelen.
De logbestanden worden opgeslagen in een logboek dat je met de Logboekenapp kunt openen, er in kunt zoeken en filters kunt instellen. Daarvoor ga je in Logboekenapp naar ‘Logboeken Toepassingen en Services/Microsoft/Windows/TaskScheduler/ Operational’.
Als het logboek ingeschakeld is, wordt bij Taakplanner in ‘Taakstatus’ ook de lijst steeds langer. Die zit in het middelste deel van het venster als je links in het venster helemaal terug omhoog gaat naar de root van de mappenhiërarchie. Helaas is er geen eenvoudige manier om van een item op die lijst naar de definitie van de desbetreffende taak te gaan – de systeemeigen taken staan tenslotte over talloze verschillende mappen verdeeld. In plaats van alle mappen handmatig open te klappen en naar de taak op zoek te gaan, kun je bij het logboekitem in de Logboekenapp naar de naam van de taak zoeken. Dan kom je er relatief snel achter bij welke taak een logboekitem hoort.
GRENZEN
Helaas helpt je dat niet altijd verder als je bijvoorbeeld bij een controle naar malware wilt weten welk programma een bepaalde taak start. Tussen de taken die Windows van huis uit uitvoert, zijn er talloze waarbij Taakplanner alleen ‘Aangepaste handler’ als actie noemt. Windows kent bij geplande taken ook acties die je niet in Taakplanner kunt bewerken. Dat zijn taken zoals de zogenaamde COMhandlers (Component Object Model). Die starten een programma of dll, die via het register in het systeem geïntegreerd is. Hoe je zoiets van een apart programma uit realiseert, staat vermeld in de ontwikkelaarsdocumentatie van Taak Scheduler (zie de link hiernaast).
Taakplanner vermeldt bij sommige voorgedefinieerde taken ook zogenaamde ‘Custom Triggers’. Blijkbaar kent Windows dus ook triggers waar Taakplanner niet mee kan omgaan.
Bij Windows 10 zit overigens een irritante bug in Taakplanner, die het achteraf bewerken van eerder gemaakte taken lastig maakt. Een poging om een taak te bewerken loopt dan spaak met de summiere melding ‘Er is een fout voor taak xyz opgetreden. Eén of meer van de opgegeven argumenten zijn ongeldig’. Die foutmelding verschijnt ook al als je in Taakplanner net een nieuwe taak hebt aangemaakt, die opent om te bewerken en zonder enige wijziging bevestigt met OK. De oplossing van het raadsel: als je bij de veiligheidsinstellingen uitsluitend je eigen gebruikersaccount invoert, corrumpeert Taakplanner de gebruikersnaam omdat het de computernaam overslaat. Je moet dus telkens voordat je iets bevestigt, de gebruikersnaam (‘Alice’) inclusief pcnaam invoeren (‘KantoorPC\Alice’).
ALTERNATIEVEN
Taakplanner is niet de enige manier om geplande taken in Windows te beheren. Je kunt bijvoorbeeld via Opdrachtprompt het programma schtasks openen. Dat heeft het oudere Microsoftprogramma at vervangen. Een overzicht met de beschikbare argumenten en commando’s krijg je door schtasks /? in te voeren.
Als je in plaats van Opdrachtprompt liever PowerShell gebruikt, dan kun je daar de commando’s uit de module ScheduledTasks gebruiken. Een overzicht van de beschikbare commando’s krijg je door gcm -Module ScheduledTasks in te voeren. De bijbehorende documentatie van de verschillende commando’s krijg je zoals gebruikelijk met help
Om toegang te krijgen tot alle geplande taken, moet je je zowel bij Opdrachtprompt als bij PowerShell aanmelden met administratorrechten. Als je als normale gebruiker de tools start, zullen talloze standaardtaken van Windows verborgen blijven.
Zowel schtasks als PowerShellcommando’s kun je bijvoorbeeld gebruiken om een taak te starten die in een batchbestand of PowerShellscript gepland staat. Bij een batchbestand ziet dat er als volgt uit: schtasks /run /tn "MijnTasks\Backup" In PowerShell gaat dat met de opdracht Start-ScheduledTask -TaskPath \MijnTasks\ -TaskName Backup
Het commando /Query van schtasks is de betere keuze als je een lijst met alle gedefinieerde taken naar een tekstbestand wilt kopiëren. Dat kan handig zijn om met een editor te doorzoeken of de opdrachten van twee verschillende computers met elkaar te vergelijken.
Een andere populaire tool waarmee je een overzicht van ingestelde geplande taken kunt krijgen, is de tool Autoruns van Sysinternals. Op het tabblad ‘Scheduled tasks’ toont het een lijst van alle in het systeem aanwezige geplande taken. Door de selectievakjes voor de taken wel of niet aan te vinken, activeer of deactiveer je een taak. Veel meer dan dat kun je met de geplande taken daar niet doen. Desondanks is Autoruns een handige tool om taken te bekijken door de menuopdracht ‘Options / Hide Windows Entries’. Daarmee worden alle opdrachten verborgen die bij de systeeminstallatie zelf horen. Dat maakt het makkelijker om te zien welke taken van derden afkomstig zijn.
Om volledig te zijn, moeten we nog wel vermelden dat het ook mogelijk is om taken met WMI (Windows Management Instrumentation) [2] te benaderen. De relevante klassen staan in de namespace Root\ Microsoft\Windows\TaskScheduler. We hebben echter geen manier gevonden om daar taken mee uit te voeren of te stoppen.