Zadanie w moim harmonogramie zadań systemu Windows spowoduje, że mój serwer przestanie odpowiadać


0

Mam następujący AppPoolActivation.ps1plik, aby wywołać adres URL: -

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

i napisałem następujący app.batplik, aby wywołać powyższy AppPoolActivation.ps1plik: -

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

Następnie w moim harmonogramie zadań Windows Server 2012 w systemie Windows definiuję codzienne zadanie, które będzie uruchamiane co 15 minut przez 1 dzień, więc przede wszystkim będzie zawsze uruchamiane co 15 minut i definiuję to zadanie, aby wywoływało plik .bat, ponieważ śledzić:-

wprowadź opis zdjęcia tutaj

wprowadź opis zdjęcia tutaj

teraz, kiedy po raz pierwszy zdefiniowałem zadanie, działało dobrze przez około 5 godzin, ale zauważyłem, że po 10-12 godzinach serwer będzie bardzo wolny, aż przestanie odpowiadać, teraz sprawdzam menedżera zadań na serwerze i stwierdzam, że tam jest będzie wiele wystąpień uruchomionego hosta Windows Power Shell i konsoli Windows, w następujący sposób:

wprowadź opis zdjęcia tutaj

więc czy ktoś może doradzić, jak mogę rozwiązać ten problem? Mam na myśli, dlaczego będzie wiele wystąpień Windows Power Shell i hosta Windows konsoli? i czy istnieje sposób, aby temu zapobiec i zapobiec spowolnieniu mojego serwera z powodu harmonogramu zadań? pamiętając, że przez wiele lat temu nie miałem żadnego problemu na tym serwerze ,, problem zaczął się, gdy tworzę to zadanie harmonogramu ...

Odpowiedzi:


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

Więc masz plik wsadowy, który uruchamia instancję PowerShell, która uruchamia inną instancję PowerShell jako Administrator, która wykonuje AppPoolActivation.ps1skrypt?

Dlaczego nie wystarczy umieścić PowerShell.exew Program/Scriptpolu Task Propertiesi używać -ExecutionPolicy Bypass -File C:\T\AppPoolActivation.ps1jako argumentu? Wątpię, że musisz uruchomić PowerShell jako administrator, aby wykonać żądanie sieciowe. A jeśli ten problem nadal będzie występował, ułatwi to debugowanie.


Próbowałem twojego podejścia na początku, aby wywołać .ps1 bezpośrednio z zadania, ale nigdy się nie udaje. Myślę, że problem jest związany z polityką, że nie możemy uruchamiać skryptów PowerShell ,,, teraz to, co zrobiłem, zmodyfikowałem bieżący .bat plik i usuwam z niego „-NoExit”, a teraz nie widzę powtarzających się procesów w moim menedżerze zadań, wydaje się, że -NoExit nie zakończy procesu po zakończeniu skryptu PowerShell, pomyślałem, że -NoExit zapobiegnie temu procesowi zakończyło się podczas egzekucji, ale wydaje się, że oznacza to nigdy nie kończenie procesu nawet po jego zakończeniu.
John John

1
@JohnJohn Za pomocą Menedżera zadań można również ominąć zasady wykonywania. Zobacz zaktualizowaną odpowiedź. "seems -NoExit will not end the process once the powershell script ends"- tak, zobacz Pomoc wiersza polecenia PowerShell.exe .
beatcracker
Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.