Start-Service / Stop-Service în PowerShell

Procese și servicii Windows PowerShell 1.0

Pornesc, opresc și repornesc servicii Windows; cer o sesiune PowerShell deschisă ca administrator.

Sintaxă
Start-Service [-Name] <String[]> [-PassThru] [-WhatIf]
Stop-Service [-Name] <String[]> [-Force] [-NoWait] [-PassThru] [-WhatIf]
Restart-Service [-Name] <String[]> [-Force] [-PassThru]

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ă StartupType cu Get-Service și schimbă-l cu Set-Service -Name ... -StartupType Manual.
  • Oprești un serviciu cu -Force fără să verifici -DependentServices: se opresc și serviciile care depind de el.
  • Folosești -ComputerName din exemplele pentru Windows PowerShell 5.1: în PowerShell 7 parametrul nu există; rulează comanda prin Invoke-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.