How to change the Service account and restart the Service using WMI.


Often we required the service account to be changed and this requires a restart of the service for the change to come in to effect.


 


Below is a vbscript that uses WMI to achieve this. This script has not been tested on Services that depend on other services. Will update this once those tests are complete.


 


Note: This is not recommended for Sql server service. In order to change the service account for sql server we can use sql server configuration manager 


 


Dim ChangeActStr


Dim Switch


‘You can use other parameters of SC.EXE in the below string like password etc


ChangeActStr=”sc config “”<Custom Service Name>”” obj= “”LOCALSYSTEM”””


Set shell = CreateObject(“wscript.shell”)


Shell.run ChangeActStr,true


 


Switch=2


While Switch<>1


Set objCollection = GetObject(“WinMgmts:”).ExecQuery (“Select * from Win32_Service where name='<custom service name>'”)


 


‘Exit if the Service does not exist


If objCollection.count = 0 Then


Wscript.Quit


End if


 


‘Using the for loop since you can use the same code if you modify the select query above for multiple services.


‘In our case we will have only one row returned


For Each obj in objCollection


                If UCASE(obj.State) <> “STOPPED” Then


                                obj.StopService


                                Wscript.Sleep 2000


                                Set ObjCollection = Nothing


                                Switch=2


                ElseIf UCASE(obj.State) =”STOPPED” Then


                                obj.StartService


                                Wscript.Sleep 2000


                                Switch=1


                End If


Next


Wend


 


 


Levi Justus
Technical Lead, Microsoft Sql Server


Comments (0)