-2

サーバーが再起動/シャットダウンされるたびに(正常な再起動か不名誉な再起動かに関係なく)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
4

2 に答える 2

2

GPOを使用して、システムのシャットダウン スクリプトを構成できます。

Win32_ComputerShutdownEventウォッチャー経由でもできる場合があります。

于 2016-01-08T02:38:22.667 に答える
1

深く掘り下げた後、システムのシャットダウン中にコマンドウィンドウを表示する方法をようやく見つけました。

上記の期待を実行するための完全な手順は次のとおりです。

  1. gpedit.msc を開く
  2. [コンピューターの構成] -> [Windows の設定] -> [スクリプト (スタートアップ/シャットダウン)] -> [シャットダウン] に移動します。
  3. シャットダウンのプロパティに移動します。[ Powershell スクリプト] タブでスクリプトを追加し、[最初に Windows Powershell スクリプトを実行する] を選択します。

上記の手順により、システムがシャットダウンするたびにスクリプトを呼び出すことができます。スクリプトを表示して進行状況を表示するには:

  1. [コンピューターの構成] -> [管理用テンプレート] -> [システム] -> [スクリプト]に移動します。
  2. 右側のペインに表示されているポリシーの中で、以下のプロパティを有効にします。

    • コンピューターの起動時、シャットダウン時に最初に Windows Powershell スクリプトを実行する
    • シャットダウン スクリプトの実行を表示
于 2016-01-10T02:02:43.873 に答える