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
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
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.
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.
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"
}
}