このブログを検索

2012/05/25

リモートマシンの再起動・シャットダウンコマンド

  • wmiコマンド
WMIC /NODE:"リモートマシン名" /USER:"アカウント" /PASSWORD:"パスワード" OS WHERE Primary=1 CALL Shutdown ( or Restart )
※()内は再起動の場合 
  • DOSコマンド
shutdown /s( or /r ) /t 0 /f /m ¥¥リモートマシン名
※()内は再起動の場合
DOSコマンドでの実行する場合は、リモート先に存在するアカウントからでないと正常にコマンドを実行してくれないので、以下の方法でコマンド実行するアカウントを指定.
runas /noprofile /user:アカウント名 "実行コマンド"
※runasコマンドは実行する度に、指定したアカウントのパスワードを聞いてくる.
しかし、上記の方法を何行も書いておくと、記述したマシン分だけパスワードを入力しなければならないので面倒.なので以下の方法で対処.
  • 呼出ファイル(restart.bat)の作成
runas /noprofile /user:アカウント名 "[絶対パス]\main.bat"
  • 実行ファイル(main.bat)の作成
@echo off
shutdown /s /t 0 /f /m ¥¥リモートマシン名01
shutdown /s /t 0 /f /m ¥¥リモートマシン名02
...
  •  シャットダウン開始
C:\Users\user> restart.bat
上記方法は一括でシャットダウンだが、ターゲットを選びたい場合は、引数とforを使用してコマンドを書き換える.
  • 呼出ファイル(restart.bat)の作成
runas /noprofile /user:アカウント名 "[絶対パス]\main.bat %*"
  • 実行ファイル(main.bat)の作成
@echo off
for %%i in (%*) do ( shutdown /s /t 0 /f /m ¥¥%%i )
  • シャットダウン開始
C:\Users\user> restart.bat [リモートマシン名01] [リモートマシン名02] ....
※ ターゲットがXPの場合、以下のことに注意する
DOSコマンドが効かない場合があるのでwmiコマンド対処する.
wmiコマンドは他のプロセスが起動していると、リモート側でダイアログが表示されてしまい、命令がストップしてしまうので、以下のコマンドで前もって起動しているプロセスを落としておく必要がある.
WMIC /NODE:"マシン名" /USER:"アカウント" /PASSWORD:"パスワード" PROCESS WHERE name="target.exe" delete
wmiよりもdosの方が確実に落とせる確率が高いように思う(XPはwmiコマンドでしか落とせなかった).

0 件のコメント:

コメントを投稿