Warum machen die wöchentlichen Aufgaben erstellt via PowerShell mit einer anderen Benutzer-Fehler 0x41306
Wir haben einige scripts, erstellen von geplanten Aufträgen mit PowerShell als Teil unserer Anwendung. Beim testen Sie vor kurzem, habe ich gemerkt, dass einige von Ihnen immer versagt sofort, und keine Ausgabe, die jemals produziert wurden (von der Sie nicht einmal angezeigt in der Get-Job
Liste).
Nach vielen Tagen optimieren, haben wir es geschafft Sie zu isolieren um irgendwelche jobs, die ausgeführt werden wöchentlich. Unten ist ein script, das erstellt zwei jobs, die genau das tun die gleiche Sache. Wenn wir dies auf unsere domain, und geben Sie die Anmeldeinformationen eines Domänen-Benutzer, dann zwingen beide jobs laufen in der Task Scheduler GUI (Rechtsklick -> Ausführen), die täglich eine läuft gut (0x0 Ergebnis) und der wöchentliche Ausfall (0x41306).
Hinweis: Wenn ich nicht den-Credential-Parameter, die beiden Arbeitsplätze funktionieren. Die jobs, nur nicht wenn die Aufgabe sowohl wöchentliche, und ausgeführt, wie dieser domain-user.
Ich kann nicht finden, Informationen über warum dies geschieht, noch aus irgendeinem Grund denken, es würde sich anders Verhalten, für wöchentliche Aufträge. Die "Geschichte£ tab in der Task Scheduler hat fast keine nützlichen Informationen, einfach nur "Task beenden aufgrund von Benutzer-Anforderung" und "Task beendet", beide haben keine nützliche info:
Task Scheduler beendet "{eabba479-f8fc-4f0e-bf5e-053dfbfe9f62}"
Instanz von "\Microsoft\Windows\PowerShell\ScheduledJobs\Test1"
Aufgabe. Task Scheduler-Instanz gestoppt
"{eabba479-f8fc-4f0e-bf5e-053dfbfe9f62}" der Aufgabe
"\Microsoft\Windows\PowerShell\ScheduledJobs\Test1" als Anfrage per
user "MyDomain\SomeUser" .
Was ist mit dieser? Warum muss wöchentliche Aufgaben, die unterschiedlich ausgeführt werden, und wie kann ich die diganose dieses Problem?
Dies ist PowerShell v3 auf Windows Server 2008 R2. Ich habe nicht in der Lage zu reproduzieren dieses lokal, aber ich habe keinen Benutzer eingerichtet, in der gleichen Weise wie der in unserem Produktionsbereich (ich bin daran zu arbeiten, aber ich wollte diesen post so schnell wie möglich in der Hoffnung, jemand weiß, was passiert!).
Import-Module PSScheduledJob
$Action =
{
"Executing job!"
}
$cred = Get-Credential "MyDomain\SomeUser"
# Remove previous versions (to allow re-running this script)
Get-ScheduledJob Test1 | Unregister-ScheduledJob
Get-ScheduledJob Test2 | Unregister-ScheduledJob
# Create two identical jobs, with different triggers
Register-ScheduledJob "Test1" -ScriptBlock $Action -Credential $cred -Trigger (New-JobTrigger -Weekly -At 1:25am -DaysOfWeek Sunday)
Register-ScheduledJob "Test2" -ScriptBlock $Action -Credential $cred -Trigger (New-JobTrigger -Daily -At 1:25am)
Edit: Hinzugefügt, zu Verbinden, wie vorgeschlagen, durch snover:
Edit: Einige zusätzliche Informationen von Jeff Hicks
Ich verwendet Ihren code zu erstellen, die für die gleiche Arbeit auf meinem 2008 R2 Rechner mit PS
v3. Beide jobs lief fein von der PowerShell mit Start-Job". Aber in der
GUI, ich habe den gleichen Fehler für die wöchentliche job.Bekomme ich das gleiche Ergebnis unter Windows 8. Etwas sagen, die Aufgabe
service abgebrochen wird. Getestet habe ich einige andere Einstellungen, aber Sie hatten keine Wirkung.
Ich schaute durch alle logs, die ich denken konnte und alles, was Sie zeigen, ist
den job starten, die PowerShell laden und dann den task-scheduler
Abbrechen.Ich zurücksetzen die wöchentliche Aufgabe ausführen, heute ein bisschen her ist und es immer noch
fehlgeschlagen. Ich auch getestet, eine wöchentliche Aufgabe zu tun etwas anderes als
PowerShell und es lief alles wunderbar.Ich habe die wöchentliche Aufgabe auf dasselbe Konto wie für den aktuellen Benutzer
und es lief alles wunderbar. Haben es wieder auf das andere Konto, und es
wieder einmal versagt. Ich habe keine Ahnung über die Korrelation zwischen trigger
und Konto.
- 0x41306 bedeutet, dass die Aufgabe wurde beendet durch den Benutzer. Ref: msdn.microsoft.com/en-us/library/windows/desktop/... Was passiert, wenn Sie schalten Sie die Zeitpläne Umgekehrt?
- Würde ich blickte auf den code, aber es macht keinen Sinn. Es ist nicht termianted durch die Benutzer 🙁 Nicht sicher, was Sie bedeuten, durch Umschalten der Zeitplan? Das test-Skript erstellt zwei Aufgaben, sind die gleichen, die täglich eine funktioniert immer; die wöchentliche one schlägt immer fehl.
- Ändern Test2 Wochenplan. Scheitert es? Was passiert, nachdem Sie ändern Ihren Zeitplan wieder täglich ein?
- Ja, es schlägt fehl, wenn wir es ändern, um wöchentlich (auch über die GUI). Der Zeitplan ist der einzige Unterschied (neben Namen, aber diese nicht einen Unterschied machen), so ist dies ein bisschen erwartet 🙁
- Wechseln Sie die Reihenfolge der beiden letzten Zeilen in Ihrem Skript. Macht die gleiche Arbeit immer noch nicht, oder ist es der andere jetzt? Wenn es die andere, würde ich vermuten, es gibt einige Objekt - vermutlich der Anmeldedaten - das ist nur gültig für einmaligen Gebrauch oder so etwas.
- Importieren Sie die PSScheduledJob Modul, dann finden Sie die id der geplante Auftrag mit Get-Job und dump der job-Ausgabe mit
Receive-Job -Id <id>
- nur ist Fall ist es etwas mit dem script selbst. - es ist keine Ausgabe, es läuft nicht. Die PS ausgeführt wird, ist in meinem code-Beispiel, es ist in beiden Fällen gleich und nur ein string 🙁
- Dachte ich auch, aber es spielt keine Rolle. In der realen Skript erstellen wir rund 10 Arbeitsplätze und die wöchentlichen Werte (2. und 8.) ist fehlgeschlagen 🙁
- vielleicht nehmen Sie powershell aus der Gleichung zu sehen, wenn Ihr ein Teil der Gleichung , oder die OS. erstellen von geplanten tasks manuell mit dem gleichen Trigger-Möglichkeiten. Sie tun etwas gutartiger als die Ausgabe von ipconfig in eine Datei, und dann lösen Sie Sie manuell.
- wir haben dies getan (und Jeff Hicks Tat es auch). Nur passiert es ist ein PS-Aufgabe, und an die Wöchentliche und ausführen als anderer Benutzer. Macht keinen Sinn 🙁
- Hast du jemals eine Lösung finden? Ich habe das gleiche problem und passiert NUR, wenn du es auf anderen Benutzers ausgeführt, kann nicht scheinen, um herauszufinden, was es verursacht wird. Bekomme den gleichen Fehler zu", wie vom Benutzer angefordert ... wie kommt es, dass ein Benutzer zu beenden ... "
- leider nicht. Vor kurzem wurde ich gebeten, für einen link von Lee Holmes hier twitter.com/Lee_Holmes/status/535870040508096513, aber keine brauchbare Antwort.
- Ugh, und das ist auf Server 2012 🙁 Art der Niederlagen der ganze Zweck der Verwendung unterschiedlicher Anmeldeinformationen, wenn wir können ' T sogar festlegen, es an einen anderen Benutzer
- OKAY, so habe ich herausgefunden, das problem, und es ist 100% mit Berechtigungen. Hinsichtlich der geplanten Arbeit, solange Sie das Skript ausführen als Administrator (oder exe-Datei, wenn zusammengestellt) es sollte nicht entfernt werden. Ich bin mit Powershell Studio zum kompilieren zu exe, so dass ich nur eingebaut, ein manifest erfordern erhöhten privs diese zu lösen .... ABER nicht beheben, die Tatsache, dass man nicht DEAKTIVIEREN/AKTIVIEREN der jobs, auch wenn Sie admin perms ... also nochmal ich gehe eine Straße zu blockieren, nur um weiteres ... UGH!
- dies würde nicht erklären, warum die wöchentliche Zeitpläne scheitern, aber alle anderen Zeitplan?
- Stimmt, und das einzige, was ich denken kann ist vielleicht irgendwie das Benutzer-Konto "im Cache" in gewissem Sinne und damit die wöchentliche ausfällt. Ich werde testen mine und sehen, was passiert, nach ein oder zwei Wochen laufen und werde berichten.
- Ich werde aber sagen, ich hatte dieses exakte gleiche Fehlermeldung bei der Anmeldung der Arbeit mit Anmeldeinformationen (verschiedene domain-admin), aber NICHT das Skript ausführen/exe-Datei als Administrator, und einmal lief ich als Admin es nicht mehr wird sofort entfernt ", wie vom Benutzer angefordert"
- das Problem ist absolut reproduzierbar bei mir, ohne irgendwelche änderungen an Berechtigungen, ändern des Zeitplans zuverlässige Ursache/das Problem behebt. Ich weiß nicht, wie es sein kann, Berechtigungen zu tun hat 🙁
- Hallo, Jungs, ich vor kurzem haben diese Fehler auch auf windows server 2008 R2 Standard. Und dies geschieht, wenn ich die laufende Zeit(als client erforderlich ist), eine tägliche Aufgabe, die dauert nur 30sek, mit dem administrator. Später habe ich gearbeitet, um dieses durch die Trennung meine Befehle. Aber bekomme immer noch diese Fehlermeldung nach dem ersten cmd(das ist, warum die übrigen Befehle können nicht ausgeführt werden soll, bevor). Glück ist, dass die cmd ausführt, korrekt, aber die Dosis nicht ordnungsgemäß beendet, bis Treffer, die setted zeitliche Begrenzung und Holen Sie sich die 0x41306 Fehler. Eine Idee für diesen Fall?
- Sieht aus wie Ihre Verbindung Fall gelöscht wurde. Der link ist kaputt, mindestens.
- Ja, ich habe bemerkt, dass auch. Ich bin nicht überrascht; es war nicht überhaupt verwendet! Mir wurde gesagt, das MVPs gegeben hatte und die PoSh-team hat nicht direkt etwas... scheint etwas brach irgendwo :/
Du musst angemeldet sein, um einen Kommentar abzugeben.
Ich hatte ein ähnliches problem beim erstellen geplante Aufgabe, aber ich erinnere mich nicht, wenn es basierte auf dem Tagesplan. Ich fand die Umstellung auf gMSA-Konto zum ausführen der geplanten task? Die es uns erlaubt, um die Aufgabe ausführen, ob der Benutzer angemeldet war, oder nicht. Andernfalls müssen Sie Benutzername und Passwort eingeben und kann nicht die option, dass ein Benutzer angemeldet ist oder nicht.
Der Standard-job-Optionen möglicherweise eine Ahnung. Es gibt viele default-Werte, können verhindern, dass ein Auftrag nicht ausgeführt wird. Einige dieser möglicherweise spezifisch für Ihre Umgebung. Mehr info hier: http://technet.microsoft.com/en-us/library/hh849674.aspx
Wenn dies nicht es, lassen Sie es mich bitte wissen. Ich möchten, Folgen Sie diesem Thema und Holen Sie sich dieses Szenario in die Anleitung zur Fehlerbehebung.
Dank,
Juni Mixer (juneb)
Senior-Programmierung Writer, Microsoft
fand ich endlich die Lösung für dieses Verhalten. Ich soll eine Aufgabe ausgeführt werden jeden Sonntag zum ausführen eines powershell-Skript. Das Skript auf seinem eigenen, lief gut. Dann habe ich versucht, manuell zu starten, die im task-scheduler. Diese endete im Fehler 41306. Nach der Lektüre Ihrer Kommentare hier habe ich den Zeitplan geändert, nicht zum ersten Lauf am nächsten Sonntag, aber zum start am letzten Sonntag (also dem start-Datum liegt in der Vergangenheit). Danach konnte ich sofort starten, ohne jedes problem.
So geplante Aufträge laufen in den task-scheduler, aber es ist nicht eine wirklich enge integration. wenn Sie sich registrieren, ein job, ein job-definition wird erstellt, und hoffentlich ein geplanter windows-task-Optionen. es gibt KEINE geplante jobinstanz-Auftrag erstellt, bis windows geplante Aufgabe 1) erfolgreich ausgelöst, die geplante Aufgabe, und 2 Ihrer weit genug laufen erfolgreich, dass Ihr die Instanz erstellt.
Ich hätte es vorgezogen, dass, wenn in einem Fall der geplante job schlug fehl, PowerShell, würde zumindest die Abfrage der geplanten task-engine und finden Sie heraus, dass eine Instanz gestartet und gescheitert, und bekommt die Fehlermeldung, oder ähnliches.
Also im Grunde, wenn Sie es registriert registrieren Sie es mit einem trigger, die kann oder kann nicht passieren, und verschiedene Dinge, die auftreten können, wo es ausfällt, bevor die PS bekommt sogar laufen..
Zum Beispiel können sagen, Sie bestimmten es für die Ausführung unter bestimmter creds und es ist etwas falsch mit den Anmeldeinformationen, oder vielleicht die Berechtigungen ändern, NACHDEM Sie sich registriert haben.. auch Wenn der trigger geschieht, wird windows nicht in der Lage sein zu beginnen, die geplante Aufgabe, und damit der geplante job-code wird Ihnen nicht sagen, PS nichts.
Einen interessanten Fall mir passiert, wenn ich dabei war einige demos. Bei der Prüfung , auf meinem laptop würde es registrieren, und trigger 4 Sekunden später, dann könnte ich sehen, der job-Instanz, dann wäre es fertig und ich konnte die Ergebnisse.
allerdings wäre es IMMER fehl, wenn ich die demo es. Und es war, weil durch die Standard-Optionen für geplante Aufgaben nicht ausgeführt werden, wenn auf Batterie läuft, statt angeschlossen wird und wenn dabei meine demos würd ich packe meinen laptop und gehen den Menschen zeigen, und ich war nicht eingesteckt.
seine traurig, weil von der PS Seite , es sieht aus wie nichts ist passiert, Wann, wie weit Sie den geplanten task engine betrifft, gibt es eine Geschichte, die es versucht und ist fehlgeschlagen, da der spezifische error-codes und Nachrichten.
wenn Sie wollen in der Lage sein, einen job mit dem status fehlgeschlagen, und die Vernunft in der nächsten version , Stimmen meine Fehler auf verbinden
https://connect.microsoft.com/PowerShell/feedback/details/737587/psv3-scheduledjobs-if-a-trigger-fails-there-is-no-failed-instance-example-uses-multiple-triggers-to-do-this
In meinem Fall, wenn ich schaute auf die Geschichte von der Aufgabe, fand ich, dass, wenn der task wurde erstellt, es wurde mit notepad.exe der Versuch der Durchführung (da notepad.exe festgelegt wurde als Standard für das öffnen
.ps1
Dateien; denn es war eine schnelle Möglichkeit, die Skripts zu Bearbeiten). Dies war offensichtlich ein problem verursacht, obwohl.Um es zu beheben, ich mit der rechten Maustaste geklickt haben, eine meiner
PS1
- Skripte und wählen Sieopen with
, und wählen Sie die Voreinstellung von%SystemRoot%\system32\WindowsPowerShell\v1.0\powershell.exe
(Pfad kann variieren für jede person, die dies Lesen, so würde ich empfehlen, nur ziehen Sie die Eigenschaften der PowerShell-Verknüpfung, um Ihre spezifischen Pfad).Dann habe ich versucht, die Ausführung der Aufgabe wieder - der Erfolg!