Ce face Start-Service / Stop-Service
Start-Service trimite către Service Controller-ul Windows mesajul de pornire pentru fiecare serviciu indicat, Stop-Service mesajul de oprire, iar Restart-Service le trimite pe amândouă, pe rând. Dacă serviciul rulează deja, Start-Service ignoră cererea fără eroare; dacă era oprit, Restart-Service doar îl pornește. Serviciile se aleg după nume (-Name), după numele afișat (-DisplayName) sau prin pipeline de la Get-Service. Fără -PassThru, comenzile nu afișează nimic.
Implicit, doar membrii grupului Administrators pot porni, opri sau reporni un serviciu, iar PowerShell trebuie deschis cu „Run as administrator” chiar dacă ești în acel grup. Un serviciu cu tipul de pornire Disabled nu poate fi pornit: schimbă-l întâi cu Set-Service -StartupType Manual. Pentru a opri un serviciu de care depind alte servicii, Stop-Service are nevoie de -Force, iar serviciile dependente se opresc și ele.
Cele trei cmdlet-uri există doar pe Windows. Din PowerShell 6.0 nu mai au parametrul -ComputerName; pentru un server folosești Invoke-Command. Aliasuri: sasv pentru Start-Service și spsv pentru Stop-Service.
Parametri
| Parametru | Descriere |
|---|---|
-Name |
Numele scurte ale serviciilor (alias -ServiceName). |
-DisplayName |
Numele afișate ale serviciilor; acceptă wildcard-uri. |
-InputObject |
Obiecte ServiceController, de exemplu de la Get-Service. |
-PassThru |
Întoarce obiectul serviciului după operație, ca să vezi noua stare. |
-Force |
La Stop-Service: oprește serviciul chiar dacă alte servicii depind de el. La Restart-Service: rulează fără să ceară confirmare. |
-NoWait |
Doar la Stop-Service: folosește opțiunea „no wait” și nu așteaptă ca serviciul să ajungă oprit. |
-Include / -Exclude |
Restrâng serviciile alese prin -Name cu tipare suplimentare. |
-WhatIf / -Confirm |
Arată ce s-ar întâmpla, respectiv cer confirmare înainte de fiecare serviciu. |
Ce returnează
Nimic, implicit; cu -PassThru, obiecte ServiceController.
Exemple
Exemplul 1: Oprirea și pornirea serviciului de imprimare
Rulat într-o sesiune de administrator. -PassThru afișează starea după fiecare operație.
Stop-Service -Name Spooler -PassThru
Start-Service -Name Spooler -PassThru
Ieșire în terminal
Status Name DisplayName
------ ---- -----------
Stopped Spooler Print Spooler
Running Spooler Print Spooler
Exemplul 2: Verificare cu -WhatIf, după numele afișat
Nu se oprește nimic; vezi doar ținta, scrisă ca „nume afișat (nume scurt)”.
Stop-Service -DisplayName 'Windows Time' -WhatIf
Ieșire în terminal
What if: Performing the operation "Stop-Service" on target "Windows Time (W32Time)".
Exemplul 3: Repornire când există servicii dependente
Întâi vezi ce depinde de Spooler, apoi repornești cu -Force; comanda de repornire nu afișează nimic.
Get-Service -Name Spooler -DependentServices
Restart-Service -Name Spooler -Force
Ieșire în terminal
Status Name DisplayName
------ ---- -----------
Stopped Fax Fax
Greșeli frecvente
- Rulezi comanda într-o fereastră PowerShell obișnuită și primești o eroare că serviciul nu poate fi oprit sau pornit: deschide PowerShell cu „Run as administrator”.
- Încerci să pornești un serviciu dezactivat: verifică
StartupTypecuGet-Serviceși schimbă-l cuSet-Service -Name ... -StartupType Manual. - Oprești un serviciu cu
-Forcefără să verifici-DependentServices: se opresc și serviciile care depind de el. - Folosești
-ComputerNamedin exemplele pentru Windows PowerShell 5.1: în PowerShell 7 parametrul nu există; rulează comanda prinInvoke-Command.
Comenzi înrudite
Get-Service: Listează serviciile Windows, pornite și oprite, cu starea, numele scurt și numele afișat; există doar pe Windows.Stop-Process: Oprește unul sau mai multe procese locale, după nume, după ID sau primite prin pipeline de la Get-Process.Invoke-Command: Rulează comenzi sau scripturi pe unul sau mai multe computere deodată și aduce înapoi rezultatele, inclusiv erorile.