Microsoft Web Deployment Service のインストール時に HTTP サービスを停止できない

この記事は、Microsoft Web Deployment Service (MSDEPSVC) のインストール時に NET STOP HTTP コマンドを使用して HTTP サービスを停止できない問題を解決するのに役立ちます。

元の製品バージョン:   Microsoft Web Deployment Service
元の KB 番号:   2597817

現象

次のような状況を想定します。 IIS (IIS) 6、7、または 7.5 を実行しているインターネット インフォメーション サービス HTTP サービスを停止しようとするとします。 サーバーには、Microsoft Web Deployment Service (MSDEPSVC) もインストールされています。 コマンド ライン命令を使用して HTTP サービスを停止すると、コマンド プロンプトに次の NET STOP HTTP エラー メッセージが表示されます。

HTTP サービスが停止しています。....
HTTP サービスを停止する必要があります。

コマンドを再度実行 NET STOP HTTP すると、次のメッセージが表示されます。

サービスが開始または停止しています。 後でもう一度やり直してください。

原因

この問題は、Microsoft Web Deployment Service (MSDEPSVC) が HTTP サービスに依存しますが、MSDEPSVC が最初にインストールされている場合、その依存関係が Service Control Manager に登録されていないので発生します。 HTTP が停止しようとすると、依存サービスも停止する必要があります。 ただし、HTTP は、未登録の依存関係のために MSDEPSVC を停止する必要があるという認識を持たず、サービスの停止が失敗します。

解決方法

この問題を解決するには、次のスクリプトをコピーし、サーバー上で PowerShell スクリプトとして実行します。 スクリプトは、HTTP サービスのすべての依存関係が正しく登録されていることを確認します。

$bFoundHttp = $false
$msdepsvc = Get-Service -name MsDepSvc
$reqsvcs = "HTTP"
$msdepsvc.ServicesDependedOn | ForEach-Object `
{
    if($_.Name -eq "HTTP")
    {
      $bFoundHttp = $true
    }
    else
    {
    if($_.Name -ne "")
     {
       $reqsvcs += "/" + $_.Name
     }
    }
}
if ($bFoundHttp -eq $false)
{
    $status = $msdepsvc.Status
    if($status -eq "Running")
    {
      Stop-Service -name MsDepSvc
    }

    sc.exe config MsDepSvc depend= $reqsvcs
    if($status -eq "Running")
    {
      Start-Service -name MsDepSvc
    }
}

問題が解決されたかどうかを確認します。 問題が解決された場合、このセクションの作業は完了していることになります。 問題が解決されていない場合は、サポートに問い合わせることができます。

関連情報

Web 展開ツールの詳細については 、「Web Deploy 3.6」を参照してください