Как написать сценарий PowerShell для получения статуса URL-адреса веб-сайта на основе URL-адреса другого веб-сайта - PullRequest
0 голосов
/ 17 июня 2020

Может кто-нибудь, пожалуйста, помогите!

С помощью приведенного ниже сценария Power Shell я могу получить статус всех URL-адресов. При этом, хотя URL-адрес Google не работает (я намеренно указал неправильный URL-адрес), скрипт запускается 3 раза, что бесполезно.

Мое состояние ... Мои ссылки gmail и входа должны работать, только если Google ссылка рабочая. И моя ссылка для входа должна работать, только если ссылка Gmail работает. Если нет, он должен завершить сценарий, отправив электронное письмо с кодом ошибки (я использую этот блок try catch для сохранения этого кода ошибки).

Это мой код.

$ErrorActionPreference = "Stop"

[array]$URL_LIST_FILE = Get-Content -Path 'path/of/file'

$URL_LIST = @($URL_LIST_FILE)
foreach ($URL in $URL_LIST)
{
    try {
        $RESPONSE = Invoke-WebRequest -URI $URL -ErrorAction Stop
        $RESPONSE_CODE = $RESPONSE.Statuscode
        Write-Host "Response Code: $RESPONSE_CODE" -ForegroundColor Green
        if ($RESPONSE_CODE -eq 200)
        {
            Write-Host "$URL is Working." -ForegroundColor Blue
        }
    }
    catch {
        $ERR = $_.Exception.Response.StatusCode
        $ERR_CODE = $_.Exception.Response.StatusCode.value__ 
        Write-Host $ERR_CODE $ERR -ForegroundColor Red
        Write-Host "$URL is not working. Sending Email..." -ForegroundColor Yellow
        #Send-MailMessage -To to@somemail.com -From from@somemail.com -Subject "subject is here" 
    }
}

Мой файл содержит:

www.google.com                        - Google link
www.gmail.com                         - Gmail link
www.accounts.google.com/gmail         - Signin link
...
...
...

Ответы [ 2 ]

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

Если честно ... Я не понимаю вашего намерения

Многие конечные точки не зависят друг от друга, потому что это другие службы.

Тем не менее ...

Если вы хотите избежать последующих вызовов конечной точки, которая уже была классифицирована как недоступная предыдущими вызовами для верхнего уровня домена или сайта на том же хосте, вам следует создать вложенную хеш-таблицу / список возможных вариантов.

это не делается с помощью простого лайнера, возможно, вы можете предоставить более подробную информацию о своем намерении. (но классифицировать что-то вроде gmail.com как недоступное для поддоменов google.com будет сложно);)

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

попробуйте записать ошибку в операторе else.

if ($RESPONSE_CODE -eq 200)
        {
            Write-Host "$URL is Working." -ForegroundColor Blue
        }
Else {Write-Host "$URL is not Working." -ForegroundColor red}
...