colinardo
Goto Top

Benutzerdefinierten Task für Taskplaner per GPO verteilen (mit erweiterten Einstellungen)

Wenn Ihnen die Einstellungsmöglichkeiten des Befehls "schtasks" oder "at" nicht ausreichen und sie den Task für den Taskplaner feiner einstellen möchten, habe ich hier folgenden Trick !

Als Beispiel für ein Szenario gebe ich folgendes vor:

Sie möchten z.b. das jeder Rechner in der Domäne täglich um 21:00 herunterfährt(wenn z.B. die lieben Kollegen den Rechner mal wieder nicht heruntergefahren haben) und das aber nur wenn der Rechner mindestens 1 Stunde im Idle-Modus war.
Mit dem "schtasks" Befehl ist das erstere zwar möglich, aber die Kombination mit der Idle-Erweiterung jedoch nicht. Mit folgendem Trick läßt sich das jedoch machen:


Schritt 1:

Anlegen des Tasks im Taskplaner auf dem Server oder einer Workstation

hier die Einstellungen:

ab7b510e56217be1b3147b2beca9918f-task1
4d1c4c4f9e79e4de21471abac1ed3de6-task2

da2c27034cbbb204791ca84d18bc4785-task3


Schritt 2:

Kopieren Sie den Task aus C:\Windows\tasks" in eine Freigabe auf den Server auf die jeder Benutzer Zugriff hat.


Schritt 3:

Legen Sie auf dem Server ein neues GroupPolicy-Objekt an und definieren ein Startup-Script mit folgendem Inhalt:

copy /y \\SERVER\ClientApps\Shutdown.job %windir%\tasks
schtasks.exe /change /tn "Shutdown" /ru "System"  


1534e7132a26e8731a4d422909e012b0-task5


Die Freigabepfade und Dateinamen sind entsprechend anzupassen.

Der "schtasks"-Befehl am Ende hat die Funktion den Benutzeraccount unter dem der Task läuft auf den Lokalen Systemaccount zu setzen, da beim kopieren des Tasks auf einen anderen Rechner die Einstellung per default auf den momentanen Benutzer gestellt wird und der Task so nicht korrekt ausgeführt würde.

Zum ändern der Einstellungen des Tasks braucht man jetzt nur noch das *.job File in den "Windows\Tasks"-Ordner ziehen, Einstellungen vornehmen, und dann wieder aus dem "Windows\Tasks"-Ordner in die Freigabe kopieren.

Fertig!


Mfg
face-wink Uwe

Content-Key: 76935

Url: https://administrator.de/contentid/76935

Printed on: June 16, 2024 at 16:06 o'clock

Member: aschinnerl
aschinnerl Mar 22, 2008 at 00:01:46 (UTC)
Goto Top
Was passiert wenn der User eine Datei offen hat un diese nicht gespeichert hat?
Member: colinardo
colinardo Mar 22, 2008 at 07:20:48 (UTC)
Goto Top
Darauf hat das Script natürlich keinen Einfluss. Man kann aber dem Shutdown-Befehl noch eine bestimmte Warnzeit mit geben so das der Benutzer, wenn er denn noch am PC sitzt, seine Dokumente speichern kann, bevor der PC herunterfährt. Man muss das natürlich mit den Mitarbeitern abstimmen, oder das nur für bestimmte Workstations freigeben. Wenn der Benutzer aber z.B. fahrlässig ein ungespeichertes Word-Dokument offen lässt und keine Automatische Speicherung aktiv ist, führt das unter Umständen sicherlich zu Datenverlust, das geht halt nur unter Absprache mit den Mitarbeitern.

mfg Uwe
Member: domame
domame Jun 13, 2008 at 13:22:28 (UTC)
Goto Top
Hallo Uwe,
Beschreibung ist echt super. Genau so was suche ich.
Wie stelle ich dies auf einem Windos Server 2008 an?
Hört sich vielleicht etwas albern an, aber leider bin ich hier gar nicht der Profi.
Wo eröffne ich den Task. Wo und wie öffne ich das 1. Fenster Deiner Beschreibung?
Gruss und Danke,
Markus
Member: colinardo
colinardo Jun 13, 2008 at 13:45:36 (UTC)
Goto Top
Zur ersten Frage:
Unter Windows Server 2008 kannst du dies mit den erweiterten Einstellungen der GPO-Objekte erledigen. Dazu benötigst du aber auf dem jeweiligen PC in der Domäne die "Group Policy Preference Client Side Extensions for Windows XP" installieren ,für Vista gibt es diese in einer Extra Version.
Hier die Downloadlinks:
XP:
http://www.microsoft.com/downloads/details.aspx?familyid=E60B5C8F-D7DC- ...

Vista:
http://www.microsoft.com/downloads/details.aspx?FamilyId=AB60DC87-884C- ...

Weitere Infos dazu gibt es hier:
http://support.microsoft.com/kb/943729

Zur zweiten Frage:
Das erste Fenster kannst du auf einem beliebigen Rechner im Taskplaner öffnen indem du einen neuen Task erstellst.
Member: domame
domame Jun 14, 2008 at 14:04:58 (UTC)
Goto Top
DANKE Uwe, hat einwandfrei geklappt.

Gruss,Markus
Member: Alforno
Alforno Aug 02, 2008 at 09:50:01 (UTC)
Goto Top
@ softmeister

ich habe versucht deine Anleitung anzuwenden.
Ich möchte gerne nach einer Leerlaufzeit von 15 min den Computer sperren.

Habe eine Freigabe erstellt, in der sich der Task befindet.
Dieser wird mittels Anmeldeskript auf die Clients kopiert.
Das klappt soweit auch.

Aber leider wird unter 'Ausführen als' der aktuell angemeldete Benutzer eingetragen und nicht der Systemaccount.
Die Syntax entspricht exakt die in deiner Anleitung.

Vielleicht noch nen Tipp für mich?
Danke im Voraus.

mfg
Alforno
Member: colinardo
colinardo Aug 02, 2008 at 11:13:06 (UTC)
Goto Top
Der "schtask"-Befehl in der Batch benötigt leider zur korrekten Ausführung Admin Rechte an der jeweiligen Maschine sonst hat das Script nicht das Recht den Benutzeraccount für den Task zu setzen.
Grüße Uwe face-wink
Member: Alforno
Alforno Aug 02, 2008 at 11:31:21 (UTC)
Goto Top
Danke für deine schnelle Antwort.

Leider ist mir das nicht ganz schlüssig.
Du beschreibst doch oben im Szenario, dass du Clients in einer Domäne herunterfahren möchtest.
Die User werden ja nicht alle Admin-Rechte haben, oder?

Ich habe das jetzt gerade nochmal ausprobiert.
Wenn ich mit an dem Client mit Admin-Rechten anmelde, dann wird der Task auch nicht ausgeführt.

Habe ich etwas grundsätzliches Missverstanden und wir beide reden aneinander vorbei?

Danke im Voraus.

mfg
Alforno
Member: colinardo
colinardo Aug 02, 2008 at 12:44:47 (UTC)
Goto Top
Du hast schon recht damit das nicht alle User Admin Rechte an der Maschine haben., das ist eben das Manko.
Mit Admin Rechten muss das funktionieren vielleicht habe ich da eine zweideutige Bezeichnung im zweiten Batch-Befehl benutzt: Das in Anführungszeichen gesetzte "Shutdown" musst du durch den Namen des Taskjobs ersetzen d.h bei z.B. "meinshutdowntask.job" lautet der zweite Batch-Befehl:
 schtasks /change /tn "meinshutdowntask" /ru "System"   
damit sollte es gehen.

Du kannst natürlich den zweiten Befehl auch per "run as" explizit mit Admin Rechten starten, dazu sollte aber ein Account in der Domäne existieren der sich nicht interaktiv anmelden kann(Sicherheit)
und auf den jeweiligen Maschinen per GPO Admin-Rechte erhält.

Mfg uwe
Member: Alforno
Alforno Aug 02, 2008 at 13:15:02 (UTC)
Goto Top
Nein, das ist ja das Problem es funktioniert nicht.
Den Namen des Jobs habe entsprechend angepasst.

Das sollte doch auch funktionieren wenn User die sich an den Rechnern anmelden nur Benutzerrechte haben, oder?
Ich habe hier leider keine Domäne sondern nur eine Arbeitsgruppe.

Welche NTFS Berechtigungen muss ich denn an der Freigabe auf dem Server einstellen?
Du schreibst ja oben, dass Benutzerrechte ausreichen.

Muss dort auch noch System eingetragen werden?

Das muss doch irgendwie machbar sein, ich verzweifel hier langsam.

Danke für deine Mühe.

mfg
Alforno
Member: colinardo
colinardo Aug 02, 2008 at 17:58:34 (UTC)
Goto Top
Wenn du keine Domäne was willst du dann mit GPO's ??
Ohne Domäne bringt das doch nichts.
Der Benutzer braucht für die Freigabe nur Leserechte, da das File ja nur von dort in das Windows-Verzeichnis "Tasks" kopiert wird.

Wenn du es wie beschrieben gemacht hast !!! MUSS !!! das funktionieren , habe das in einer Produktivumgebung erfolgreich laufen.

Für weitere Hilfe brauche ich mehr Informationen zu deiner Rechner-Umgebung etc.
Member: Alforno
Alforno Aug 02, 2008 at 18:25:04 (UTC)
Goto Top
Richtig ich habe keine Domäne, es ist lediglich eine Arbeitsgruppe.
Funktionieren sollte es dennoch, wenn auch der Arbeitsaufwand zum verteilen größer ist.

Die Clients sind gemischt. Windows 2000 und XP mit SP2 bzw. SP3

Aber nehmen wir mal als Referenz-Client einen mit XP Pro SP2.

Wenn ich mich am Client als Admin anmelde und gpedit.msc starte, dann kann ich dort lokal Anmeldeskripte eintragen.
Mein .job liegt in der Freigabe auf dem Server.
Mein Anmeldeskript lege ich lokal unter C:\Windows\system32\GroupPolicy\machine\scripts\startup\ ab und binde dies wie oben beschrieben per gpedit ein.

Das sollte es doch schon gewesen sein, oder nicht?

Auf dem Server läuft Windows 2000 Server.

Danke Dir für die Mühe.

mfg
Alforno
Member: colinardo
colinardo Aug 02, 2008 at 20:12:03 (UTC)
Goto Top
OK, führ das Script doch mal manuell in der Kommandozeile aus und schau nach ob es irgendeinen Fehler ausgibt. Überprüfe nach dem ausführen im Taskplaner ob im Task das Systemkonto eingetragen ist. Wenn das der Fall ist sollte es funktionieren.
Member: DerWoWusste
DerWoWusste Dec 21, 2008 at 14:46:20 (UTC)
Goto Top
Weitere Tipps für Interessierte:
Tasks anzulegen geht neuerdings per GPO sehr einfach, wie schon von Softmeister später erwähnt. Die dazu benötigte GPP CSE (Group Policy Preferences Client Side extension, nur für xp/2003,2008 und Vista) kann ein WSUS netzwerkweit verteilen, kann aber auch wiederrum per Startskript installiert werden. Der Gag ist nun: zur Nutzung von GPPs benötigt man keinesfalls einen Server 2008, sondern es reicht ein 2000er oder 2003er DC ebenso. Die Einstellungen regelt man von einem Vista-PC (oder 2008 Member-Server) aus, der das Adminpak bzw. RSAT installiert hat. So haben wir das vor der Umstellung auf 2008 Server DCs gemacht und das ist auch offiziell von MS so vorgesehen.
Nebenbei: schtasks kann seit Vista auch xml-Dateien mit allen Feineinstellungen importieren.
Member: pvlavh
pvlavh Dec 28, 2011 at 10:29:34 (UTC)
Goto Top
perfekt Uwe!

vielen dank....