Посібник

sc.exe, Get-Service і це

Обидва вже є на машині, і обидва лишаться корисними. Ця сторінка про те, де вони закінчуються, - і вона прямо каже, де вони все ще найкраща відповідь.

Де закінчується кожен

sc.exe

Він може дотягнутися майже до всього, що знає диспетчер керування службами, і нічого не каже про те, як питати. Синтаксис із дев'яностих - sc config X start= auto, де пробіл після знака рівності обов'язковий, а його відсутність - мовчазна відмова зробити те, що ви мали на увазі.

Він відповідає про один запис за раз. Немає фільтрації, немає виводу, який скрипт міг би розібрати, не написавши розбірник, і немає попереднього перегляду: sc stop або спрацьовує, або повертає число.

Get-Service і командлети *-Service

Справжні об'єкти, конвеєр і поверхневий погляд. У Windows PowerShell 5.1, що постачається з Windows, 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, тож він приєднується до конвеєра, а не замінює його.

Разом, а не замість

Інструмент, що відповідає на що не так із цією машиною, й інструменти, що змінюють одне налаштування, - не один і той самий інструмент. Поставте запитання тут, прочитайте план тут і скористайтеся чим завгодно, щоб його виконати - план друкує командний рядок, що просить те саме, і цей рядок призначений для копіювання.