Start And Stop Windows Service remotely using PSEXEC
Asked Answered
W

5

11

How to start and and stop a Windows service remotely using PSEXEC? Preferably the syntax to write I tried the cmdlet given below

psexec \\Server -u Administrator -p Somepassword ServiceName
Whelm answered 2/9, 2009 at 7:13 Comment(1)
Wouldn't this be better on serverfault.com?Heng
J
12

I can't test this right now, but it ought to be:

psexec \\server -u username -p password net start ArgusCommunityWorkerService

and

psexec \\server -u username -p password net stop ArgusCommunityWorkerService
Jesusa answered 2/9, 2009 at 7:20 Comment(0)
S
18

PSService on SysInternals is specifically for remotely controlling services::`

psservice [\\computer [-u username] [-p password]] <command> <options>

where:

query Displays the status of a service.

config Displays the configuration of a service.

setconfig Sets the start type (disabled, auto, demand) of a service.

start Starts a service.

stop Stops a service.

restart Stops and then restarts a service.

pause Pauses a service

cont Resumes a paused service.

depend Lists the services dependent on the one specified.

security Dumps the service's security descriptor.

find Searches the network for the specified service.

\\computer Targets the NT/Win2K system specified.

Include the -u switch with a username and password to login to the remote system if your security credentials do not permit you to obtain performance counter information from the remote system. If you specify the -u option, but not a password with the -p option, PsService will prompt you to enter the password and will not echo it to the screen.

Shortage answered 19/10, 2009 at 18:43 Comment(0)
F
14

Another alternative to psexec is sc. You can use sc to start or stop services remotely:

sc \\server start ServiceName

sc \\server stop ServiceName

There is no "login" information, so maybe you need to execute

net use \\server password /USER:user

before executing sc command.

One advantage over psexec is that no console window shows in the remote machine.

Foetid answered 2/9, 2009 at 9:4 Comment(1)
Good one. I found I had to do: net use \\server\IPC$ password /USER:userMather
J
12

I can't test this right now, but it ought to be:

psexec \\server -u username -p password net start ArgusCommunityWorkerService

and

psexec \\server -u username -p password net stop ArgusCommunityWorkerService
Jesusa answered 2/9, 2009 at 7:20 Comment(0)
M
0

Using PSEXEC

The below batch file will let you stop and start services on multiple remote machines. Create Computers.txt file in the same directory where the batch file runs from and list PC hostnames one per line.

@echo off
TITLE Manage Services v1.0
SET suffix=%date:~-4,4%%date:~-10,2%%date:~-7,2%_%time:~0,2%%time:~3,2%%time:~6,2%
SET /P username=Enter your admin username: 
set "psCommand=powershell -Command "$pword = read-host 'Enter Password' -AsSecureString ; ^
    $BSTR=[System.Runtime.InteropServices.Marshal]::SecureStringToBSTR($pword); ^
        [System.Runtime.InteropServices.Marshal]::PtrToStringAuto($BSTR)""
for /f "usebackq delims=" %%p in (`%psCommand%`) do set password=%%p
:service
SET /P servicename=Enter service name:
:begin
echo ========================================
echo 1) Start
echo 2) Stop
echo 3) Choose another service
echo ========================================
ECHO.
set /p op=Select an option:
if "%op%"=="1" SET action=start
if "%op%"=="2" SET action=stop
if "%op%"=="3" goto service

psexec "\\@%~dp0Computers.txt" -u %username% -p %password% -h net %action% %servicename% >>%suffix%.log 2>&1

pause
cls
goto begin

Using PowerShell

# Point the script to the text file with remote computers
$RemoteComputers = Get-Content "$PSScriptRoot\Computers.txt"

# sets service name
$Service = "uvnc_service"

# Counter for progress bar
$counter = 0

ForEach ($Computer in $RemoteComputers) {
    $counter++
     Try
         {
          Write-Progress -Activity 'Processing computers' -CurrentOperation $Computer -PercentComplete (($counter / $RemoteComputers.count) * 100)
          Start-Sleep -Milliseconds 200
          Get-Service -Name $Service -ComputerName $Computer | Restart-Service -Force -ErrorAction Stop
          Write-Output "$(Get-Date -format "yyyy-MM-dd hh:mm:ss"),$computer" | out-file -append -filepath "$PSScriptRoot\success.log"
         }
     Catch
         {
          Write-Output "$(Get-Date -format "yyyy-MM-dd hh:mm:ss"),$computer" | out-file -append -filepath "$PSScriptRoot\failed.log"
         }
}
Marjorymarjy answered 1/4, 2018 at 9:50 Comment(0)
P
0

Refering to Microsoft, an alternative is using psservice, which is part of pstools downloadable under following link:

Download PsTools (2.7 MB)

If someone needs to

Start, stop, restart, etc... a Windows Service remotely

as mentioned in the official reference from Microsoft, the appropriate command using the provided executable

PsService.exe

could be something similar to following (Case 1 and case 2), if you are using Windows PowerShell

Case 1: User, who will perform the wished command (e.g. restart) after signed in, is remote computer user with appropriate rights

.\PsService.exe \\Remote-ComputerName-OR-ServerName -u 'RemoteComputerName-OR-ServerName\Remote-ComputerUser' -p 'Remote-ComputerUser-Password' restart ServiceName

Case 2: User, who will perform the wished command (e.g. restart) after signed in, is domain superuser (e.g. DomainAdministrator)

.\PsService.exe \\Remote-ComputerName-OR-ServerName -u 'DomainShortName\DomainAdministrator' -p 'DomainAdministrator-Password' restart ServiceName

PS: Notice in this case the single quoted parameter values for

username

-u

and password

-p

for complex password and/or username

That's it, your command should get executed smoothly, just be patient!

Prefiguration answered 19/8, 2021 at 23:45 Comment(0)

© 2022 - 2025 — McMap. All rights reserved.