WIndows2012のUAC環境でリモートでコマンドをキックする方法を考えてみた。
UAC環境でなければ、PSTOOLsの一部であるpsexecを使えばリモート実行は簡単なのだけど、UACがONの状態だと、うまく動きません。
ですので、OS標準のタスクスケジュールを使った方法を考えてみました。
用意するスクリプトは3つ
・キックされるスクリプト(実行側PCに配置)
restartvnc.bat
1 2 3 |
taskkill /F /IM winvnc.exe ping -n 5 127.0.0.1 net start uvnc_service |
・キックされるスクリプトをタスクとして登録するスクリプト(実行側PCに配置して事前に実行)
register.bat
1 2 3 4 5 6 7 8 9 10 11 12 |
@echo off echo restartVNCのタスクを登録します。 echo %COMPUTERNAME%\administratorのパスワードを入力してください。 set /p hostpass=? schtasks /delete /tn "restartvnc" /f pause schtasks /create /tn "restartvnc" /RL HIGHEST /RU %COMPUTERNAME%\administrator /RP %hostpass% /SC once /ST 23:59 /TR "C:\tool\VNC_installer\etc\restartvnc\restartvnc.bat" pause |
・別サーバからスクリプトをキックするスクリプト(実行を依頼するPCに配置)
00run.bat
1 2 3 4 |
@echo off set /p hostname=VNC restart HOST Name? schtasks /run /s \\%hostname% /u %hostname%\administrator /tn "restartvnc" |
この方法であれば、あらかじめ実行スクリプトをタスクとして作成しておくことで、
別サーバから、処理をリモートで実行依頼をすることができます。