2016-05-25 18 views
0

Windowsサーバの監視URLにスクリプトを書き込もうとしています。以下はスクリプトです。私は3つのURLを使って回答を見ました。 HTTPはHTTPSにリダイレクトされようとしているために失敗する必要がありますが、私は応答として200を得た - 期待される結果はURL監視の要求は失敗しますが、応答しません。

  • http://google.comです。
  • https://google.com - 成功していて、成功したはずです。
  • https://yahoo.com - プロキシがYahooをブロックするため、失敗するはずです。

しかし面白いことに、私は3つのURLすべてで成功を収めています。 https://google.comはいくらか受け入れ可能ですが、Yahooの場合は、サイトがブロックされているため、プロキシサーバーがエラーページを投げていますが、以下のコードはプロキシエラーページを成功として受け取り、エラーとして表示します。

enter image description here

PowerShellのHTTPレスポンスコードを取得するための信頼できる方法である私に助言してください。

$sites = @(
    "http://www.google.com", 
    "https://www.google.com", 
    "https://www.yahoo.com" 
) 

foreach ($url in $sites) { 
    $HTTP_Request = [System.Net.WebRequest]::Create("$url") 
    $HTTP_Response = $HTTP_Request.GetResponse() 
    $HTTP_Status = [int]$HTTP_Response.StatusCode 

    if ($HTTP_Status -eq 200) { 
     Write-Host "$url" " is OK!" 
    } else { 
     Write-Host "$url" " may be down, please check!" 
    } 
    $HTTP_Response.Close() 
} 
+0

あなたは '$をfalseに' $ HTTP_Request.AllowAutoRedirect'を設定していないので、最初の1が成功しました' –

+1

あなたのプロキシがエラー応答コードなしでエラーページを返す場合(誰かがそれを間違えて間違えるようなことを驚かせることは決してありません)、正しく動作するようにプロキシを再設定する必要があります。それ以外の場合は、返される実際の(HTML)ページを解釈する必要があります。 –

+0

@Ansgarは何を言っていますか? 「200 OK - あなたはそのページを表示していないかもしれません」と返すプロキシサーバーが誤って構成されている(または自己ビルドされている)可能性があります。 – CodeCaster

答えて

0

プロキシには認証が必要なため、https://www.yahoo.comからのHTTP応答もありません。プロキシの資格情報を提供していないので、$req.GetResponse()コールはエラーをスローし、変数$HTTP_Responseは以前の反復(その値はhttps://www.google.com)からの値を保持します。だからあなたはそのURLのOKを得るように思えるのです。

キャッチエラーがGetResponse()によってスローされ、エラーの場合、200以外の値に$HTTP_Statusを設定します。

foreach ($url in $sites) { 
    $HTTP_Request = [Net.WebRequest]::Create($url) 
    try { 
     $HTTP_Response = $HTTP_Request.GetResponse() 
     $HTTP_Status = $HTTP_Response.StatusCode.value__ 
    } catch { 
     $HTTP_Status = 0 
    } finally { 
     if ($HTTP_Status -eq 200) { 
      Write-Host "$url is OK!" 
     } else { 
      Write-Host "$url may be down, please check!" 
     } 
    } 
} 
+0

こんにちはAnsgar、ありがとうございました。これは期待通りに機能しました。 –

関連する問題