Зупинити / запустити службу Windows із певним контуром?


1

Я хотів би створити кілька сценаріїв (Batch Windows або PowerShell, залежно від того, що буде працювати), які можуть зупиняти та запускати служби, які мають свій binPath у певній папці. Це прискорить роботу при налагодженні програмного забезпечення, оскільки мені часто потрібно зупинити 4 служби, змінити конфігураційні файли, а потім запустити 4 служби знову. Якби у мене був сценарій, який міг би зупинити та запустити ці сервіси одним натисканням кнопки, це дійсно пришвидшило б мій робочий процес, а також було б корисно для інших, що використовують програмне забезпечення.

Програмне забезпечення запускатиметься з такого місця, як:, C:\MyProgramі чотири служби будуть, C:\MyProgram\binнаприклад,.

Я хотів би, щоб скрипт зупинявся service1.exeі service2.exeт.д. в каталозі bin, коли я запускаю сценарій.

Чи можливо за допомогою sc stopWindows Batch або Stop-ServicePowerShell передавати параметр binPath?

Я переглянув документацію цих команд, але не можу знайти спосіб цього досягти. Можливо, мені потрібно це зробити як послідовність кількох команд, але які мені потрібні, я не знаю.


4
Чому, на вашу думку, потрібен шлях до служби? Як зупинка, так і Стоп-Сервіс працюють просто прекрасно, зупиняючи / починаючи послугу по імені.
Лівен Керсмейкерс

Це правда, але на даний момент я не знаю, що назва служби, лише те, що служба працює з певного місця.
Аарон Каннінгтон,

1
Це вражає мене як дивну умову. Чому б ви не знали ім'я служби?
uSlackr

Тому що назви служб динамічні і жодним чином не мають на увазі поточну робочу директорію сценарію.
Аарон Каннінгтон

Можливо, ви випадково помиляєтесь ім'ям служби та відображуваною назвою служби? get-service wuauserv | format-list name,displaynameповертає це:Name : wuauserv DisplayName : Windows Update
Мегаморф

Відповіді:


1

Це не банально, але ви можете переробити реєстр у розділі HKLM \ SYSTEM \ CurrentControlSet \ Services. Ключ ImagePath містить ім'я виконавця. Як тільки ви виявите це, використовуйте ім'я служби для керування службою. Powershell зробив би це досить просто, використовуючи get-childitem та шляхHKLM:\SYSTEM\CurrentControlSet\Services\


0

Дякуючи за запропоновані поради, мені вдалося попрацювати з розробниками програмного забезпечення, щоб залишити слід у текстовому файлі після імен служб, розділених новим рядком, після встановлення програмного забезпечення.

Таким чином, я легко можу запускати та зупиняти послуги за допомогою простої PowerShell:

$services = Get-Content("services.txt").Split()
foreach ($service in $services) {
    Start-Service $service
}

Це набагато простіше, ніж намагатися виявити послуги.

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.