サーバーが再起動/シャットダウンされるたびに(正常な再起動か不名誉な再起動かに関係なく)powershellスクリプトを実行する必要があります。このスクリプトは、1 分間隔で 4 つのアプリケーション サービスを停止し、最後にシステムを再起動します (これはビジネス要件です。理由は聞かないでください)。
再起動またはシャットダウンが開始されるたびにサーバーが .ps1 スクリプトを呼び出すようにするにはどうすればよいですか。
私のテスト結果: 現在の日付/時刻でテキスト ファイルを生成するテスト スクリプトを作成し、イベント ログ 6006 (システムの再起動/シャットダウンが開始されるたびに作成される) のトリガーでスケジュールされたタスクに追加しようとしました。 「最高の権限で実行する」ボックスをチェックしましたが、システムの再起動後、手動で実行すると生成されますが、想定どおりにテキストファイルが生成されませんでした。
これを実装するためのより良いアプローチはありますか?
(私の最終的な期待は次のようになります-ランダムな日に、ランダムなユーザーが毎月のパッチの後に再起動を開始しました。コマンドプロンプトウィンドウが彼の前に次のようなメッセージで開きました:
Stopping service abc...
Stopped.
Waiting for 60 seconds.
Stopping service xyz...
Stopped
編集: Kory と Alroc によって提案されたように、.ps1 ファイルを gpedit に追加することで正常に呼び出すことができましたが、スクリプトはコンピューターの再起動が開始されたときにバックグラウンドでのみ実行されます。進行状況を表示するための通常のコマンド ウィンドウは開きません。10 秒間隔で 2 つのサービス (テスト目的で選択) を停止し、手動で実行した場合にのみタイマーも表示する .ps1 スクリプトを下に追加しています。シャットダウン コマンドによって呼び出されると停止します。ユーザーに進行状況を表示せずにバックグラウンドでのみサービスを実行します。これを達成するのを手伝ってください。
Write-Host "Shutdown script invoked"
stop-service W32Time -force -PassThru
for($i = 10 ; $i -gt 0 ; $i--)
{
Write-Progress -Activity "`n Waiting for" -status "`$i equals $i seconds"
sleep 1
}
stop-service wuauserv -force -PassThru