Descubra as dependências existentes, adicione sua nova e escreva tudo de volta, digamos que você tenha um serviço chamado w3svc
, você pode usar:
sc.exe qc w3svc
ou no PowerShell:
(get-service w3svc | Select ServicesDependedOn).ServicesDependedOn
onde você pode percorrê-los e criar um novo comando sc.exe para executar.
Exemplo:
$serviceName = "w3svc"
$cmd = "config $serviceName depend= "
(gsv $serviceName | Select ServicesDependedOn).ServicesDependedOn | % {$cmd += $_.Name + "/"}
$cmd += "myMasterService"
invoke-expression "sc.exe $cmd"
Estamos criando uma string de comando a partir dos serviços existentes e adicionando a sua própria.
Para remover o seu, faça a mesma coisa, mas no loop exclua seu serviço.
$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"
Eu não testei os comandos sc.exe reais, mas presumo que você saiba o que está fazendo.