Добавить новую зависимость в службу Windows, которая уже имеет зависимости
Я хочу добавить через пакетный скрипт новую служебную зависимость к существующей службе со старыми зависимостями, не удаляя эти зависимости.
Я знаю команду sc config ServiceA depend= ServiceB/ServiceC/ServiceD
Можно добавить несколько зависимостей, но я не знаю, как его использовать, например, для добавления зависимости ServiceD к службе, которая зависит от ServiceB и ServiceC, с тем же результатом и без упоминания старых зависимостей (поскольку я не знаю, их).
Как это сделать? И - как отменить изменение (также через пакетный режим)?
Между прочим, у меня нет особого опыта работы с Batch.
1 ответ
Узнайте существующие зависимости, добавьте новую и напишите все обратно, скажем, у вас есть служба под названием w3svc
, ты можешь использовать:
sc.exe qc w3svc
или в PowerShell:
(get-service w3svc | Select ServicesDependedOn).ServicesDependedOn
где вы можете просмотреть их и создать новую команду sc.exe для выполнения.
Пример:
$serviceName = "w3svc"
$cmd = "config $serviceName depend= "
(gsv $serviceName | Select ServicesDependedOn).ServicesDependedOn | % {$cmd += $_.Name + "/"}
$cmd += "myMasterService"
invoke-expression "sc.exe $cmd"
Мы строим командную строку из существующих сервисов и добавляем вашу собственную.
Для удаления сделайте то же самое, но в цикле исключите ваш сервис.
$serviceName = "w3svc"
$cmd = "config $serviceName depend= "
(gsv $serviceName | Select ServicesDependedOn).ServicesDependedOn | % {
if ($_.Name -ne "myMasterService")
{
$cmd += $_.Name + "/"
}
}
# remove the last slash
$cmd = $cmd -replace "/$", ""
invoke-expression "sc.exe $cmd"
Я не проверял настоящие команды sc.exe, но полагаю, вы знаете, что делаете.