我有以下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
放入并用作参数?我怀疑您是否需要以管理员身份运行 PowerShell 才能发出 Web 请求。如果此问题仍然存在,这将使调试变得更加容易。Program/ScriptTask Properties-ExecutionPolicy Bypass -File C:\T\AppPoolActivation.ps1