
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 タスク スケジューラ内で、1 日間にわたって 15 分ごとに実行される毎日のタスクを定義します。つまり、基本的に常に 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'
AppPoolActivation.ps1
つまり、PowerShell インスタンスを起動し、それが管理者として別の PowerShell インスタンスを起動し、それがスクリプトを実行するバッチ ファイルがあるということですか?
なぜフィールドをPowerShell.exe
入力して引数として使用しないのでしょうか? Web リクエストを行うために PowerShell を管理者として実行する必要があるとは思えません。この問題が引き続き発生する場合は、デバッグがはるかに簡単になります。Program/ScriptTask Properties-ExecutionPolicy Bypass -File C:\T\AppPoolActivation.ps1