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

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

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

現象

次のような状況を想定します。 インターネット インフォメーション サービス (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 が停止しようとすると、依存サービスも停止する必要があります。 ただし、未登録の依存関係が原因で MSDEPSVC を停止する必要があるため、サービスの停止が失敗するという HTTP は認識していません。

解決方法

この問題を解決するには、次のスクリプトをコピーし、サーバー上で 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」を参照してください。