Stop-Service

Zatrzymuje działającą usługę systemu Windows.

Stop-Service to cmdlet PowerShell (moduł Microsoft.PowerShell.Management), którym zatrzymujesz działającą usługę systemu Windows — od SQL Servera, przez Spooler wydruku, po demona jakiegoś programu, który akurat zżera CPU. W praktyce robisz nim to samo co przyciskiem „Zatrzymaj” w services.msc, tylko z terminala, skryptowo i na wielu usługach naraz. Usługę wskazujesz po nazwie systemowej, po nazwie wyświetlanej albo podając jej obiekt. Cmdlet działa wyłącznie na Windowsie — na Linuksie w PowerShellu go nie znajdziesz.

Składnia i najważniejsze opcje

Stop-Service [-Name] [-Force] [-NoWait] [-PassThru] [-WhatIf] [-Confirm]

  • -Name — nazwa systemowa usługi (ta krótka, np. Spooler, nie „Bufor wydruku”). Parametr pozycyjny, więc zwykle piszesz ją od razu. Przyjmuje wiele nazw i symbole wieloznaczne.
  • -DisplayName — pozwala wskazać usługę po nazwie wyświetlanej, tej z kolumny w Get-Service.
  • -InputObject — przekazujesz gotowy obiekt usługi (np. z Get-Service), zamiast podawać nazwę tekstem.
  • -Force — wymagany, gdy usługa ma usługi zależne. Bez niego PowerShell odmówi zatrzymania, żeby nie ubić czegoś, co od niej zależy.
  • -NoWait — nie czeka, aż usługa faktycznie przejdzie w stan zatrzymany; wysyła żądanie i wraca.
  • -PassThru — zwraca obiekt ServiceController, żebyś od razu widział, w jakim stanie skończyła usługa.
  • -Exclude — wyklucza wskazane usługi z operacji (przydatne przy symbolach wieloznacznych).
  • -WhatIf — pokazuje, co by się stało, ale niczego nie zatrzymuje. Świetny do testu na produkcji.

Przykłady użycia

  • Stop-Service -Name Spooler — zatrzymuje bufor wydruku (klasyk, gdy kolejka drukarki się zawiesi).
  • Stop-Service -DisplayName "Windows Update" — zatrzymuje usługę po nazwie wyświetlanej, gdy nie pamiętasz nazwy systemowej.
  • Stop-Service -Name MSSQLSERVER -Force — ubija SQL Server razem z usługami od niego zależnymi.
  • Get-Service W3SVC | Stop-Service -PassThru — pobiera usługę, zatrzymuje i od razu wypisuje jej stan końcowy.
  • Stop-Service -Name "app*" -Exclude "appmgmt" -WhatIf — na sucho sprawdza, które usługi na „app” by padły, pomijając appmgmt.

Częste błędy i pułapki

Najczęstsza wpadka to mylenie -Name z -DisplayName. „Bufor wydruku” to nazwa wyświetlana, a systemowa to Spoolerpod -Name wchodzi tylko ta druga. Druga pułapka: usługa z zależnościami bez -Force rzuci błędem i nic nie zrobi, zamiast pytać. Pamiętaj też, że -Force nie omija uprawnień — bez konsoli podniesionej do administratora dostaniesz „access denied”. Uważaj z symbolami wieloznacznymi typu "*": łatwo zatrzymać pół systemu jednym poleceniem, dlatego wcześniej przepuść to przez -WhatIf. I nie licz na -NoWait, gdy zaraz potem chcesz coś zrobić na zatrzymanej usłudze — ona może jeszcze się wygaszać.

Powiązane komendy: Start-Service, Restart-Service, Suspend-Service, Resume-Service, Get-Service, Set-Service.