【发布时间】:2018-10-04 21:22:52
【问题描述】:
我正在尝试梳理 WebServer 的应用程序池以检测每个应用程序的 HTTP 响应代码。我正在使用 foreach 循环来检查响应是否为 200,但如果其中一个响应不是 200,我需要 foreach 循环继续并检查所有其他应用程序池。
$appPool = Get-WebApplication
foreach ($a in $appPool) {
$app = $a.Attributes[0].Value;
$url = "http://localhost$app/apitest/index"
$HTTP_Request = [System.Net.WebRequest]::Create($url)
$HTTP_Response = try{
$HTTP_Request.GetResponse()
} catch {
$exceptionMessage = $_.Exception.Message
$exceptionItem = $app
}
$HTTP_Status = [int]$HTTP_Response.StatusCode
if ($HTTP_Status -eq 200) {
$errorcode = 0
} elseif ($HTTP_Status -ne 200) {
$errorcode = 1
} else {
$errorcode = 2
}
}
我发现任何应用程序池返回什么都无关紧要,因为无论最后一个应用程序返回什么,循环都会退出。如果应用 3 返回 503 但最后一个应用返回 200,则 foreach 循环返回 200 并以 $errorcode = 0 退出。
如果中间的应用没有 200 状态码,如何更改此代码以检查所有应用程序池但以不同的错误代码退出?
【问题讨论】:
标签: powershell iis foreach http-status-codes