これらの依存関係を削除せずに、バッチスクリプトを介して、古い依存関係を持つ既存のサービスに新しいサービス依存関係を追加したいと思います。
私はコマンドを知っていますsc config ServiceA depend= ServiceB/ServiceC/ServiceD
複数の依存関係を追加できますが、それを使用して、たとえば、ServiceBとServiceCに依存するサービスにServiceD依存関係を追加する方法がわかりません。同じ結果で、古い依存関係については言及しません(それらを知っている)。
それを行う方法は何ですか?そして-変更を元に戻す方法(バッチ経由でも)?
ちなみに、私はバッチの経験があまりありません。
既存の依存関係を見つけ、新しい依存関係を追加して、すべてを書き戻します。たとえば、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コマンドをテストしていませんが、あなたが何をしているのか知っていると思います。