【问题标题】:how to check if MS deploy worked properly如何检查 MS deploy 是否正常工作
【发布时间】:2015-11-05 05:33:43
【问题描述】:

我正在使用电源脚本部署一个网站,服务器运行在带有 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
更多信息:无法使用指定进程(“Web 部署”)连接到远程计算机(“localhost”) 代理服务”),因为服务器没有响应。请确保进程(“Web 部署代理服务”)已启动 在远程计算机上编辑。了解更多信息:http://go.microsoft.com/fwlink/?LinkId=221672#ERROR_COULD_NOT_CONNECT_TO_REMO TESVC.
错误:远程服务器返回错误:(503) 服务器不可用。
错误计数:1。

如何在 powershell 中捕捉到这个。

【问题讨论】:

    标签: powershell webdeploy


    【解决方案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

    【讨论】:

    • 谢谢@Jorge - 这个问题已经困扰我好几天了,你的解决方案效果很好。
    【解决方案2】:

    尝试在脚本末尾运行:

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

    【讨论】:

      猜你喜欢
      • 2013-08-10
      • 2015-07-25
      • 2012-12-12
      • 1970-01-01
      • 2014-01-11
      • 2020-04-23
      • 1970-01-01
      • 2012-07-24
      • 2011-01-28
      相关资源
      最近更新 更多