1

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

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

Я хотел бы, чтобы сценарий останавливал service1.exe , service2.exe и т.д. В каталоге bin при запуске сценария.

Можно ли использовать sc stop в Windows Batch или Stop-Service в PowerShell для передачи параметра binPath?

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

2 ответа2

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
}

Это гораздо проще, чем пытаться обнаружить сервисы.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .