2011-11-02 20 views
5

すべて、別のサービスに依存しているの停止Windowsサービス

私は別のサービスに依存している私たちが作成したWindowsサービスを停止しようとしています。サービスをリモートマシン上で実行しているバッチファイルのscコマンドなどを使って、両方のサービスを停止したいだけです。

私は依存関係の順番でサービスを停止しようとしましたが(依存度が最も低い)、サービスを停止しません。

たとえば、Service1は、サービスコンソールのサービス設定で構成されているService2に依存します。私は自分のWindows 7 PC上でスクリプトを実行していますし、サーバーは、2003年

次の行は、私が作成したnoddyでバッチファイルであるのWindows Serverを実行します:

sc \\SERVER stop "Service1" 
sc \\SERVER stop "Service2" 

コマンドコンソールでの出力は次のようになります。

D:\Test>sc \\SERVER stop "Service2" 
[SC] ControlService FAILED 1051: 

A stop control has been sent to a service that other running services are dependent on. 

サービスService2は停止しません。 Service1は正常に停止します。

アイデア?

おかげで、

Andez

答えて

2

あなたは、サービスはあなたがループ

にそれを置くことができるとの依存関係を取得 sc qc <service>

を実行することにより、スクリプトを順番に依存関係を持っているどの確認することができます

例:

@echo off 
setlocal enabledelayedexpansion 
set service=winmgmt 
set server=server 

for /f "Tokens=2 Delims=:" %%i in ('sc \\%server% qc %service% ^| find /i "DEPENDENCIES"') do (
    set depservice=%%i 
    rem removes spaces 
    set depservice=!depservice: =! 
    sc \\%server% stop "!depservice!" 

    rem extra: accumulate all dependencies to one variable 
    set alldeps=!alldeps!, !depservice! 
    rem remove first ", " in variable 
    set alldeps=!alldeps=~2! 

) 
sc \\%server% stop "%service%" && echo Both %service% and !alldeps! were stopped || echo Something went wrong stopping %service% 
exit /b 

上記は、停止したいサービスが1つの依存関係を持つ場合にのみ機能します。

+0

を入力し、依存関係の有無にかかわらず、サービスを停止するので、あまりにも

を依存するすべてのサービスを停止します、あなたがそれを望んでいたとして、上記の作業をしましたか? – NiklasJ

1

Niklasバッチファイルは私にとっては機能しません。

Windows Server 2008 R2では、qcコマンドがこのサービスが依存するサービスを表示しているようです。彼らはこの時点では関連性がありません、あなたは生活の波紋を引き起こすことなく、サービスを停止することができます。

あなたが実際に望むのは、殺されるサービスに依存するサービスです。 EnumDependコマンドを使ってそれらをsc.exeに取得します。

残念ながら、出力構文はかなり異なりますので、上記のロジックを保存して解析する必要があります。同様の問題を経験して誰にも

6

「NET STOP」コマンドがコメントされていないパラメータがあります。このパラメータは、はい/で、自動的にあなただけの

net stop spooler /yes 
関連する問題