sc.exe, Get-Service e questo strumento
Entrambi sono già sulla macchina, ed entrambi resteranno utili. Questa pagina parla di dove si fermano - e dice chiaramente dove sono ancora la risposta migliore.
Dove si ferma ciascuno
sc.exe
Raggiunge quasi tutto ciò che sa il gestore di controllo dei servizi, e non le dice nulla su come chiederlo. La sintassi è degli anni Novanta - sc config X start= auto, dove lo spazio dopo il segno uguale è obbligatorio e la sua assenza è un fallimento silenzioso nel fare ciò che intendeva.
Risponde su una voce alla volta. Non c'è filtro, né un output che uno script possa analizzare senza scrivere un parser, né anteprima: sc stop o funziona o restituisce un numero.
Get-Service e i cmdlet *-Service
Oggetti veri, una pipeline e una vista superficiale. In Windows PowerShell 5.1, quello fornito con Windows, Get-Service non mostra l'account con cui gira un servizio né la sua descrizione. PowerShell 7 mostra entrambi, e anche il percorso di avvio, e si installa a parte.
Stop-Service -Force significa "anche se qualcosa ne dipende" - ferma i dipendenti, e glielo dice dopo e non prima.
Le stesse domande, in tre modi
| Domanda | Con ciò che c'è sulla macchina | Qui |
|---|---|---|
| Cosa dovrebbe essere attivo e non lo è | Get-Service | Where-Object { $_.StartType -eq 'Automatic' -and $_.Status -ne 'Running' } |
bws list --query "start:auto !status:running" |
| Quali servizi hanno un eseguibile non firmato | Leggere ogni percorso di avvio, risolverlo, chiamare Get-AuthenticodeSignature su ciascuno - uno script, non un comando |
bws list --query "signed:no" |
| Cosa trascinerebbe con sé fermare questo | sc enumdepend X, poi leggere l'elenco e decidere da sé |
bws stop X --dry-run --dependents, che è il piano che verrebbe eseguito |
| Cosa è cambiato dalla settimana scorsa | Niente, a meno che abbia scritto lei stessa il raccoglitore | bws snapshot diff before.json --live |
| Chi ha cambiato il tipo di avvio, e quando | Get-WinEvent -FilterHashtable @{ LogName = 'System'; Id = 7040 }, poi leggere il messaggio di ogni evento |
bws history Spooler, la cui prima riga dice fin dove arriva il registro |
| Output leggibile da una macchina | Oggetti da PowerShell, testo da sc.exe |
--json su ogni comando, sullo standard output, con gli avvisi sullo standard error |
Dove questo strumento non concorda con sc.exe su un servizio, è un bug qui. Parte della suite di test esegue entrambi sulla macchina in cui gira e li confronta voce per voce, e una differenza tra i due è la cosa più utile da mettere in una segnalazione.
Quando continuare a usare ciò che ha
- È su una macchina che toccherà una volta sola. Entrambi sono già lì e nulla deve passare una policy.
- Deve cambiare l'account, il percorso di avvio o le azioni di ripristino.
sc.exefa tutte e tre le cose. Questo strumento mostra l'account e il percorso di avvio e non cambia nessuno dei due, e legge le azioni di ripristino solo per avvisare prima di terminare un processo. - Deve creare o eliminare un servizio.
sc createesc delete. Non qui, di proposito. - È già immerso in una pipeline PowerShell.
bws list --jsontorna come oggetti tramiteConvertFrom-Json, così si unisce alla pipeline invece di sostituirla.
Insieme, anziché al posto
Lo strumento che risponde a cosa non va in questa macchina e gli strumenti che cambiano un'impostazione non sono lo stesso strumento. Ponga la domanda qui, legga il piano qui e usi ciò che preferisce per eseguirlo - il piano stampa la riga di comando che chiede la stessa cosa, e quella riga è fatta per essere copiata.