2017-01-23 4 views
0

Мне нужно проверить, работает ли URL-адрес правильно или нет, используя «PowerShell Version 2.0» Я нашел этот скрипт через Интернет, но он не wokring отлично подходит для неправильных URL-адресов. Он должен идти в else циклах для неправильного URL-адреса, а также для печати кода веб-сайта. И я не могу передавать учетные данные в этом скрипте.проверить статус URL-адреса с помощью powershell версии 2.0

например. для www.google.com (правильный URL) код состояния должен быть 200 но для www.gfjgugy79rt9 (Неправильный URL) код статуса должно быть что-то вроде 404

сценарий я нашел через Интернет для Powershell версии 2.0:

# First we create the request. 
$HTTP_Request = [System.Net.WebRequest]::Create('http://google.com') 

# We then get a response from the site. 
$HTTP_Response = $HTTP_Request.GetResponse() 

# We then get the HTTP code as an integer. 
$HTTP_Status = [int]$HTTP_Response.StatusCode 

If ($HTTP_Status -eq 200) { 
    Write-Host "Site is OK!" 
} 
Else { 
    Write-Host "The Site may be down, please check!" 
} 

# Finally, we clean up the http request by closing it. 
$HTTP_Response.Close() 

ответ

0

В PowerShell высшей чем 2.0 вы должны использовать try ... catch ... finally потому что этот огонь за исключением кода, когда URI будет не соответствовать или когда адрес часть не решается с помощью DNS:

try { 
    # First we create the request. 
    $HTTP_Request = [System.Net.WebRequest]::Create('http://google.com') 

    # We then get a response from the site. 
    $HTTP_Response = $HTTP_Request.GetResponse() 

    # We then get the HTTP code as an integer. 
    $HTTP_Status = [int]$HTTP_Response.StatusCode 

    If ($HTTP_Status -eq 200) { 
     Write-Host "Site is OK!" 
    } 
    Else { 
    Write-Host "The Site may be down, please check!" 
    } 
} 
catch { 
    Write-Verbose $_.ScriptStackTrace 
    Write-Verbose "Ligne $($_.InvocationInfo.ScriptLineNumber) : $($_.exception.message)" 
} 
finally { 
    # Finally, we clean up the http request by closing it. 
    $HTTP_Response.Close() 
} 

В PowShell 2.0 вы просто должны поставить Trap код в НАЧАЛЕ сферы (функции, скрипт), где вы хотите, чтобы поймать эти исключения:

trap 
{ 
    Write-Verbose $_.ScriptStackTrace 
    Write-Verbose "Ligne $($_.InvocationInfo.ScriptLineNumber) : $($_.exception.message)" 
    Write-Verbose ([datetime]::Now) 
    return 
} 
+0

Привет, Могу ли я использовать его для нескольких URL,? Например, помещая все URL-адреса в текстовый файл и получая цикл for. Я попробовал это для нескольких URL, но не смог. –

+0

Вы можете поместить этот код в функцию abd loop, вызывающую эту функцию. – JPBlanc