この記事には広告を含む場合があります。
記事内で紹介する商品を購入することで、当サイトに売り上げの一部が還元されることがあります。
ども。あいしんくいっと(@ithinkitnet)です。
複数台のWindowsサーバを管理している場合、リモートで定期的にWindowsサーバを停止、再起動させたいことがあります。
というワケで今回は「Windowsをリモートシャットダウン(停止)、リブート(再起動)させる方法」について書いておきたいと思います。
Windowsをリモートで停止、再起動させる方法
停止、再起動についてはWindows標準のshutdownコマンドを使用します。
WORKGROUP環境での実行結果)
shutdownコマンド
Windowsをリモートでシャットダウン、再起動させるには以下のようなコマンドを利用します。
なお、実行ユーザーは管理者権限を持ったアカウント(Administrator)である必要があります。
shutdown /m \\<IPアドレス or ホスト名> /s /f /c "OS停止" -t 0
shutdown /m \\<IPアドレス or ホスト名> /r /f /c "OS停止" -t 0
shutdownコマンドオプションは以下の通りです。
C:\Users\Administrator>shutdown /?
使用法: shutdown [/i | /l | /s | /r | /g | /a | /p | /h | /e | /o] [/hybrid] [/f]
[/m \\コンピューター][/t xxx][/d [p|u:]xx:yy [/c "コメント"]]
引数なし ヘルプを表示します。「/?」と入力するのと同じです。
/? ヘルプを表示します。オプションを入力しないのと同じです。
/i グラフィック ユーザー インターフェイス (GUI) を表示します。
このオプションは最初に指定する必要があります。
/l ログオフします。/m または /d オプションとは併用できません。
/s コンピューターをシャットダウンします。
/r コンピューターを完全にシャットダウンして再起動します。
/g コンピューターを完全にシャットダウンして再起動します。システムの
再起動後に、登録したアプリケーションを再起動してください。
/a システムのシャットダウンを中止します。
これは、タイムアウト期間にのみ使用できます。
/p タイムアウトまたは警告なしでローカル コンピューターの電源を
切ります。
/d および /f オプションと併用できます。
/h ローカル コンピューターを休止状態にします。
/f オプションと併用できます。
/hybrid コンピューターのシャットダウンを実行し、高速スタートアップの準備をします。
/s オプションと併用してください。
/e コンピューターの予期しないシャットダウンの理由を記録します。
/o 詳細ブート オプション メニューに移動し、コンピューターを再起動します。
/r オプションと共に使用する必要があります。
/m \\コンピューター 対象となるコンピューターを指定します。
/t xxx シャットダウンまでのタイムアウト期間を xxx 秒に設定します。
有効範囲は 0 から 315360000 (10 年) までで、既定値は 30 です。
タイムアウト期間が 0 より大きい場合、/f パラメーターが
暗黙的に指定されます。
/c "コメント" 再起動またはシャットダウンの理由にコメントを付けます。
最大 512 文字まで入力できます。
/f ユーザーに警告せずに実行中のアプリケーションを強制終了します。
/t パラメーターに 0 より大きい値が指定された場合、
/f パラメーターも暗黙的に指定されます。
/d [p|u:]xx:yy 再起動またはシャットダウンの理由を指定します。
p は再起動またはシャットダウンが計画されていることを示します。
u は理由がユーザーにより定義されることを示します。
p と u のどちらも指定されていない場合は、再起動または
シャットダウンは計画されていません。
xx は主因の番号です (256 未満の正の整数)。
yy は副因の番号です (65536 未満の正の整数)。
shutdownコマンドが弾かれた場合の対処
リモートサーバに対してshutdownコマンドを打つと、たまに以下のようなアクセスエラーが発生する場合があります。
アクセスが拒否されました(5)
その場合、shutdownコマンド実行前にnet useコマンドで仮接続してやるとコマンドが通るようになります。
net use \\<ホスト> /user:<ユーザ名> <パスワード>
とはいえ、“net useすること自体が目的では無い”のでshutdownコマンド打つ前に削除しておきましょう。
net use \\<ホスト>/delete
net useコマンド打つ際にはパスワード記載が必要になるので注意して下さい
シャットダウン実行元と先でそれぞれ管理者アカウントが使える状態にしておく必要があります。どちらもAdministratorを使うのが手っ取り早いです。
シャットダウンバッチ作成
停止、再起動の度に毎回コマンド打つのも面倒なので、以下のような簡単なバッチを作成しておくと便利です。
汎用的に使い回せるよう、引数でサーバを指定出来るようにしておくと良いと思います。
@echo off
set SERVER=%1
set USRE=<アカウント名>
set PASS=<パスワード>
net use \\%SERVER% /user:%USER% %PASS%
net use \\%SERVER % /delete"
shutdown /m %SERVER % /s /f /c "OS停止" -t 0
exit 0
実行する際はリモートサーバーを引数として実行します。
これでリモートサーバーがシャットダウンされるはずです。
ファイアウォールを超える場合はTCP:445ポートを解放してください。
PowerShellでサーバーシャットダウンさせるならこちら。
Powershellでサーバーをリモートシャットダウン・再起動する方法
Windowsサーバの管理者でもない限り、サーバをリモートで停止、再起動なんてしないでしょうけど、コマンドくらいは覚えておいて損はないかと思います。
以上、あいしんくいっとでしたε-(´∀`; )
windows10のコマンドプロンプトから、WindowsXpマシンのシャットダウンを試みていますが、NetUseをしても、アクセスが拒否されました(5)がでて
通らなくて困っています。
ユーザー名、パスとも XPマシンでは管理者権限になっているのですが、、、
そもそもですが、「net use」コマンドは実行出来るのでしょうか?あと、どちらのマシンもドメイン参加した状態でDomainAdminで実行すると上手くいくと思います。