我想通过批处理脚本添加一个新的服务依赖项到具有旧依赖项的现有服务,而不删除这些依赖项。
我知道命令sc config ServiceA depend= ServiceB/ServiceC/ServiceD可以添加多个依赖关系,但我不知道如何使用它 – 例如 – 将ServiceD依赖项添加到依赖于ServiceB和ServiceC的服务,具有相同结果并没有提到旧的依赖关系(因为我不知道他们)。
有什么办法做到这一点? 而且 – 如何恢复更改(也是通过批处理)?
顺便说一下,我没有太多的批量经验。
找出现有的依赖关系,添加新的依赖项,然后写回所有的东西,假设你有一个名为w3svc的服务,你可以使用:
sc.exe qc w3svc
或在PowerShell中:
(get-service w3svc | Select ServicesDependedOn).ServicesDependedOn
在这里你可以遍历这些并build立一个新的sc.exe命令来执行。
例:
$serviceName = "w3svc" $cmd = "config $serviceName depend= " (gsv $serviceName | Select ServicesDependedOn).ServicesDependedOn | % {$cmd += $_.Name + "/"} $cmd += "myMasterService" invoke-expression "sc.exe $cmd"
我们正在从现有的服务build立一个命令string,并添加你自己的。
删除你的做同样的事情,但在循环中排除你的服务。
$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"
我没有testing过实际的sc.exe命令,但我想你知道你在做什么。