Get-Service în PowerShell

Procese și servicii Windows PowerShell 1.0

Listează serviciile Windows, pornite și oprite, cu starea, numele scurt și numele afișat; există doar pe Windows.

Sintaxă
Get-Service [[-Name] <String[]>] [-DependentServices] [-RequiredServices] [-Exclude <String[]>]
Get-Service -DisplayName <String[]>

Ce face Get-Service

Get-Service întoarce câte un obiect ServiceController pentru fiecare serviciu Windows. Cmdlet-ul există doar pe Windows: în PowerShell 7 pe Linux sau macOS nu este disponibil (acolo folosești systemctl sau launchctl). Fiecare serviciu are un nume scurt (Name, de exemplu Spooler) și un nume afișat (DisplayName, de exemplu Print Spooler); ambii parametri acceptă wildcard-uri.

Tabelul implicit are coloanele Status, Name și DisplayName. Status este o enumerare în care Stopped are valoarea 1 și Running valoarea 4, de aceea Sort-Object Status pune întâi serviciile oprite. Din PowerShell 6.0 obiectele au și proprietățile UserName, Description, DelayedAutoStart, BinaryPathName și StartupType.

Tot din PowerShell 6.0 a dispărut parametrul -ComputerName (în Windows PowerShell 5.1 încă există); pentru un server folosești Invoke-Command. Pentru citire nu ai nevoie de drepturi de administrator, dar vezi doar serviciile pe care contul tău are voie să le vadă. Alias: gsv.

Parametri

Parametru Descriere
-Name Numele scurte ale serviciilor (alias -ServiceName); acceptă wildcard-uri și valori din pipeline.
-DisplayName Numele afișate ale serviciilor; acceptă wildcard-uri (*network*).
-Include / -Exclude Restrâng rezultatul dat de -Name cu tipare suplimentare.
-DependentServices Întoarce serviciile care depind de serviciul indicat.
-RequiredServices Întoarce serviciile de care are nevoie serviciul indicat.
-InputObject Obiecte ServiceController primite prin pipeline.

Ce returnează

Obiecte System.ServiceProcess.ServiceController.

Exemple

Exemplul 1: Starea a două servicii

Serviciul de imprimare (Spooler) și cel de sincronizare a orei (W32Time).

Get-Service -Name Spooler, W32Time

Ieșire în terminal

Status   Name               DisplayName
------   ----               -----------
Running  Spooler            Print Spooler
Stopped  W32Time            Windows Time

Exemplul 2: Câte servicii rulează acum

Filtrăm după Status și numărăm rezultatele cu .Count.

(Get-Service | Where-Object Status -EQ 'Running').Count

Ieșire în terminal

112

Exemplul 3: Tipul de pornire și contul unui serviciu

StartupType și UserName există din PowerShell 6.0.

Get-Service -Name Spooler | Format-List -Property Name, Status, StartupType, UserName

Ieșire în terminal

Name        : Spooler
Status      : Running
StartupType : Automatic
UserName    : LocalSystem

Greșeli frecvente

  • Cauți serviciul după numele afișat cu -Name (Get-Service 'Print Spooler'): folosește -DisplayName sau numele scurt Spooler.
  • Copiezi un script vechi cu Get-Service -ComputerName SRV01 în PowerShell 7: parametrul nu mai există; scrie Invoke-Command -ComputerName SRV01 { Get-Service }.
  • Rulezi scriptul pe Linux sau macOS: Get-Service nu există acolo, iar comanda dă eroare că nu e recunoscută.
  • Compari Status cu numere sau sortezi alfabetic și te miri de ordine: e o enumerare; compară cu numele stării, de exemplu Status -EQ 'Running'.

Comenzi înrudite

  • Start-Service / Stop-Service: Pornesc, opresc și repornesc servicii Windows; cer o sesiune PowerShell deschisă ca administrator.
  • Get-Process: Afișează procesele care rulează pe computerul local, cu memoria folosită, timpul de procesor și ID-ul (PID) fiecăruia.
  • Where-Object: Filtrează obiectele din pipeline și le lasă să treacă doar pe cele care îndeplinesc o condiție.
  • Invoke-Command: Rulează comenzi sau scripturi pe unul sau mai multe computere deodată și aduce înapoi rezultatele, inclusiv erorile.