我正在使用电源脚本部署网站,服务器在带有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中捕捉到它。
答案 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;
}