
我有以下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
字段Program/Script並Task Properties用作-ExecutionPolicy Bypass -File C:\T\AppPoolActivation.ps1
參數?我懷疑您是否需要以管理員身分執行 PowerShell 才能發出 Web 請求。如果這個問題仍然存在,這將使調試變得更容易。