使用Powershell/curl检查http标头的问题



这比我想象的要困难得多(也比它应该的要困难得多)。

我试过Cygwin+curl,但无法运行(Cygwin永远找不到curl.exe,但我确实做了一个包检查,它在那里)。

我试过Windows上的curl,使用命令提示符,它可以工作。但是我有相当多的url要检查,单独做它们并不节省时间。我不知道如何告诉curl,通过cmd提示符,使用一个文件(因为没有"xargs"),就像这里提到的。

我也试过使用PowerShell,但这也有问题。当我尝试遵循选项1时

我得到一个错误,当我尝试运行$xHTTP.open("GET",$url,$false):

异常调用"open",参数为"3":"未指定错误(Exception from HRESULT: 0x80004005 (E_FAIL))"

同样在PowerShell中,我完全不知道如何让它使用包含url的文件。我对PS的了解非常非常有限(不存在)。

这里最好是弄清楚如何让命令提示符/curl使用文件,但是我不能弄清楚。

在PowerShell V3中有一种更直接的方法:

PS> Get-Content .urls.txt
http://www.cnn.com
http://www.msn.com
PS> Get-Content urls.txt | Foreach { Invoke-WebRequest -Uri $_ -Method HEAD }
StatusCode        : 200
StatusDescription : OK
Content           :
RawContent        : HTTP/1.1 200 OK
                    Vary: Accept-Encoding
                    Connection: Keep-Alive
                    Cache-Control: max-age=60, private
                    Content-Type: text/html
                    Date: Tue, 08 Jan 2013 20:21:46 GMT
                    Expires: Tue, 08 Jan 2013 20:22:46 GMT...
Forms             : {}
Headers           : {[Vary, Accept-Encoding], [Connection, Keep-Alive], [Cache-Control, max-age=60, private],
                    [Content-Type, text/html]...}
...

使用try/catch处理404错误,例如:

PS> Get-Content urls.txt | 
        Foreach {try {Invoke-WebRequest -Uri $_ -Method HEAD} catch { "Oops - $_"}}

重定向到一个文件,这对我来说很有效:

PS> Get-Content urls.txt | 
        Foreach {try {Invoke-WebRequest -Uri $_ -Method HEAD} catch { "Oops - $_"}} > 
        $homeDesktopfoo.txt

最新更新