web-dev-qa-db-fra.com

Démarrer et arrêter le service Windows à distance à l'aide de PSEXEC

Comment démarrer et arrêter un service Windows à distance à l'aide de PSEXEC? De préférence, la syntaxe à écrire, j'ai essayé la cmdlet donnée ci-dessous

psexec \\Server -u Administrator -p Somepassword ServiceName
9
Selwyn

Je ne peux pas tester cela maintenant, mais cela devrait être:

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

et

psexec \\server -u username -p password net stop ArgusCommunityWorkerService
9
RichieHindle

PSService sur SysInternals est spécifiquement destiné au contrôle à distance des services :: `

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

où:

query Affiche l'état d'un service.

config Affiche la configuration d'un service.

setconfig Définit le type de démarrage (désactivé, auto, à la demande) d'un service.

start Démarre un service.

stop Arrête un service.

restart Arrête puis redémarre un service.

pause Met en pause un service

cont Reprend un service en pause.

depend Répertorie les services en fonction de celui spécifié.

security Vide le descripteur de sécurité du service.

find Recherche le service spécifié sur le réseau.

\\ computer Cible le système NT/Win2K spécifié.

Incluez le commutateur -u avec un nom d'utilisateur et un mot de passe pour vous connecter au système distant si vos informations d'identification de sécurité ne vous permettent pas d'obtenir des informations de compteur de performance à partir du système distant. Si vous spécifiez l'option -u, mais pas un mot de passe avec l'option -p, PsService vous invitera à entrer le mot de passe et ne le renverra pas à l'écran.

16
JBRWilkinson

Une autre alternative à psexec est sc. Vous pouvez utiliser sc pour démarrer ou arrêter des services à distance:

sc \\server start ServiceName

sc \\server stop ServiceName

Il n'y a pas d'informations de "connexion", alors peut-être avez-vous besoin d'exécuter

Net Use \\server password /USER:user

avant d'exécuter la commande sc.

Un avantage sur psexec est qu’aucune fenêtre de console n’est affichée sur la machine distante.

12
jrbjazz

Utilisation de PSEXEC

Le fichier de commandes ci-dessous vous permettra d’arrêter et de démarrer des services sur plusieurs ordinateurs distants. Créez le fichier Computers.txt dans le même répertoire d’exécution du fichier de commandes et répertoriez les noms d’hôte PC un par ligne.

@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

Utilisation de 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"
         }
}
0
Rudixx