Windows OSをリモートから再起動するバッチのコマンド

JavaScript

特定のWindows OSのパソコンから、他のWindowsOSを搭載しているパソコンに再起動したい場合があります。
その場合、リモートデスクトップで接続して手動で再起動をおこなう方法をとる場合が多いかと思いますが、バッチファイルひとつで実行可能にすると便利です。


今回は、リモートでWindows OSを再起動するバッチについて紹介します。


環境情報


  • クライアント(バッチを実行する方):Windows10、WindowsServer2012
  • サーバ(再起動する方):Windows10、WindowsServer2012

クライアントとサーバの両方がWindows10、クライアントとサーバの両方がWindowsServer2012、の組み合わせでは確認できています。

Windows10とWindowsServer2012や、その他WindowsOSの組み合わせは試していませんが、たぶん以下に説明するバッチで正常に動作すると思います。


shutdown.exe と WMIC


リモートからバッチファイルを使って再起動することができるコマンドは2つあります。
shutdown.exe と WMIC です。


  • shutdown.exe

Windowsに標準格納されている再起動用の実行ファイル。
リモートで再起動する場合は、再起動するOSの資格情報(ID・パスワード)は指定できない。


  • WMIC

WMI(Windows Management Instrumentation)は、Windows OSにおけるシステム管理のための共通アーキテクチャ。
再起動だけではなく、Windows OSを操作する様々なコマンドを使用することができる。
リモートで再起動する場合は、再起動するOSの資格情報(ID・パスワード)が指定できる。


リモートで再起動する場合の2つの大きな違いは、資格情報を指定できるか?できないか?です。

「shutdown.exe」の場合は資格情報を指定することができないので、バッチファイルを実行するユーザと再起動するWindows OSのユーザは一致している必要があります。
しかし、WMICをつかった方法は、バッチファイル内で資格情報を指定できるので、同じユーザでのログインは不要です。


上記の理由から、WMICを使って再起動をおこなう方が使い勝手よいかと思います。


WMICでの再起動コマンド


リモートのWindows OSを再起動するための、WMICを使ったバッチファイルは以下になります。


set SERVER_REBOOT=192.168.1.100
set USER=administrator
set PASS=password01

WMIC /NODE:%SERVER_REBOOT% /USER:%USER% /PASSWORD:%PASS% OS WHERE Primary=1 CALL Win32Shutdown 6

上記のバッチファイルを実行することで、「SERVER_REBOOT」に定義したIPのWindows OSを再起動することができます。
「USER」「PASS」には、再起動するWindows OSのIDとパスワードを設定します。


WMICのコマンドは多機能なので、詳細はMicrosoftのマニュアルを参照して頂きたいのですが、ポイントとしては「Win32Shutdown 6」の部分です。
「6」は強制再起動なのですが、このパラメータを変更することで、強制再起動以外の操作も可能です。


以下に各パラメータの値と概要、および、説明を記述します。

説明分はMicroSoftのサイト(英文のみ)の文章をGoogle翻訳で訳して記載しているだけですので、日本語が少しおかしい部分があります。


0(0x0)

ログオフ

ユーザーをコンピューターからログオフします。ログオフする

exit関数を呼び出したプロセスのセキュリティコンテキストに関連付けられているすべてのプロセスが停止し、現在のユーザーがシステムからログオフされ、ログオンダイアログボックスが表示されます。

4(0x4)

強制ログオフ

ユーザーをコンピューターからすぐにログオフし、ログオンセッションが終了することをアプリケーションに通知しません。

これにより、データが失われる可能性があります。

1(0x1)

シャッタダウン

安全に電源を切れるところまでコンピュータをシャットダウンします。 (すべてのファイルバッファーがディスクにフラッシュされ、実行中のすべてのプロセスが停止します。)ユーザーにメッセージが表示されます。コンピューターの電源をオフにしても安全です。

シャットダウン中、システムは実行中の各アプリケーションにメッセージを送信します。アプリケーションは、メッセージの処理中にクリーンアップを実行し、Trueを返して、終了できることを示します。

5(0x5)

強制シャッタダウン

安全に電源を切れるところまでコンピュータをシャットダウンします。 (すべてのファイルバッファーがディスクにフラッシュされ、実行中のすべてのプロセスが停止します。)ユーザーにメッセージが表示されます。コンピューターの電源をオフにしても安全です。

強制シャットダウンアプローチを使用すると、WMIを含むすべてのサービスがすぐにシャットダウンされます。このため、リモートコンピューターに対してスクリプトを実行している場合、戻り値を受け取ることはできません。

2(0x2)

再起動

コンピュータをシャットダウンしてから再起動します。

6(0x6)

強制再起動

コンピュータをシャットダウンしてから再起動します。

強制再起動アプローチを使用すると、WMIを含むすべてのサービスがすぐにシャットダウンされます。このため、リモートコンピューターに対してスクリプトを実行している場合、戻り値を受け取ることはできません。

8(0x8)

パワーオフ

コンピュータをシャットダウンし、電源をオフにします(問題のコンピュータでサポートされている場合)。

12(0xC)

強制パワーオフ

コンピュータをシャットダウンし、電源をオフにします(問題のコンピュータでサポートされている場合)。

強制電源オフのアプローチを使用すると、WMIを含むすべてのサービスがただちにシャットダウンされます。このため、リモートコンピューターに対してスクリプトを実行している場合、戻り値を受け取ることはできません。