Disable and Stop Using Native Command ‘Set-Service’
# To disable service as well as stopping it, assuming that the service does not have dependencies
$serviceName='windows_exporter'
$computernames=@('SERVER02','SERVER03')
$setStatus='stopped'
$setStartup='disabled'
Set-Service -Name $serviceName -Status $setStatus -StartupType $setStartup -computername $computernames
# Possible error: this means the service cannot be disabled without disabling its upstream parent services
Set-Service : Cannot stop service 'windows_exporter (windows_exporter)' because it is dependent on other services.
At line:1 char:1
+ Set-Service -Name $serviceName -Status stopped -StartupType disabled ...
+ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+ CategoryInfo : InvalidOperation: (System.ServiceProcess.ServiceController:ServiceController) [Set-Service], ServiceCommandException
+ FullyQualifiedErrorId : ServiceIsDependentOnNoForce,Microsoft.PowerShell.Commands.SetServiceCommand
Using SC
$computernames=@('SERVER01','SERVER02')
$serviceName='windows_exporter'
$action='start' # or stop
function setService{
param(
$computernames=$env:computername,
$serviceName='RemoteRegistry',
$action='start' # or stop
)
$computernames|%{Start-Process "$env:WINDIR\system32\sc.exe" \\$_,start,$serviceName -NoNewWindow -Wait}
}
setService $computerNames $serviceName $action
# To simply stop or start a service using the legacy tool SC.EXE on a list of servers
$computerNames=$env:computername
$serviceName='windows_exporter'
$action='start' # or stop
$computernames|%{Start-Process "$env:WINDIR\system32\sc.exe" \\$_,$action,$serviceName -NoNewWindow -Wait}
# Note: The native stop-service Powershell command does not have a computername parameter; Hence, the native command above is used as a workaround
Stop-Service : A parameter cannot be found that matches parameter name 'computername'.
At line:1 char:14
+ stop-service -computername $computernames -name $servicename -force
+ ~~~~~~~~~~~~~
+ CategoryInfo : InvalidArgument: (:) [Stop-Service], ParameterBindingException
+ FullyQualifiedErrorId : NamedParameterNotFound,Microsoft.PowerShell.Commands.StopServiceCommand
# Sample output
SERVICE_NAME: windows_exporter
TYPE : 10 WIN32_OWN_PROCESS
STATE : 3 STOP_PENDING
(NOT_STOPPABLE, NOT_PAUSABLE, IGNORES_SHUTDOWN)
WIN32_EXIT_CODE : 0 (0x0)
SERVICE_EXIT_CODE : 0 (0x0)
CHECKPOINT : 0x0
WAIT_HINT : 0x0
Verify
PS C:\Users\administrator> get-service windows_exporter -computername $computernames|select MachineName,Name,Status
MachineName Name Status
----------- ---- ------
dev01 windows_exporter Stopped
dev02 windows_exporter Stopped
dev03 windows_exporter Stopped
dev04 windows_exporter Stopped
Categories: