PowerShell-Skript wird nicht ausgeführt, wie Sie eine Windows geplante Aufgabe
Habe ich ein PowerShell-Skript (das funktioniert). Im Windows-Taskplaner erstellte ich eine neue Aufgabe auszuführen "C:\Windows\System32\WindowsPowerShell\v1.0\powershell.exe"
, übergeben Sie das argument als mein PS1-Skript. Wenn der task läuft, bekomme ich eine Letzte Ausführung Ergebnis der 0x1
.
Ich aktualisiert, mein Skript zu schreiben, um eine log-Datei, wenn das script öffnet, und dass ist nicht passiert. Es ist fast so, wie die Aufgabe kann auch nicht öffnen Powershell.exe.
Klingt das genau? Was könnte das Problem sein oder wie kann ich es umgehen?
Du musst angemeldet sein, um einen Kommentar abzugeben.
Wenn das problem ist mit der Ausführungsrichtlinie, dann können Sie auch legen Sie die Ausführungsrichtlinie für einen bestimmten Aufruf von PowerShell. Dies ist, was ich normalerweise tun, wenn das ausführen von PowerShell über eine geplante Aufgabe:
Warum?
-NoProfile -
Dadurch wird sichergestellt, dass Sie verlassen Sie sich nicht auf etwas in der Benutzer-PowerShell-Profil, und vermeidet den Aufwand der Ausführung von zusätzlichem code.
-NoLogo
Diese meist egal; vielleicht passt es, wenn Sie die Erfassung der output Ihres Skripts. Meist macht es mich besser zu fühlen.
-Nicht-interaktiven
Sorgt dafür, dass Ihre Aufgabe nicht warten, auf unbestimmte Zeit, wenn Sie etwas in Ihrem Skript unerwartet fordert den Benutzer. Mit diesem Schalter wird das Skript nur Ausfahrt statt; zumindest haben Sie ein Fehler-code anstelle von ein hängendes Skript.
-ExecutionPolicy Bypass
Können Sie
Unrestricted
hier oder welche die Ausführung der Politik, die Sie mögen. Dies ist wahrscheinlich die, die Sie am meisten brauchen.Warum ich lieber mit der Einstellung der Ausführungsrichtlinie auf diese Weise:
Weil ich nicht wollen, dass die Aufgabe abhängig von einer globalen, nicht-Standard-Einstellung, dass Sie möglicherweise andere Gründe haben, um sich in Zukunft ändern. Wenn einige andere Verfahren hängt davon ab, auf eine andere Ausführung der Politik, dann ist es nicht im Konflikt mit Ihrer Aufgabe auf diese Weise.
Plus es ist immer schön, nicht zu haben, um die Standardeinstellungen zu ändern. Weniger denken/Dokumente/test.
Bonus
Sehen JohnLBevan Antwort für einige weitere Ursachen von
0x1
führen Sie eine geplante Aufgabe.Gibt es mehrere mögliche Ursachen für ein PowerShell-Skript aufgerufen, indem der Taskplaner komplett mit code
0x1
:Run with highest privileges
flag (checkbox auf der Aufgabe der Registerkarte "allgemein") aktiviert ist.*-File ".\MyScript.ps1" -Parameter1 'Demo'
, versuchen Sie stattdessen:-Command "& .\MyScript.ps1 -Parameter1 'Demo'"
*Als Ben Punkte in die Kommentare,
Run with highest privileges
muss nicht aktiviert sein /es hängt davon ab, ob das Skript erfordert admin-Rechte (z.B. wenn einige Befehle wieSet-ExecutionPolicy
oderStop-Process
erfordern diese). Wenn Sie nicht sicher sind, versuchen Sie die option, um zu sehen, ob es behebt Ihr Problem; wenn es scheint nicht, einen Unterschied zu machen, lassen Sie es deaktiviert.Run with highest privileges
ist nur eine von mehreren Ursachen, und man sollte verstehen, was es tut, und zu bestätigen, dass es in der Tat die Ursache des Fehlers ist, vor der Ausreise geprüft. Für eine Erklärung, was genau das Kontrollkästchen unterstützt, finden Sie unter social.technet.microsoft.com/Forums/windows/en-US/... .Habe ich auch schon gemacht und hatte ähnliche Probleme. Es ist fast immer die PowerShell-Sicherheitseinstellungen. Die meisten offensichtlich, ich würde überprüfen Sie Ihre Ausführungsrichtlinie (unter der Annahme, dass Sie es eingestellt habe).
Dem Benutzer die Aufgabe ausführen, wie? Hat, dass der Benutzer führen Sie ein PowerShell-Skript vor? Wenn ich mich Recht erinnere, wird jeder Benutzer aufgefordert, die "erlauben" - PowerShell-Skripts ausgeführt werden (Y/N), wenn ein Skript ausgeführt, für das erste mal (unabhängig von der execution policy). Hat gebissen Sie mich, bevor. Versuchen:
Nach dem ersten Lauf, Sie sollten nicht zu befürchten, dass wieder, und es laufen soll von der task-scheduler in Ordnung.
Abhängig von Ihrem domain-Sicherheit, müssen Sie möglicherweise auch, um die Gruppe execution policy. Hier ist ein Artikel details, wie das zu tun, sowie ein paar andere Dinge zu überprüfen: PowerShell-Sicherheit.
Den vorherigen Antworten sind von großem Wert. Ich fügte hinzu, die unter Wert in der Argumente Hinzufügen Feld.
Stellen Sie sicher, dass Sie das kaufmännische und-Zeichen und setzen Sie den Pfad in die geschweiften Klammern. Vergessen Sie nicht, doppelte Anführungszeichen kaufmännisches und-Zeichen vor und nach der schließenden geschweiften Klammer.
Wenn Sie haben noch keine Fehlermeldungen und weiß nicht, was das problem ist - warum PowerShell-Skripts nicht wollen, zu starten von einer Geplanten Aufgabe, führen Sie die folgenden Schritte aus, um die Antwort zu bekommen:
Sollten Sie in der Lage, um zu sehen, alle Fehler-Meldungen.
Im Falle einer mein script war es:
Und ich habe in diesem Fall das hinzufügen einer zusätzlichen Zeile in der
Anfang des Skripts zu laden, die fehlende Montage:
Und der nächste Fehler: