2012年11月23日金曜日

[Script][VBS]Windowsサービスの処理を行う(Win32_Service)

Windowsのサービスを停止したり、起動したり、スタートアップの設定を変更したりします。
時刻同期のサービス(W32Time)を使ってやっています。

W32Time起動 strComputer = "."
Service_Name = "W32Time"

Set wbemServices = GetObject("winmgmts:\\" & strComputer)
Set ServiceSet = wbemServices.ExecQuery _
        ("Select * from Win32_Service where Name = """ & Service_Name & """")

for each Service in ServiceSet
    'サービスのスタートアップを自動に設定
    RetVal = Service.ChangeStartMode("Automatic")
    'サービスを開始
    RetVal = Service.StartService()

    'サービスが既に開始されていたか判断
    if RetVal = 10 then
        'サービスを停止
        RetVal = Service.StopService()

        Wait_Stopping_Service

        WScript.Sleep 1000

        'サービスを開始
        RetVal = Service.StartService()
    end if
next

Sub Wait_Stopping_Service
    Do While 1
        Set ServiceSet = wbemServices.ExecQuery _
                ("Select * from Win32_Service where Name = """ & Service_Name & """")
        for each Service in ServiceSet
            If Service.State = "Stopped" Then Exit Do
        next
        WScript.Sleep 100
    Loop
End Sub

W32Time状態取得 Service_Name = "W32Time"

Set wbemServices = GetObject("winmgmts:\\." & strComputer)
Set ServiceSet = wbemServices.ExecQuery _
        ("Select * from Win32_Service where Name = """ & Service_Name & """")

for each Service in ServiceSet
    strMsg = "状態:" & vbTab & Service.state
    strMsg = strMsg & vbCrLf & "起動:" & vbTab & Service.StartMode
next

Set WshShell = WScript.CreateObject("WScript.Shell")

NtpServer = WshShell.RegRead("HKLM\SYSTEM\CurrentControlSet\Services\" & _
            Service_Name & "\Parameters\ntpserver")

If Trim(NtpServer) = "" Then NepServer = "未設定"
strMsg = strMsg & vbCrLf & "時刻同期サーバ:" & vbCrLf & vbTab & NtpServer


MsgBox strMsg, vbOkOnly, Service_Name

W32Time停止 'W32Time = Trend Server Protect
strComputer = "."

Set wbemServices = GetObject("winmgmts:\\" & strComputer)
Set ServiceSet = wbemServices.ExecQuery("Select * from Win32_Service where Name = ""W32Time""")

for each Service in ServiceSet
    RetVal = Service.StopService()
    RetVal = Service.ChangeStartMode("Manual")
next


Script のページに戻る

0 件のコメント:

コメントを投稿