Я пытаюсь прочесать пулы приложений 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?