가이드

sc.exe, Get-Service, 그리고 이것

둘 다 이미 컴퓨터에 있고, 둘 다 계속 쓸모가 있을 것입니다. 이 페이지는 그것들이 어디에서 멈추는지에 대한 것이며, 여전히 더 나은 답인 곳도 솔직하게 말합니다.

각각이 멈추는 곳

sc.exe

서비스 제어 관리자가 아는 거의 모든 것에 닿을 수 있지만, 어떻게 물어야 하는지는 아무것도 알려 주지 않습니다. 구문은 1990년대의 것입니다. sc config X start= auto에서 등호 뒤의 공백은 필수이며, 그것이 없으면 의도한 일을 하지 못한 채 조용히 실패합니다.

한 번에 한 항목에 대해서만 답합니다. 필터링도, 파서를 쓰지 않고 스크립트가 해석할 수 있는 출력도, 미리 보기도 없습니다. sc stop은 성공하거나 숫자를 돌려줍니다.

Get-Service와 *-Service cmdlet

제대로 된 개체, 파이프라인, 그리고 얕은 시야입니다. Windows에 포함된 Windows PowerShell 5.1의 Get-Service는 서비스가 실행되는 계정도 설명도 보여 주지 않습니다. PowerShell 7은 둘 다, 그리고 시작 경로도 보여 주며, 별도로 설치합니다.

Stop-Service -Force는 “무언가 종속되어 있더라도”를 뜻합니다. 종속된 서비스를 중지하고, 그 사실을 사전이 아니라 사후에 알려 줍니다.

같은 질문, 세 가지 방법

질문컴퓨터에 있는 것으로여기서
실행되어야 하는데 실행 중이 아닌 것 Get-Service | Where-Object { $_.StartType -eq 'Automatic' -and $_.Status -ne 'Running' } bws list --query "start:auto !status:running"
서명 없는 실행 파일을 가진 서비스는 무엇인가 각 시작 경로를 읽고, 해석하고, 각각에 Get-AuthenticodeSignature를 호출합니다. 명령이 아니라 스크립트입니다 bws list --query "signed:no"
이것을 중지하면 무엇이 함께 내려가는가 sc enumdepend X, 그다음 목록을 읽고 직접 판단합니다 bws stop X --dry-run --dependents, 곧 실행될 계획입니다
지난주 이후 무엇이 바뀌었는가 직접 수집기를 만들지 않았다면 없음 bws snapshot diff before.json --live
누가 언제 시작 유형을 바꿨는가 Get-WinEvent -FilterHashtable @{ LogName = 'System'; Id = 7040 }, 그다음 각 이벤트의 메시지를 읽습니다 bws history Spooler, 첫 줄이 로그가 얼마나 거슬러 올라가는지 알려 줍니다
기계가 읽을 수 있는 출력 PowerShell에서는 개체, sc.exe에서는 텍스트 모든 명령의 --json은 표준 출력으로, 경고는 표준 오류로 나갑니다

서비스에 대해 이 도구가 sc.exe와 다르게 나오면, 여기서는 그것이 버그입니다. 테스트 모음의 일부가 실행 중인 컴퓨터에서 둘을 모두 실행해 항목별로 비교하며, 둘의 차이는 이슈에 넣을 수 있는 가장 유용한 내용입니다.

가진 것을 계속 쓸 때

  • 한 번만 손댈 컴퓨터에 있습니다. 둘 다 이미 있으며 정책을 통과시킬 필요가 없습니다.
  • 계정, 시작 경로, 복구 동작을 바꿔야 합니다. sc.exe는 셋 다 합니다. 이 도구는 계정과 시작 경로를 보여 주지만 둘 다 바꾸지 않으며, 복구 동작은 프로세스를 종료하기 전에 경고하려고만 읽습니다.
  • 서비스를 만들거나 삭제해야 합니다. sc create와 sc delete. 여기에는 없으며, 의도한 것입니다.
  • 이미 PowerShell 파이프라인 깊숙이 있습니다. bws list --json은 ConvertFrom-Json을 통해 개체로 돌아오므로, 파이프라인을 대체하는 대신 합류합니다.

대신이 아니라 함께

이 컴퓨터에 무엇이 잘못되었는가에 답하는 도구와 설정 하나를 바꾸는 도구는 같은 도구가 아닙니다. 질문은 여기서 하고, 계획은 여기서 읽고, 실행은 원하는 것으로 하세요. 계획은 같은 일을 요청하는 명령줄을 출력하며, 그 줄은 복사하라고 있는 것입니다.