Guia

sc.exe, Get-Service e isto

Os dois já estão na máquina, e os dois continuarão úteis. Esta página trata de onde eles param - e diz com clareza onde ainda são a melhor resposta.

Onde cada um para

sc.exe

Ele alcança quase tudo que o gerenciador de controle de serviços sabe, e não diz nada sobre como perguntar. A sintaxe é dos anos noventa - sc config X start= auto, em que o espaço depois do sinal de igual é obrigatório e a sua ausência é uma falha silenciosa em fazer o que você queria.

Ele responde sobre uma entrada por vez. Não há filtro, nem saída que um script possa analisar sem escrever um analisador, nem pré-visualização: o sc stop ou funciona ou devolve um número.

Get-Service e os cmdlets *-Service

Objetos de verdade, um pipeline e uma visão superficial. No Windows PowerShell 5.1, o que vem com o Windows, o Get-Service não mostra a conta sob a qual um serviço roda nem a descrição dele. O PowerShell 7 mostra as duas coisas, e o caminho de lançamento também, e se instala separadamente.

Stop-Service -Force significa "mesmo que algo dependa dele" - ele para os dependentes, e conta depois e não antes.

As mesmas perguntas, de três jeitos

PerguntaCom o que há na máquinaAqui
O que deveria estar no ar e não está Get-Service | Where-Object { $_.StartType -eq 'Automatic' -and $_.Status -ne 'Running' } bws list --query "start:auto !status:running"
Quais serviços têm um executável sem assinatura Ler cada caminho de lançamento, resolvê-lo, chamar Get-AuthenticodeSignature em cada um - um script, não um comando bws list --query "signed:no"
O que pará-lo derrubaria junto sc enumdepend X, depois ler a lista e decidir você mesmo bws stop X --dry-run --dependents, que é o plano que executaria
O que mudou desde a semana passada Nada, a menos que você tenha escrito o coletor bws snapshot diff before.json --live
Quem mudou o tipo de inicialização, e quando Get-WinEvent -FilterHashtable @{ LogName = 'System'; Id = 7040 }, depois ler a mensagem de cada evento bws history Spooler, cuja primeira linha diz até onde o log alcança
Saída legível por máquina Objetos do PowerShell, texto do sc.exe --json em cada comando, na saída padrão, com os avisos no erro padrão

Onde esta ferramenta discorda do sc.exe sobre um serviço, isso é um bug daqui. Parte do conjunto de testes executa os dois contra a máquina em que está e os compara entrada por entrada, e uma diferença entre os dois é a coisa mais útil que você pode colocar em um relato de problema.

Quando continuar usando o que você tem

  • Você está em uma máquina que vai mexer uma única vez. Os dois já estão lá e nada precisa passar por uma política.
  • Você precisa mudar a conta, o caminho de lançamento ou as ações de recuperação. O sc.exe faz as três coisas. Esta ferramenta mostra a conta e o caminho de lançamento e não muda nenhum dos dois, e lê as ações de recuperação só para avisar antes de encerrar um processo.
  • Você precisa criar ou excluir um serviço. sc create e sc delete. Não aqui, de propósito.
  • Você já está no meio de um pipeline do PowerShell. O bws list --json volta como objetos pelo ConvertFrom-Json, então entra no pipeline em vez de substituí-lo.

Juntos, em vez de no lugar

A ferramenta que responde o que há de errado com esta máquina e as ferramentas que mudam uma configuração não são a mesma ferramenta. Faça a pergunta aqui, leia o plano aqui e use o que preferir para executá-lo - o plano imprime a linha de comando que pede o mesmo, e essa linha foi feita para ser copiada.