场景:
根据部门的定期维护任务要求:在每月的XX日凌晨XX点重启指定的服务器(W2K3),在该服务器上运行着一套极为重要的应用程序。手动的重启方式 为先关闭该应用程序的监视程序(当应用程序崩溃时会自动再次重启该服务),然后再关闭应用程序,在关闭应用程序之前需要输入管理密码才可以完全关闭。
这次分享的脚本就是用来完成类似于以上定期维护任务的,通过脚本可以了解到如何关闭进程和VBS模拟键盘输入。
- strComputer = "."
- strApp="'WatchDog.exe'"
- Set WshShell = CreateObject("WScript.Shell")
- Set objWMIService = GetObject ("winmgmts:\\" & strComputer & "\root\cimv2")
- Set colProcessList = objWMIService.ExecQuery("Select * from Win32_Process where Name=" & strApp)
- For Each objProcess In colProcessList
- Set list = GetObject("winmgmts:").execquery("Select * from Win32_Process where Name=" & strApp)
- if list.count > 0 then '如果strApp的进程存在
- wscript.echo "Killing " & strApp
- objProcess.Terminate() '关闭进程
- end if
- Next
- strProcessKill = "'ProcessName.exe'"
- Set objWMIService = GetObject("winmgmts:" & "{impersonationLevel=impersonate}!\\" & strComputer & "\root\cimv2")
- Set colProcess = objWMIService.ExecQuery ("Select * from Win32_Process Where Name = " & strProcessKill )
- if colProcess.Count > 0 then
- For each objProcess in colProcess
- 'wscript.echo objProcess.ProcessID '显示PID
- WshShell.AppActivate objProcess.ProcessID '应用程序置顶
- WScript.Sleep 3000 '等待3秒
- WshShell.SendKeys "^x" '关闭应用程序
- WScript.Sleep 2000 '等待2秒
- WshShell.SendKeys "88888" '输入密码
- WshShell.SendKeys "{ENTER}" '输入回车
- WshShell.SendKeys "{ENTER}"
- Next
- End If
如果想在关闭应用程序后使用VBS来关闭操作系统,在VBS的尾部增加以下代码即可。
- Wscript.Run("shutdown -s -f -t 60")
服务器重启之后,您一定特别希望确认各项服务器是否都正常运行,假如有脚本可以自动检查这些服务是正常,并发送一封电子邮件告诉你,该多好啊?周末再与大家分享。