如何检查MS部署是否正常工作

时间:2015-11-05 05:33:43

标签: powershell webdeploy

我正在使用电源脚本部署网站,服务器在带有IIS 7.5的Windows 7上运行 我使用以下代码来部署应用程序
         $arguments = [string[]]@( "-verb:sync", "-source:package='$PackagePath'", "-dest:auto,computerName='$PublishUrl',AuthType='NTLM'", "-setParam:name='IIS Web Application Name',value='$($WebApp)'", "-allowUntrusted")
Start-Process $msdeploy -ArgumentList $arguments -NoNewWindow -Wait

上面的脚本工作正常。

我想抓住负面情况。当我在计算机上禁用Web部署代理服务时,它会抛出一条消息(Power shell不将此视为错误或异常)

  

错误代码:ERROR_COULD_NOT_CONNECT_TO_REMOTESVC
  更多信息:无法使用指定的进程连接到远程计算机(“localhost”)(“Web部署”   代理服务“)因为服务器没有响应。请确保启动进程(”Web部署代理服务“)   在远程计算机上编辑。请访问:http://go.microsoft.com/fwlink/?LinkId=221672#ERROR_COULD_NOT_CONNECT_TO_REMO了解详情   TESVC。
  错误:远程服务器返回错误:(503)服务器不可用   错误计数:1。

我如何在powershell中捕捉到它。

2 个答案:

答案 0 :(得分:1)

我使用以下命令解决了这个问题:

$arguments = [string[]]@(
        "-verb:sync",
        "-source:package='$PackagePath'",
        "-dest:auto,computerName='$PublishUrl',AuthType='NTLM'",
         "-setParam:name='IIS Web Application Name',value='$($WebApp)'",
        "-allowUntrusted")

    #Restore IIS
    $proc = Start-Process $msdeploy -ArgumentList $arguments -NoNewWindow -Wait -PassThru
    $handle = $proc.Handle
    $proc.WaitForExit();

    if ($proc.ExitCode -ne 0) {
        Write-Warning "$_ exited with status code $($proc.ExitCode)"
    }

这里的秘密是“-PassThru”。查看microsoft documentation

答案 1 :(得分:0)

尝试在脚本结束时运行它:

if ($Error.Count -gt 0)
{
    $Error | ForEach-Object { Write-Host $_ -ForegroundColor Red }
    exit -1;
}