Добавьте новую зависимость к службе Windows, которая уже имеет зависимости

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

Я знаю команду sc config ServiceA depend= ServiceB/ServiceC/ServiceD могут добавить несколько зависимостей, но я не знаю, как использовать его для - например - добавляет зависимость ServiceD к сервису, который зависит от ServiceB и ServiceC с тем же результатом и не упоминая старые зависимости (так как я не знаю их).

Что путь состоит в том, чтобы сделать это? И - как вернуться изменение (также через Пакет)?

У меня нет большого опыта с Пакетом, между прочим.

2
задан 27 February 2015 в 23:38
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, но предполагаю, что вы знаете, что делаете.

2
ответ дан 3 December 2019 в 11:38

Теги

Похожие вопросы