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
| Pytanie | Tym, co jest na maszynie | Tutaj |
|---|---|---|
| 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.exerobi wszystkie trzy. Ten program je czyta i pokazuje, a nie zmienia. - Musisz utworzyć albo usunąć usługę.
sc createisc delete. Tutaj tego nie ma, świadomie. - Jesteś już w środku potoku PowerShella.
bws list --jsonwraca jako obiekty przezConvertFrom-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ć.