如何利用排程為遠端主機重新開機?
到iT邦幫忙

a54sports(iT邦初學者10級)發問:
想要利用排程機制,替遠端主機重新開機或為某個服務重新啟動,請問有什麼方式可以做到呢?

tombo(iT邦初學者5級):
使用Windows內建指令即可。要將遠端電腦重新開機,請使用shutdown指令,要將遠端電腦服務停止或起動,請使用sc指令。

例如將遠端電腦重新開機:

shutdown /r /m \192.168.1.254 /t 0

要注意的是,如果電腦登入帳號,與遠端電腦管理權限帳號、密碼不同時,直接執行此指令會失敗,但是有個小技巧可以解決,使用「net use \192. 168.1.254\c$ /user:administrator password」,所以可以寫個批次檔如下:

net use \192.168.1.254\c$ /user: administrator password

shutdown /r /m \192.168.1.254 /t 0

net use \192.168.1.254\c$ /delete

至於要將遠端電腦的服務停止,就使用sc指令,語法格式如下:

sc \遠端電腦IP [stop|start] ServiceName

例如:

sc \192.168.1.254 stop wuauserv

遇到遠端電腦的帳、密不同時,也可以利用上面的技巧來解決。

所以只要把這些指令寫成批次檔,再使用排程去執行就可以!

如果要用Windows Script來重新開機,可以將以下程式碼存成.vbs就可以執行:

strComputer = "要重新開機的電腦名稱或IP"

Set objWMIService = GetObject("winmgmts:" & "{impersonationLevel=impersonate,(Shutdown)}!\" & strComputer & "\root\cimv2")
Set colOperatingSystems = objWMIService.ExecQuery("Select * from Win32_OperatingSystem")
For Each objOperatingSystem in colOperatingSystems
ObjOperatingSystem.Reboot()
Next

如果要遠端電腦服務重新啟動,請將以下程式碼存成.vbs就可以執行(編按:因程式碼長度過長,請至iT邦幫忙網站檢視程式碼)。它會停止相依的服務,然後重新啟動(包括相依服務)。

熱門新聞

Advertisement