Я хочу добавить с помощью Сценария пакетной обработки новую сервисную зависимость к существующему сервису со старыми зависимостями, не удаляя эти зависимости.
Я знаю команду sc config ServiceA depend= ServiceB/ServiceC/ServiceD
могут добавить несколько зависимостей, но я не знаю, как использовать его для - например - добавляет зависимость ServiceD к сервису, который зависит от ServiceB и ServiceC с тем же результатом и не упоминая старые зависимости (так как я не знаю их).
Что путь состоит в том, чтобы сделать это? И - как вернуться изменение (также через Пакет)?
У меня нет большого опыта с Пакетом, между прочим.
Выясните существующие зависимости, добавьте новую и запишите все обратно, скажем, у вас есть служба под названием 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, но предполагаю, что вы знаете, что делаете.