これは、オンとオフの数日間私を悩ませてきました。私は、Windows 2008R2 IIS サーバー上で実行されている、社内で作成された特注のサービスを多数持っているクライアント サイトにいます。問題は、これらのサービスのいくつかがハングアップし続け、「停止中」状態でスタックしていることです。これらのサービスを停止するには、プロセス エクスプローラーを開いてスレッドを強制終了するしかありません。「runas」の使用、ローカル管理者、またはサービス所有者としてのログオンなどについて誰かが何かを言う前に、私たちはそのすべてを経験してきました。
問題は実行可能ファイル自体にあります。別の国の開発チームがこれを検討する予定ですが、最低でも 4 ~ 5 か月かかります。
サービスが実行されていることを確認する機能を備えた定期的にサービスをチェックする Powershell スクリプトがあります。実行されていない場合は、サービスの停止と再起動を強制し、アクションを確認するために電子メールを送信します。ただし、言及されているこれらの特定のサービスでは、何もできません。タスクマネージャー、タスクキル、またはプロセスエクスプローラーでそれらを強制終了することはできません(スレッドを強制終了しない限り)、アクセスが拒否されたと表示されるだけです。プロセス エクスプローラーでアクセス許可を変更して強制終了することは可能ですが、スレッドを強制終了するよりも時間がかかります。
このサーバーには、別のフォルダーに同じ名前のexeを使用する2つのWebサイトがあるため、プロセス名を使用することはできません。私が求めているのは、私が持っているスクリプトを介して既に取得したプロセス ID のスレッドを見つけて強制終了する方法です。そのため、スクリプトの残りの部分は、上記のサービスを再起動するタスクを完了できます。現時点では、このサービスは昼夜を問わず一貫性のない状態で停止しており、サポート担当者はサーバーに RDP で接続し、プロセス エクスプローラーを開き、問題のあるプロセスを見つけてスレッドを強制終了し、サービスを再起動する必要があります。特に、powershell に自動的に実行させることができる場合、これらのすでに働きすぎている人にとっては、少し面倒です。
誰かがこれについて助けてくれることを願っています。前もって感謝します。