Простая проверка сайта Powershell IIS - PullRequest
1 голос
/ 17 июня 2020

Часть нашего процесса оформления заказа после установки исправлений - это проверка веб-серверов. Я хотел бы создать для каждого l oop, который запускает следующий скрипт, ищущий 200 или 401, и выдает терминальное сообщение «сообщение о порядке сайта» с именем сайта. Если он получит что-нибудь еще, я хотел бы получить сообщение об ошибке, в котором также будет указано имя сайта.

Я знаю, что ответ 401 - это не совсем нормально, но некоторые сайты, которыми я управляю, не имеют прав на просмотр. (Вот почему я хотел go этот маршрут, я никогда не знаю, что «выглядит правильно» при визуальной проверке. Вот что у меня есть до сих пор.

    $HTTP_Request = [System.Net.WebRequest]::Create('https://someinternalserver.com')
    $HTTP_Response = $HTTP_Request.GetResponse()
    $HTTP_Status = [int]$HTTP_Response.StatusCode

            If ($HTTP_Status -eq 200) {
            Write-output $http_request | Select-Object RequestUri
            Write-Host "SITE OK! 200"

            If ($HTTP_Status -eq 401) {
            Write-output $http_request | Select-Object RequestUri
            Write_Host "SITE OK! 401"}
        }

        Else {
            Write-output $http_request | Select-Object RequestUri
            Write-Host "SITE DEAD"}

     If ($HTTP_Response -eq $null) { } 

     Else { $HTTP_Response.Close() }

Когда я запускаю команду, я я получаю сообщения об ошибках, которые меня не интересуют, в строке 5. Как мне их подавить? В идеале я стараюсь, чтобы они выглядели чистыми, насколько это возможно, чтобы мы могли просто смотреть, как прокручивается информация, и отмечать любой сервер, который является чем-то другим чем 200 или 401 результаты

... это тоже вроде работало, но теперь я, кажется, сломал его до такой степени, что все возвращается как САЙТ МЕРТВ.

1 Ответ

0 голосов
/ 17 июня 2020

Вы можете добавить try / catch.

$HTTP_Request = [System.Net.WebRequest]::Create('http://localhost:8080')
$HTTP_Response
$HTTP_Status
try {
    $HTTP_Response = $HTTP_Request.GetResponse()
    $HTTP_Status = [int]$HTTP_Response.StatusCode
}
catch {

}
If ($HTTP_Status -eq 200) {
    Write-output $http_request | Select-Object RequestUri
    Write-Host "SITE OK! 200"

    If ($HTTP_Status -eq 401) {
        Write-output $http_request | Select-Object RequestUri
        Write_Host "SITE OK! 401"
    }
}

Else {
    Write-output $http_request | Select-Object RequestUri
    Write-Host "SITE DEAD"
}

If ($HTTP_Response -eq $null) { } 
Else { $HTTP_Response.Close() }

Если вы хотите попасть в некоторые URL-адреса в al oop, вы можете сделать что-то вроде этого:

param(
    $urls = @('http://localhost:8080', 'https://google.com')
)

Clear-Host

foreach ($url in $urls) {
    $HTTP_Request = [System.Net.WebRequest]::Create($url)
    $HTTP_Response
    $HTTP_Status
    try {
        $HTTP_Response = $HTTP_Request.GetResponse()
        $HTTP_Status = [int]$HTTP_Response.StatusCode
    }
    catch {

    }
    If ($HTTP_Status -eq 200) {
        Write-Host ($http_request | Select-Object RequestUri).RequestUri
        Write-Host "SITE OK! 200 `n"
    }
    ElseIf ($HTTP_Status -eq 401) {
        Write-Host ($http_request | Select-Object RequestUri).RequestUri
        Write_Host "SITE OK! 401 `n"
    } 
    Else {
        Write-Host ($http_request | Select-Object RequestUri).RequestUri
        Write-Host "SITE DEAD `n"
    }

    # $null should be on the left: https://evotec.xyz/the-curious-case-of-null-should-be-on-the-left-side-of-equality-comparisons-psscriptanalyzer/
    If ($null -eq $HTTP_Response) { } 
    Else { $HTTP_Response.Close() }
}

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...