2014-10-08 2 views
1

Мне нужен менее эффективный способ перезагрузки моего компьютера через VBS. Код ниже - пример того, что у меня есть до сих пор. Есть ли более эффективный способ перезапуска другого метода SendKeys?Перезапуск компьютера через VBS

Option Explicit 
Dim obj 
set obj= creatobject("wscript.shell")  
    obj.run "CMD" 
    wscript.sleep 300 
    obj.SendKeys "shutdown /r" 
    obj.SendKeys "{ENTER}" 
    obj.SendKeys "exit" 
    obj.SendKeys "{ENTER}" 
    wscript.quit 

Благодаря

+5

Почему «SendKeys»? Просто запустите исполняемый файл. 'CreateObject (« WScript.Shell »). Запустите« shutdown.exe/r »' – Bond

ответ

2

Вы можете использовать winmgmts, этот скрипт принимает аргумент для имени компьютера, но могут быть легко изменены для использования

If Wscript.Arguments.Count = 0 Then 
    strComputer = inputbox("Enter a computer name to Restart","Enter computer name") 
    if strComputer = "" then wscript.quit 
Else 
    strCOmputer = Wscript.Arguments.Item(0) 

End If 

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 
0

он будет работать

Set OpSysSet = GetObject("winmgmts:{authenticationlevel=Pkt," _ 
    & "(Shutdown)}").ExecQuery("select * from Win32_OperatingSystem where "_ 
    & "Primary=true") 
for each OpSys in OpSysSet 
    retVal = OpSys.Reboot() 
next 
Смежные вопросы