2016-08-10 10 views
1

午後すべて、 Webページに移動するスクリプトを作成しようとしていて、拡張サーバーにリダイレクトされている場合はログに記録します。たとえば、サイトはsite.school.netであり、負荷が高い場合はsite2.school.netとsite3.school.netに転送されます。私はそれを学びたいと思うので、私はパワーシェルを探していましたが、私は動作するものはすべて開いています。私はリダイレクトされたサイトを返信してログするpowershell?

Start-Process -FilePath FireFox -ArgumentList site.school.net 

を試してみましたが、それがページを開き、すべてのことが、私はすべての10〜15秒のようにそれを実行し、それが送られたURLをログに記録する必要があります。どんな助けもありがとうございます、事前に感謝します!

答えて

1

は、このためにWebブラウザを使用しないでください。

PowerShellのinvoke-webrequestコマンドレットを使用してください。

$redirecttest = invoke-webrequest -uri https://jigsaw.w3.org/HTTP/300/302.html -Method get -maximumredirection 0; 
Write-Output "StatusCode: $($redirecttest.statuscode)"; 
Write-Output "Redirecting to: $($redirecttest.headers.location)"; 

これは、指定されたURLのページに到達しようとし、指定されている場合はリダイレクトに従いません。次に、HTTPヘッダーを取得し、HTTPステータスコード(302、この場合は永続的に移動されます)とリダイレクト先の場所を出力します。

サーバーは、クライアントがリダイレクトするように指示された回数を超えてリダイレクトするようクライアントに指示したため、エラーも発生します。あなたが好む/必要とするエラーを処理します。

if ($Redirecttest.headers.location -eq "http://site2.school.net" -or $Redirecttest.headers.location -eq "http://site3.school.net") { 
Write-output "Success"; 
} else { 
Write-output "Redirect broken"; 
} 

をそれとも、あなただけのWebリクエストを起動し、リダイレクトを許可し、そして得られたを調べることができます:

その後、リダイレクトが正しく動作していることを検証するためにあなたが送信されているリダイレクト先をテストすることができますURL。

$redirecttest = invoke-webrequest -uri https://jigsaw.w3.org/HTTP/300/302.html -Method get; 
$redirecttest.BaseResponse.responseuri.AbsoluteUri; 

クライアント側に依存するとは対照的に、HTTPサーバは、真HTTP 30X status codesを送信する場合にのみ動作することに注意がMETAタグやJavaScript経由でリダイレクトします。

+0

このメソッドはまた、私のために働いたが、私は笑を必要とさえ知っていなかった解決策を私に提供した。ありがとう! – WookieWitDaFur

0

ここは例ですが、Internet Explorer(11)です。 PowerShellでFirefoxを自動化できるかどうかはわかりません。この例では、元のURLとは異なる出力が得られます。それは余分なオーバーヘッドだとかなり困難または不可能(スケジュールされたジョブのように)無人システムからスクリプトを実行しますよう

#Instanciate IE COM Object to interact with IE 
$ie = New-Object -ComObject "InternetExplorer.Application" 

#store original URL 
$requestUri = "http://google.com" 

#open the original URL in IE 
$ie.navigate($requestUri) 

#while IE is busy, wait for 250 seconds and try again 
while ($ie.Busy) { 
    Start-Sleep -Milliseconds 250 
} 

#retrieve the actual/final URL from the browser 
$ie.Document.url 
+0

このメソッドは私のために働いた – WookieWitDaFur

関連する問題