powershell是否返回并记录重定向的站点?

powershell是否返回并记录重定向的站点?,powershell,automation,stress-testing,Powershell,Automation,Stress Testing,下午好,, 尝试创建脚本,以便在网页重定向到扩展服务器时转到该网页并进行日志记录。例如,该站点是site.school.net,在高负载下,它应该转发到site2.school.net和site3.school.net。我研究powershell只是因为我想学习它,但我对任何有效的东西都持开放态度。我试过了 Start-Process -FilePath FireFox -ArgumentList site.school.net 它会打开一个页面,但我需要每10-15秒运行一次,并记录它发送到

下午好,, 尝试创建脚本,以便在网页重定向到扩展服务器时转到该网页并进行日志记录。例如,该站点是site.school.net,在高负载下,它应该转发到site2.school.net和site3.school.net。我研究powershell只是因为我想学习它,但我对任何有效的东西都持开放态度。我试过了

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

它会打开一个页面,但我需要每10-15秒运行一次,并记录它发送到的url。感谢您的帮助,提前谢谢

下面是一个例子,但使用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

不要为此使用web浏览器,因为这会增加额外的开销,并且会使从无人参与的系统(如在计划作业中)运行脚本变得非常困难或不可能

使用PowerShell的cmdlet

这将尝试到达指定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服务器发送true时有效,而不是依赖于通过
META
标记或JavaScript的客户端重定向。

此方法也适用于我,但为我提供了一个解决方案,我甚至不知道我需要lol。谢谢!
$redirecttest = invoke-webrequest -uri https://jigsaw.w3.org/HTTP/300/302.html -Method get;
$redirecttest.BaseResponse.responseuri.AbsoluteUri;