Poradnik

sc.exe, Get-Service i to

Oba są już na maszynie i oba zostaną użyteczne. Ta strona jest o tym, gdzie się kończą - i mówi wprost, gdzie nadal są lepszą odpowiedzią.

Gdzie kończy się każdy z nich

sc.exe

Sięga prawie do wszystkiego, co wie menedżer usług, i nie mówi nic o tym, jak go o to zapytać. Składnia jest z lat dziewięćdziesiątych - sc config X start= auto, gdzie spacja po znaku równości jest obowiązkowa, a jej brak jest cichą porażką w robieniu tego, o co chodziło.

Odpowiada o jednym wpisie naraz. Nie ma filtrowania, nie ma wyjścia, które skrypt sparsuje bez pisania własnego parsera, i nie ma podglądu: sc stop albo działa, albo zwraca liczbę.

Get-Service i polecenia *-Service

Porządne obiekty, potok i płytki widok. Get-Service nie pokazuje konta, na którym działa usługa, i nie pokazuje jej opisu. Typ uruchomienia pojawił się dopiero w PowerShellu 6.

Stop-Service -Force znaczy „nawet jeśli coś od tego zależy" - zatrzymuje zależne i mówi o tym po fakcie, a nie przed.

Te same pytania, trzema drogami

PytanieTym, co jest na maszynieTutaj
Co powinno działać i nie działa Get-Service | Where-Object { $_.StartType -eq 'Automatic' -and $_.Status -ne 'Running' } bws list --query "start:auto !status:running"
Które usługi mają niepodpisany plik Przeczytać każdą ścieżkę, rozwiązać ją, wywołać Get-AuthenticodeSignature na każdej - to skrypt, nie komenda bws list --query "signed:no"
Co zdjęłoby zatrzymanie tej usługi sc enumdepend X, a potem przeczytać listę i zdecydować samemu bws stop X --dry-run --dependents, czyli plan, który by się wykonał
Co zmieniło się od zeszłego tygodnia Nic, chyba że sam napisałeś zbieranie danych bws snapshot diff before.json --live
Wyjście czytelne dla maszyny Obiekty z PowerShella, tekst z sc.exe --json przy każdej komendzie, na wyjściu standardowym, a ostrzeżenia na wyjściu błędów

Tam, gdzie ten program nie zgadza się z sc.exe co do usługi, błąd jest tutaj. Część zestawu testów uruchamia oba na maszynie, na której biegnie, i porównuje je wpis po wpisie - a różnica między nimi jest najbardziej użyteczną rzeczą, jaką można umieścić w zgłoszeniu.

Kiedy zostać przy tym, co masz

  • Jesteś na maszynie, której dotkniesz raz. Oba są już tam i nic nie musi przechodzić przez politykę.
  • Musisz zmienić konto, ścieżkę uruchomienia albo akcje odzyskiwania. sc.exe robi wszystkie trzy. Ten program je czyta i pokazuje, a nie zmienia.
  • Musisz utworzyć albo usunąć usługę. sc create i sc delete. Tutaj tego nie ma, świadomie.
  • Jesteś już w środku potoku PowerShella. bws list --json wraca jako obiekty przez ConvertFrom-Json, więc dołącza do potoku, zamiast go zastępować.

Razem, a nie zamiast

Narzędzie odpowiadające na co jest nie tak z tą maszyną i narzędzia zmieniające jedno ustawienie to nie to samo narzędzie. Zadaj pytanie tutaj, przeczytaj plan tutaj, a wykonaj czym chcesz - plan drukuje linię wiersza poleceń proszącą o to samo, i ta linia jest po to, żeby ją skopiować.