Eine Aufgabe in meinem Windows-Taskplaner führt dazu, dass mein Server nicht mehr reagiert

983
John John

Ich habe die folgende AppPoolActivation.ps1Datei, um eine URL aufzurufen: -

[System.Net.ServicePointManager]::ServerCertificateValidationCallback = {$true} $request = [System.Net.WebRequest]::Create("https://IPADDRESS***/") $response = $request.GetResponse() $response.Close() 

und ich schrieb die folgende app.batDatei, um die oben genannte AppPoolActivation.ps1Datei aufzurufen :

"%SYSTEMROOT%\system32\windowspowershell\v1.0\powershell.exe" -Command Start-Process "$PSHOME\powershell.exe" -Verb RunAs -ArgumentList "'-NoExit %~dp0\AppPoolActivation.ps1' 

In meinem Windows Server 2012 Windows-Aufgabenplaner definiere ich eine tägliche Aufgabe, die alle 15 Minuten für eine Dauer von 1 Tag ausgeführt wird. Daher wird sie hauptsächlich alle 15 Minuten ausgeführt. Ich definiere diese Aufgabe, um die .bat-Datei aufzurufen Folgen:-

enter image description here

enter image description here

Jetzt, als ich die Aufgabe zum ersten Mal definierte, funktionierte sie ungefähr 5 Stunden, aber ich habe festgestellt, dass der Server nach 10-12 Stunden sehr langsam sein wird, bis er nicht mehr reagiert. Jetzt überprüfe ich den Task-Manager auf dem Server und finde das dort Es werden viele Instanzen von Windows Power Shell und Console Windows Host ausgeführt, wie folgt: -

enter image description here

Kann mir jemand raten, wie ich dieses Problem überwinden kann? Ich meine, warum gibt es viele Instanzen von Windows Power Shell & Console Windows Host? Gibt es eine Möglichkeit, dies zu verhindern und zu verhindern, dass mein Server aufgrund des Taskzeitplans sehr langsam wird? Bedenken Sie, dass ich auf diesem Server vor vielen Jahren noch nie Probleme hatte. Das Problem begann mit der Erstellung dieser Zeitplanaufgabe ...

0

1 Antwort auf die Frage

1
beatcracker
"%SYSTEMROOT%\system32\windowspowershell\v1.0\powershell.exe" -Command Start-Process "$PSHOME\powershell.exe" -Verb RunAs -ArgumentList "'-NoExit %~dp0\AppPoolActivation.ps1' 

So you have a batch file, which starts powershell instance, which starts another powershell instance as Administrator, which executes AppPoolActivation.ps1 script?

Why wouldn't you just put PowerShell.exe in Program/Script field in Task Properties and use -ExecutionPolicy Bypass -File C:\T\AppPoolActivation.ps1 as argument? I doubt that you need to run PowerShell as admin to make web request. And if this issue would still persist, this will make debugging it way easier.

Ich habe Ihren Ansatz am Anfang versucht, die .ps1 direkt von der Task aus aufzurufen, aber es gelingt nie. Ich denke, das Problem hängt mit der Richtlinie zusammen, dass wir keine PowerShell-Skripts ausführen können. Nun habe ich die aktuelle .bat geändert Datei und ich entferne das "-NoExit" daraus, und jetzt sehe ich keine wiederholten Prozesse in meinem Task-Manager. Scheinbar -NoExit beendet den Prozess nicht, sobald das Powershell-Skript beendet ist. Ich dachte, -NoExit würde den Prozess daran hindern endete während der Ausführung, aber es scheint so zu sein, dass der Prozess niemals beendet wird, auch nachdem er abgeschlossen ist. John John vor 8 Jahren 0
@JohnJohn Sie können die Ausführungsrichtlinie auch mit dem Task-Manager umgehen. Siehe aktualisierte Antwort. `" -NoExit scheint den Vorgang nicht zu beenden, sobald das Powershell-Skript beendet ist "` - yep, siehe [PowerShell.exe-Befehlszeilenhilfe] (https://technet.microsoft.com/de-de/library/hh847736.aspx) ). beatcracker vor 8 Jahren 1