Manage Windows Services with PowerShell
This is just a quick post to document some PowerShell commands so I don’t forget where they are. One of them wasn’t as easy to find it as I thought it should be (Mr. Delete Service). If you want to delete a Windows Service, how do you do it with PowerShell? You can use WMI, but PowerShell also includes some more friendly methods for working with services that aren’t that hard to find.
PS> (Get-WmiObject win32_service -filter "name='Go Agent 2'").Delete()
Here I am deleting one of my Go.cd Agent Services. The only item I change from service to service in this command is the “name=”, everything else has been boilerplate so far, but there are other parameters you can set. One thing I noticed is that if the service is started you have to first stop it for the delete to complete, otherwise it is just marked for deletion.
You can get more info on PowerShell WMI here:
PS> New-Service -Name "Go Agent 2" -Description "Go Agent 2" -BinaryPathName "`"D:\Go Agents\2\cruisewrapper.exe`" -s `"D:\Go Agents\2\config\wrapper-agent.conf`""
Here I am creating the Go Agent. Notice that I am able to set additional command parameters in the binaryPathName, like the -s to set my config file above. I use the back tick (`) to escape quotes.
PS> start-service -name "Go Agent 2"
This is a simple command that just needs the service name. You only need the double quotes if your name has spaces.
PS> stop-service -name "Go Agent 2"
This is another simple one just like start.
Don’t remote into your server anymore to manage your services. Run remote PowerShell commands.
They say “Reading is Fundamental” and the delete service answer I was looking for was at the bottom of the page I learned about creating services, http://technet.microsoft.com/en-us/library/hh849830.aspx. It even lists another command to delete services:
PS> sc.exe delete "Go Agent 2"