VBS脚本

邮差的信 提交于 2019-12-06 06:57:34

自从安装了Oracle数据库后,我电脑的运行速度满了很多。为此我想了一个办法,让我在不需要使用Oracle数据库的时候,可以轻松地关掉Oracle相关服务。

我安装的Oracle版本为Oracle11g,与Oracle有关的服务如下图所示:

这些服务包括:

1、Oracle ORCL VSS Writer Service(手动启动)

2、OracleDBConsoleorcl(自动启动)

3、OracleJobSchedulerORCL(禁用)

4、OracleMTSRecoveryService(自动启动)

5、OracleOraDb11g_home1ClrAgent(手动)

6、OracleOraDb11g_home1TNSListener(自动启动)

7、OracleServiceORCL(自动启动)

其中,需要我们用脚本关闭的服务,都是开机自启动且当前已启动的服务,一共有四个(2、4、6、7)。

我们可以使用WQL查出这四个服务,逐一关闭即可。

VBS脚本(StopServiceLikeOracle.vbs)如下:

Set ServiceSet = GetObject("winmgmts:"). _
    ExecQuery("select * from Win32_Service where name like 'Oracle%' and started = true")

For Each Service In ServiceSet
    WScript.Echo "Deal with service: " & Service.Name
    RetVal = Service.StopService()
    If RetVal = 0 Then 
        WScript.Echo "Service stopped: " & Service.Name
    ElseIf RetVal = 5 Then 
        WScript.Echo "Service already stopped: " & Service.Name
    Else 
        WScript.Echo "Return value: " & RetVal
    End if
Next

其中Service下的StopService函数返回值,可以参阅MSDN文档:

https://msdn.microsoft.com/en-us/library/aa393673%28v=vs.85%29.aspx

调用这个VBS脚本的BAT脚本如下:

call C:\Users\Tsybius\Desktop\StopServiceLikeOracle\StopServiceLikeOracle.vbs
pause

注意要使用管理员身份调用此BAT脚本,否则会在关闭服务的时候触发权限不足的错误。使用管理员身份调用BAT脚本时,里面的VBS脚本地址,要写绝对地址(或相对于System32目录的相对地址)。

使用效果如下:

执行完毕后,可以看到各服务都已停止(或在停止的过程中,此时状态列会显示为“停止”)

顺便总结一下,在写WQL查询时,可以使用Windows自带的测试工具wbemtest.exe,步骤如下:

步骤1,在开始菜单中输入wbemtest.exe,找到这个程序后打开改程序。

(限于图片大小限制,上图中省去了开始菜单中间大片的白色无内容区域)

步骤2,点击【连接】按钮,进入连接界面,再点击【连接】

步骤3,连接成功后,点击【查询】按钮,弹出查询界面,在查询界面中输入查询WQL语句,再点击【应用】按钮

步骤4,此时会弹出一个查询结果页面,显示WQL语句的查询结果

END

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!