Windows Task Scheduler führt nicht powershell.exe aus

874
Sean W.

Ich bin ein Sicherheitsingenieur mit einem Hintergrund in der Linux-Administration, der mich mit GPOs auf Evaluierungsversionen von Windows Server 2016 Preview 5 und Windows 10 Enterprise vertraut macht. Ich habe eine unmittelbare Aufgabe erstellt, um ein PowerShell-Skript auszuführen.

Wenn die Aufgabe ausgeführt werden soll, erhalte ich diese Warnung in der Ereignisanzeige:

Der Taskplanerdienst hat eine falsche Konfiguration in der Definition von NT TASK \ EMET 5.51 gefunden. Zusätzliche Daten: Fehlerwert: powershell.exe.

Alles, was ich gelesen habe, legt nahe, dass dies funktionieren sollte. Was mache ich falsch?

Hier ist die Aufgabe in XML:

<?xml version="1.0" encoding="utf-8"?> <ScheduledTasks clsid=""> <ImmediateTaskV2 clsid="" name="EMET 5.51" image="0" userContext="0" removePolicy="0" changed="2016-08-14 19:45:32" uid=""> <Properties action="C" name="EMET 5.51" runAs="BYTHEBIT\Administrator" logonType="InteractiveToken"> <Task version="1.2"> <RegistrationInfo> <Author>BYTHEBIT\Administrator</Author> <Description></Description> </RegistrationInfo> <Principals> <Principal id="Author"> <UserId>BYTHEBIT\Administrator</UserId> <LogonType>InteractiveToken</LogonType> <RunLevel>HighestPrivilege</RunLevel> </Principal> </Principals> <Settings> <IdleSettings> <Duration>PT5M</Duration> <WaitTimeout>PT1H</WaitTimeout> <StopOnIdleEnd>false</StopOnIdleEnd> <RestartOnIdle>false</RestartOnIdle> </IdleSettings> <MultipleInstancesPolicy>IgnoreNew</MultipleInstancesPolicy> <DisallowStartIfOnBatteries>false</DisallowStartIfOnBatteries> <StopIfGoingOnBatteries>false</StopIfGoingOnBatteries> <AllowHardTerminate>false</AllowHardTerminate> <StartWhenAvailable>true</StartWhenAvailable> <AllowStartOnDemand>false</AllowStartOnDemand> <Enabled>true</Enabled> <Hidden>false</Hidden> <WakeToRun>true</WakeToRun> <ExecutionTimeLimit>PT0S</ExecutionTimeLimit> <Priority>7</Priority> <DeleteExpiredTaskAfter>PT0S</DeleteExpiredTaskAfter> </Settings> <Actions Context="Author"> <Exec> <Command>powershell.exe</Command> <Arguments>-NoProfile -NoLogo -NonInteractive -ExecutionPolicy Bypass -File \\DC\Shared\Deployment\deployment.ps1</Arguments> </Exec> </Actions> <Triggers> <TimeTrigger> <StartBoundary>%LocalTimeXmlEx%</StartBoundary> <EndBoundary>%LocalTimeXmlEx%</EndBoundary> <Enabled>true</Enabled> </TimeTrigger> </Triggers> </Task> </Properties> <Filters><FilterRunOnce hidden="1" not="0" bool="AND" id=""/> </Filters> </ImmediateTaskV2> </ScheduledTasks> 
0
Richten Sie den Taskplaner explizit auf ** "C: \ Windows \ System32 \ WindowsPowerShell \ v1.0 \ powershell.exe" ** und sehen Sie, was passiert ... das wäre im `C: \ Windows \ System32 \ WindowsPowerShell \ v1.0 \ powershell.exe `Werteteil der XML-Datei und nicht nur der Wert von` powershell.exe` Lassen Sie mich wissen, ob dies Ihnen hilft. Pimp Juice IT vor 7 Jahren 0
Darüber hinaus ist möglicherweise nicht auf das `\\ uncpath` zum PowerShell-Skript von dem lokalen Konto aus zugegriffen, unter dem Sie diesen Job ausgeführt haben. Versuchen Sie, es auf einen Pfad für einen lokalen Server- / PC-Laufwerksbuchstaben zu zeigen, und stellen Sie sicher, dass das Skript dort gespeichert ist. Sie können auch als Domänenkonto mit Ausführungszugriff auf den UNC-Pfad ausgeführt werden, in dem das PS-Skript gespeichert wird, anstatt es als lokales Konto auszuführen. Pimp Juice IT vor 7 Jahren 0
Haben Sie die Möglichkeit gehabt, meine Vorschläge in den Kommentaren zu überprüfen, um zu sehen, ob diese das Problem lösen würden? Pimp Juice IT vor 7 Jahren 0
@PIMP_JUICE_IT Sorry für die sehr späte Antwort, ich habe beide probiert und sie funktionierten auch nicht. Obwohl im Ereignisprotokoll einige Male nichts angezeigt wurde (möglicherweise durch Bearbeiten eines Ereignisses, das ich als einmalig markiert habe?), Könnte ich etwas anderes falsch machen. Sean W. vor 7 Jahren 0
Stattdessen setzen Sie das Argument "-NoProfile -NoLogo -NonInteractive -ExecutionPolicy Bypass-Datei \\ DC \ Shared \ Deployment \ deploy.ps1" als Argument in Ihre Task. Löschen Sie einfach alles aus dem Argument und setzen Sie dann powershell.exe ein -NoProfile -NoLogo -NonInteractive -ExecutionPolicy Bypass -Datei "\\ DC \ Shared \ Deployment \ deploy.ps1" `` als Befehl eingeben und prüfen, ob Sie ein anderes Ergebnis erhalten, sodass alles im Befehl und in doppelten Anführungszeichen steht die PS1-Datei und kein Argument im Taskplaner. Pimp Juice IT vor 7 Jahren 0

0 Antworten auf die Frage