我想一次获取多个URL的http状态以准备报告。如何使用Powershell实现它?
答案 0 :(得分:0)
我看到了有关通过Windows机器监视多个网站的问题。我的朋友想检查他以前手动执行的200个URL的状态。我写了一个Power-Shell脚本来克服这个问题。发布它以使所有用户受益。
将以下代码另存为“ D:\ MonitorWeb \”
中的“ AnyName.ps1” 文件。#Place URL list file in the below path
$URLListFile = "D:\MonitorWeb\URLList.txt"
$URLList = Get-Content $URLListFile -ErrorAction SilentlyContinue
#For every URL in the list
Foreach($Uri in $URLList) {
try{
#For proxy systems
[System.Net.WebRequest]::DefaultWebProxy = [System.Net.WebRequest]::GetSystemWebProxy()
[System.Net.WebRequest]::DefaultWebProxy.Credentials = [System.Net.CredentialCache]::DefaultNetworkCredentials
#Web request
$req = [system.Net.WebRequest]::Create($uri)
$res = $req.GetResponse()
}catch {
#Err handling
$res = $_.Exception.Response
}
$req = $null
#Getting HTTP status code
$int = [int]$res.StatusCode
#Writing on the screen
Write-Host "$int - $uri"
#Disposing response if available
if($res){
$res.Dispose()
}
}
在同一目录中放置文件“ URLList.txt” 和URL列表“ D:\ MonitorWeb \”
例如:
http://www.google.com
http://google.com
http://flexboxfroggy.com
http://www.lazyquestion.com/interview-questions-and-answer/es6
现在打开常规命令提示符,并导航到“ D:\ MonitorWeb \” 并在命令下方键入:
powershell -executionpolicy bypass -File .\AnyName.ps1
您将得到如下输出:
HTTP STATUS 200 = OK
注意:
这也适用于Power Shell版本2。
即使您在代理后面(使用默认代理设置)也可以工作
希望这会有所帮助!