Crontab und Auf­ga­ben­pla­nung mit der PowerS­hell

Im letz­ten Blog­ein­trag haben wir uns außer der Reihe die Berech­nung der Zahl Pi mit der PowerS­hell ange­se­hen.

In die­sem Blog­ein­trag geht es um die Win­dows Auf­ga­ben­pla­nung bzw. Sche­du­led Tasks.

In der Linux Welt wird dies mit dem Befehl crontab umge­setzt.

Vor Urzei­ten begin­nend mit Win­dows NT wur­den sich wie­der­ho­lende Auf­ga­ben mit dem Kom­mandzei­len Tool at.exe ver­wal­tet.

Die­ser Urahn wurde begin­nend mit Win­dows 2003 /​ XP vom Nach­fol­ger schtasks.exe abge­löst. Aber erst mit Win­dows 10 wurde der alte Befehl at.exe deak­ti­viert.

Unter Win­dows 7 war es noch mög­lich, die Auf­ga­ben mit at zu ver­wal­ten. Dies wurde aller­dings ver­mehrt von Hackern genutzt, um ihre Angriffe zu ver­schlei­ern.

Mit fol­gen­dem Befehl wurde eine Auf­gabe ange­legt, die jede Nacht um 01:00 den Win­dows Taschen­rech­ner gegen eine „ange­passte“ Ver­sion aus dem Temp Ver­zeich­nis aus­tauscht.

at 01:00 cmd /​c copy c:\temp\calc.exe c:\windows\system32\calc.exe /​Y

In der Linux Welt wer­den geplante Auf­ga­ben über den Cron Dea­mon aus­ge­löst. Das Ver­wal­tungs­tool dazu nennt sich crontab.

Mit crontab –l wer­den beste­hende Auf­ga­ben eines Benut­zers auf­ge­lis­tet, mit crontab –e neue Auf­ga­ben hin­zu­ge­fügt. Das Ganze hübsch in der Kom­man­do­zeile und nicht wirk­lich intui­tiv.

Wie so oft in der Linux Welt heißt es RTFM. Wei­tere Detail zu cron und crontab fin­den sich bei Wiki­pe­dia.

Das PowerS­hell Equi­va­lent zu cron/​crontab, at.exe oder schtask.exe lässt sich leicht mit google und Get-​​Command fin­den.

Frage an Google: Was heißt geplante Auf­ga­ben auf Eng­lisch?

Ant­wort von Google: sche­du­led tasks

Frage an die PowerS­hell: Wel­che Befehle nut­zen diese eng­li­schen Worte?

Ant­wort von der PowerS­hell: Get-​​Command *-Scheduled*Task* | FT Name

Eine neue Auf­gabe für einen Benut­zer erstel­len

Dies ent­spricht dem crontab –e

Genauso wie in der gra­fi­schen Auf­ga­ben­plaung mit meh­rere tabs wird zuerst eine Auf­ga­ben­pla­nung zusam­men­ge­setzt

Eine Aktion erstel­len. Was soll aus­ge­führt wer­den?

$aktion = New-​​ScheduledTaskAction –Exe­cute ‚C:\Windows\System32\WindowsPowerShell\v1.0\powershell.exe‘ –Argu­ment ‚“C:\PS\doit.ps1

Hier soll ein PowerS­hell Script C:\PS\doit.ps1 gestar­tet wer­den. Durch die Angabe des vol­len Pfa­des zur powershell.exe ist es für Angrei­fer schwe­rer, diese gegen eine andere Ver­sion in einem ande­ren Pfad zu erset­zen

 

Einen Zeit­plan erstel­len. Wann soll es aus­ge­führt wer­den?

$zeit­plan = New-​​ScheduledTaskTrigger –Daily –At 02:00

Bitte täg­lich um 02:00 aus­füh­ren

 

Ein­stel­lun­gen erstel­len. Wel­che beson­de­ren Ein­stel­lun­gen sol­len mit­ge­ge­ben wer­den?

$ein­stel­lun­gen = New-​​ScheduledTaskSettingsSet –Exe­cu­ti­onTi­meLi­mit (New-​​TimeSpan –Minu­tes 15)

 

Die Auf­gabe als Objekt erstel­len. Alles wird zusam­men­ge­fasst

$auf­gabe = New-​​ScheduledTask –Action $aktion –Trig­ger $zeit­plan –Set­tings $ein­stel­lun­gen

 

Die Auf­gabe im Auf­ga­ben­pla­ner auf einen Benut­zer regis­trie­ren

Register-​​ScheduledTask –Tas­k­Name ‚doit‘ –Input­Ob­ject $auf­gabe –User ‚dummy‘ –Pass­word ‚C0mplex123

 

Alle Befehle noch ein­mal zusam­men­ge­fasst

 

Beste­hende Auf­ga­ben von einem Benut­zer aus­le­sen

Ein crontab –l = Liste alle Auf­ga­ben für den ange­mel­de­ten Benut­zer auf

$env:USERNAME zeigt mir den ange­mel­de­ten Benut­zer­na­men

Mit fol­gen­dem Befehl bekomme ich alle Auf­ga­ben ange­zeigt, die im Kon­text des ange­mel­de­ten Benut­zers lau­fen

Get-​​ScheduledTask | Where-​​Object {$_.Principal.userid –eq ($env:USERNAME)} | ft TaskName,{$_.Principal.userid} –a

 

 

Eine beste­hende Auf­ga­ben anpas­sen

Ein­stel­lun­gen erstel­len. Wel­che beson­de­ren Ein­stel­lun­gen sol­len ange­passt wer­den?

$ein­stel­lun­gen = New-​​ScheduledTaskSettingsSet –Disa­ble

Die Auf­gabe Anpas­sung im Auf­ga­ben­pla­ner für den Benut­zer anpas­sen

Set-​​ScheduledTask –Tas­k­Name ‚doit‘ –Set­tings $ein­stel­lun­gen –User ‚dummy‘ –Pass­word ‚C0mplex123

 

 

Viele wei­ter mög­li­che Optio­nen wer­den in den Micro­soft Docs beschrie­ben

 

 

Was den­ken Sie?