Задача внутри моего планировщика задач Windows заставит мой сервер перестать отвечать

У меня есть следующее AppPoolActivation.ps1 файл, чтобы вызвать URL:-

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

и я написал следующее app.bat файл для вызова выше AppPoolActivation.ps1 файл:-

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

Затем в моем планировщике задач Windows Server 2012 Windows я определяю ежедневную задачу, которая запускается каждые 15 минут в течение 1 дня, поэтому в основном она будет выполняться каждые 15 минут, и я определяю эту задачу для вызова файла.bat, как следовать:-

теперь, когда я впервые определяю задачу, она работала хорошо около 5 часов, но я заметил, что через 10-12 часов сервер будет работать очень медленно, пока не перестанет отвечать, теперь я проверяю диспетчер задач на сервере и обнаруживаю, что там Будет много случаев, когда Windows Power Shell и консольный хост Windows работают следующим образом:

так может кто-нибудь посоветовать, как мне преодолеть эту проблему? Я имею в виду, почему будет много экземпляров Windows Power Shell и консоли Windows, работающей? и есть ли способ предотвратить это и предотвратить слишком медленную работу моего сервера из-за расписания задач? если учесть, что много лет назад на этом сервере я никогда не сталкивался с какими-либо проблемами, проблема началась, когда я создал эту задачу расписания...

1 ответ

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

Итак, у вас есть пакетный файл, который запускает экземпляр powershell, который запускает другой экземпляр powershell от имени администратора, который выполняет AppPoolActivation.ps1 скрипт?

Почему бы тебе просто не поставить PowerShell.exe в поле Программа / Сценарий в Свойствах задачи и используйте -ExecutionPolicy Bypass -File C:\T\AppPoolActivation.ps1 как аргумент? Я сомневаюсь, что вам нужно запустить PowerShell от имени администратора, чтобы сделать веб-запрос. И если эта проблема все еще будет сохраняться, это облегчит ее отладку.

Другие вопросы по тегам