0

私は停電があるときを知っているメインコンピュータを持っている。そのメインコンピュータは、組み込みの "shutdown/m \ computername/s"コマンドを使用して、ネットワーク経由ですべてのワークステーションにシャットダウンを指示します。 そのメインコンピュータはまた、同じshutdown /m \\computername /rメカニズムを使用して再起動するように個々のワークステーションに指示します。シャットダウン-sが実行されているときを調べる

各ワークステーションには、実行時にすべての重要なデータが保存されるスクリプトがあります。

各ワークステーションは、ネットワーク経由でシャットダウンまたは再起動するように指示されたときにスクリプトを実行する必要があります(shutdown /m \\computername /sまたはshutdown /m \\computername /r)。

Idea1:

  • シャットダウン/再起動が発生したときに調べるためにWM_QUERYENDSESSIONイベントを使用します。
  • シャットダウン/再起動をキャンセルします。
  • スクリプトを実行します。
  • 問題。:私はシャットダウンや再起動がメインコンピュータによって発行されたかどうかを決定するために合理的な方法が表示されない)をシャットダウン/再起動を続行

Idea2:

  • shutdown.exeプロセスが存在するまで待ちます。
  • は、スクリプトを実行して処理し、そのプロセスのコマンドラインパラメータ
  • キルを取得します。
  • 取得したパラメータでshutdown.exeを実行します。

問題:shutdown.exeが実際に実行されていません。ローカルでも単純なshutdown -s -t 30を実行しても、

Idea3:着信ネットワークトラフィックスニフ

  • 。シャットダウン-mパケット
  • ため
  • ルック...

問題:私が使用していると、パケットがどのようにフォーマットされているどのようなプロトコルは考えています。

Idea4:私は場合は見当がつかない、これは希望:

  • モニタのイベントログ
  • それは

問題を発行されたシャットダウンの種類についての情報を含んでいることを願っています記録される。

PS:
PsExecは使用しません。ワークステーションは独自のスクリプトを実行する必要があります。

+0

スーパーユーザーと/またはserverfaultでよく聞かれるかもしれません – Jasen

+0

私の質問はかなりプログラミングに特有です。 – Forivin

+0

これはプログラミングに関するものですが、shutdown.exeを使用するのではなく、すべてのマシンにインストールされた特定の.exeで実装された独自のシャットダウンプロトコルをプログラムするのはなぜですか? –

答えて

1

なぜWindowsシャットダウンスクリプトを設定できるのですか?

それは非常に簡単です:

gpedit.msc(ローカルポリシー)を実行し、その後に行く:Windowsの設定 - >スクリプト - >シャットダウン - >プロパティ - >を追加して、ここにあなたのスクリプトを追加します。常にシャットダウンを実行します。サーバー側からシャットダウンを呼び出す場合にのみ実行したい場合は、スクリプトを実行してからコンピュータをシャットダウンする非常にシンプルなC#(またはその他の)プログラムを作成する方が良いでしょう。これを済ませたら、サーバーから呼び出すことができます。

screenshot

WARNING:(アップ窓8とでは、デフォルトで有効)のfastbootを使用している場合、グループポリシーのスタートアップおよびシャットダウンscipts、実行されません。この場合、再起動または強制シャットダウン(コマンドプロンプトから)だけが実際にコンピュータをシャットダウンします。他のすべての場合(スタートメニューのシャットダウン)、コンピュータカーネルは休止状態になり、ブート時に復活し、GPOの起動とシャットダウンのsciptは無視されます。

さらにhere

編集:あなたは、シャットダウンスクリプトを持っているとあなたには、いくつかのプログラムを作成したくない場合は、いくつかのファイルであれば

、あなたがシャットダウンスクリプトで確認することができ、何を作成すると、存在しない場合は、バックアップおよびはいの場合は通常のシャットダウンを継続し、このファイルを削除してください。これを作成すると、別のスクリプトを作成してデスクトップやどこに置いても、ファイルを作成してshutdown.exeを実行するようプログラムするので、バックアップせずに通常のシャットダウンを実行できます。

+0

このようなシャットダウンスクリプトは、システムを再起動するときにも実行されますか? – Forivin

+0

@Forivinシャットダウン中だけではありません。 –

+0

さて、シャットダウンと再起動の両方で動作するものが必要です。 「再起動スクリプト」も作成できますか? – Forivin

0

Windowsのシャットダウンは、各ワークステーションの実行中のアプリケーション(c#.netなど)で検出できます。シャットダウンを実行する前に、スクリプトを実行してからシャットダウンを続行してください。イベントハンドラメソッドをSystemEvents.SessionEndedイベントにアタッチします。 見てくださいhere

関連する問題