SysinternalsのPsShutdownで、リモートサーバをシャットダウンするテストをしてみた。
以前にもやったことがあるが、今回はテキストファイルにリモートサーバの名前を複数書いて、一括でリモートシャットダウンを実行してみる。
これはリモートホストをシャットダウンさせるために、ローカルホスト上で実行したコマンドの例。
(写真1)PsShutdownの実行例

PsShutdown -u administrator -p パスワード -t 180 -m "あと3分で自動シャットダウンします。実行中のプログラムは全て終了します。" @ComputerList.txt
シャットダウン対象のリモートホストはComputerList.txtに書いてあります。
単純に1行に、\\記号無しで相手ホスト名を1台分だけ書いて改行するだけです。
3台書けば、1台ずつ順番に実行されます。
決して3台に一斉同報するわけではありません。残念。
以下はシャットダウン対象のリモートホストの画面
(写真2)PsShutdownを受けてメッセージがタスクバーに表示される

タスクバーに「対話型サービス ダイアログの検出」が表示される。
(写真3)タスクバーの「対話型サービス ダイアログの検出」を表示

タスクバーの「対話型サービス ダイアログの検出」をクリックすると、画面上にダイアログボックスがポップアップする。
(写真4)「プログラムの詳細を表示する」を表示させる

ダイアログボックスの「プログラムの詳細を表示する」を押すと、起動されるexeの情報が表示される。
(写真5)シャットダウンのカウントダウンと指定したメッセージが表示されている

上記写真4で「メッセージを表示する」をクリックすると、OS標準のshutdownと同様の画面で、シャットダウンまでの残り時間と、写真1で指定したメッセージが表示されている。
(写真6)タスクマネージャに表示されるシャットダウンを実行するプロセス

上記写真5で「今すぐ戻る」を押すと通常のデスクトップ画面に戻る。
試しにタスクマネージャでプロセスタブを表示させると、写真4で表示されていたプロセス「PSSDNSVC.EXE」が実行されていることがわかる。
このプロセスを右クリックで終了させると、シャットダウンも中止する。
監視用サーバからクライアントPCを一括でリモートシャットダウンすることを想定しながらこのテストをしてみた。
しかし結局このプロセスを終了させれば、シャットダウンは阻止できてしまう。
まあサーバ側からこのコマンドをしつこく何度も発行すれば、いつかはシャットダウンできるかな。
テスト環境
・リモートに対してシャットダウンを発行するローカルホスト:Windows Server 2008 R2 x64
・シャットダウンを実行させられるリモートホスト:Windows Server 2008 SP2 32bit
・Hyper-Vホスト:Core i 7、メモリ8GB
・仮想マシン:仮想1CPU、メモリ1GB
今回はHyper-Vホストからゲストをネットワーク経由でシャットダウンさせています。
この環境でPsShutdownを発行して、リモートにメッセージが出てこちらのコマンド画面上のプロンプトが返ってくるまで約20秒。
思ったよりも時間がかかった。
数千台のクライアントPCを一斉にシャットダウンだと、同時に並列処理しないと間に合わない。
PsExecやPsShutdownなど、PsToolsの説明はこちら。
http://technet.microsoft.com/ja-jp/magazine/2007.03.desktopfiles.aspx
・TechNet Magazine > デスクトップ ファイル: PsTools 入門
- 関連記事
-