Ich habe einige PowerShell-Skripts für Exchange 2010, die ich als geplante Aufgaben ausführen möchte.
Wenn ich PowerShell mit "Als anderer Benutzer ausführen" starte, kann ich die Skripte ausführen und sie werden korrekt ausgeführt.
Wenn ich eine Aufgabe mit demselben Benutzer plane, bleibt die Aufgabe für immer im Status "Ausführen".
Wie kann ich herausfinden, wo die Aufgabe stecken bleibt?
Als Referenz, hier ist, wie ich das Exchange-Zeug aktiviere:
. 'C:\Program Files\Microsoft\Exchange Server\V14\bin\RemoteExchange.ps1'
Connect-ExchangeServer -auto
Und hier sind die Möglichkeiten, wie ich versucht habe, das Skript über den Taskplaner auszuführen:
- Powershell-Befehl "& {. 'c: \ windows \ script.ps1'}"
- Powershell-Datei 'c: \ windows \ script.ps1'
- Powershell-Datei "c: \ windows \ script.ps1"
Alle mit dem gleichen Ergebnis. Grr ...
exchange
exchange-2010
powershell
scheduled-task
langer Hals
quelle
quelle
Register-ScheduledJob
, endete nie, nachdem ich meine PowerShell-Konsole und ISE geschlossen hatte.Antworten:
Sie müssen entweder Ihre Ausführungsrichtlinie ändern oder den
-ExecutionPolicy Bypass
als Befehlszeilenparameter angeben .quelle
Ich bin mir nicht sicher, ob Sie dies so tun, aber wenn ich PowerShell-Skripte über den Taskplaner ausführe, verwende ich die Aktion "Programm starten", wähle Powershell aus und füge dann die Argumente von dort hinzu. Das ist vielleicht das, was Sie hier tun, aber es ist irgendwie unklar. Hier ist ein Screenshot:
Laut TheCompWiz kann die Ausführungsrichtlinie ebenfalls ein Problem sein.
quelle
-command
Ich hatte das gleiche Problem. In meinem Fall bestand die Lösung darin, das Verzeichnis "Start in" anzugeben (mein Skript las den Inhalt einer Datei, die es nicht finden würde, weil ich nicht den vollständigen Pfad zur Datei angegeben hatte).
quelle
Ich hatte das gleiche Problem und der Kommentar von "user279399" zur Verwendung des Befehls taskkill war super hilfreich, musste nur geändert werden. Hier ist meine Lösung am Ende der Argumentsyntax
Dieser Befehl beendet nur die Powershell-Sitzung, die unter diesem Benutzerkonto ausgeführt wird. Es wird empfohlen, ein separates Exchange-Administratorkonto für die Ausführung geplanter Aufgaben zu haben.
quelle
Versuchen Sie, am Ende Ihres Skripts [taskkill / f / im "Powershell.exe"] hinzuzufügen. Dadurch werden alle "Powershell.exe" -Prozesse beendet. Ich weiß nicht, wie ich den aktuellen Power-Shell-Prozess beenden soll (entspricht [cmd.exe / c]). Aber es wird den Trick machen.
quelle