检查 URL 状态的脚本

2024-01-03

我见过一些与此类似的问题,但没有找到适合我的情况的问题。

我有一个存储在文本文件中的 URL 列表,我需要运行该列表以查看它们是否返回 404 错误。我正在使用 powershell 并一直在使用这里的示例:http://gallery.technet.microsoft.com/scriptcenter/Powershell-Script-for-13a551b3#content http://gallery.technet.microsoft.com/scriptcenter/Powershell-Script-for-13a551b3#content

我目前正在测试一个到 Confluence 页面的链接,在 Chrome 中观察控制台,我可以看到返回的第一个状态是 404 - 未找到,然后是十几个左右的请求,分别是 304、200。

我猜测第一个 404 之后的请求会影响我的结果,我需要脚本根据第一个响应返回。

到目前为止,我已经尝试过 powershell、php 和 javascript 解决方案,但没有成功。

那么总而言之,有没有一种方法可以仅根据第一个响应返回答案呢?

剧本:

## The URI list to test 
$URLListFile = "H:\xxx\xxx\urlList.txt"  
$URLList = Get-Content $URLListFile -ErrorAction SilentlyContinue 
  $Result = @() 


  Foreach($Uri in $URLList) { 
  $time = try{ 
  $request = $null 
   ## Request the URI, and measure how long the response took. 
  $result1 = Measure-Command { $request = Invoke-WebRequest -Uri $uri } 
  $result1.TotalMilliseconds 
  }  
  catch 
  { 
   <# If the request generated an exception (i.e.: 500 server 
   error or 404 not found), we can pull the status code from the 
   Exception.Response property #> 
   $request = $_.Exception.Response 
   $time = -1 
  }   
  $result += [PSCustomObject] @{ 
  Time = Get-Date; 
  Uri = $uri; 
  StatusCode = [int] $request.StatusCode; 
  StatusDescription = $request.StatusDescription; 
  ResponseLength = $request.RawContentLength; 
  TimeTaken =  $time;  
  } 

} 
    #Prepare email body in HTML format 
if($result -ne $null) 
{ 
    $Outputreport = "<HTML><TITLE>Website Availability Report</TITLE><BODY background-color:peachpuff><font color =""#99000"" face=""Microsoft Tai le""><H2> Website Availability Report </H2></font><Table border=1 cellpadding=0 cellspacing=0><TR bgcolor=gray align=center><TD><B>URL</B></TD><TD><B>StatusCode</B></TD><TD><B>StatusDescription</B></TD><TD><B>ResponseLength</B></TD><TD><B>TimeTaken</B></TD</TR>" 
    Foreach($Entry in $Result) 
    { 
        if($Entry.StatusCode -ne "200") 
        { 
            $Outputreport += "<TR bgcolor=red>" 
        } 
        else 
        { 
            $Outputreport += "<TR>" 
        } 
        $Outputreport += "<TD>$($Entry.uri)</TD><TD align=center>$($Entry.StatusCode)</TD><TD align=center>$($Entry.StatusDescription)</TD><TD align=center>$($Entry.ResponseLength)</TD><TD align=center>$($Entry.timetaken)</TD></TR>" 
    } 
    $Outputreport += "</Table></BODY></HTML>" 
} 

$Outputreport | out-file H:\xxx\xxx\test.htm 
Invoke-Expression H:\xxx\xxx\test.htm   

如果您希望脚本在第一个错误后退出循环,您可以尝试如下操作:

Foreach($Uri in $URLList) {
  $error.Clear()

  $time = Measure-Command { $request = Invoke-WebRequest -Uri $uri } 2>$null

  if ($error.Count -eq 0) {
    $time.TotalMilliseconds
  } else {
    $error[0].Exception.Response
    break
  }
}

AFAICS try..catch这里不需要。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

检查 URL 状态的脚本 的相关文章

随机推荐

  • Swing GUI 未更新

    我有一个简单的 Java Swing 应用程序 它使用 zip4j 来加密和解压 zip 文件 这是通过这部分代码完成的 ZipFile zipFile new ZipFile dataStorage zip zipFile setPass
  • flutter中的底部导航栏设计在单击时展开图标

    I need a navigation bar on which I can expand an icon when it s clicked in FlutterBottom Navigation bar design image htt
  • C# 3.0 (2009) 中的 C# 可选属性

    我想知道 C 是否支持如下可选属性 public class Person public string Name get set public optional string NickName get set many more prope
  • 如何使用 window.open() 显示窗口标题?

    我想使用以下命令打开一个新窗口 window open
  • Java代理认证

    我有一个在 Tomcat 6 中运行的 Java Web 应用程序 它从远程 URL 加载 RSS 提要 I use Rome http java net projects rome 为我处理 RSS 提要和不同的格式 连接部分如下所示 t
  • 在 Blazor 页面内渲染 React 组件

    是否可以在 Blazor 页面内呈现 React 组件 我尝试向 Blazor 页面添加脚本标签 但 Blazor 不允许添加脚本标签 感谢你的回答 是否可以在 Blazor 页面内呈现 React 组件 是的 这是可能的 React 是一
  • 使用 JavaScript 处理刷新页面事件

    是否可以使用JavaScript来处理刷新页面的事件 我想要的是 如果用户做出以下行为之一 我会收到通知 refresh page by pressing F5 关闭选项卡或浏览器 输入新网址 然后按 Enter 键 浏览器 显示警告消息
  • clojure cons 与带有惰性序列的 conj

    为什么 cons 在这种情况下可以与lazy seq配合使用 但 conj 却不能 这有效 defn compound interest p i cons p lazy seq compound interest p 1 i i 这不会 它
  • 如何将 HTML 字符串渲染为真正的 HTML?

    这是我尝试过的以及它是如何出错的 这有效 div Hi there gt 这不会 div div description 属性只是一个普通的 HTML 内容字符串 然而 由于某种原因 它被呈现为字符串 而不是 HTML 有什么建议么 Is
  • 如何在Node.js中请求图像并输出图像

    我尝试获取图像并显示在网址上 我用request https github com request request module 例如我想获取图像https www google com images srpr logo11w png 并显
  • 如何降低 Sphinx4 应用程序中的噪音

    我对 sphinx4 和语音识别很陌生 我正在使用 sphinx4 创建语音应用程序 问题是噪声 即使用户没有语音输入 它也会导致程序识别 即即使用户没有语音输入 程序也会将语音转换为文本 从而影响准确性 主要问题是如何实现降噪 这是因为即
  • 如何在 Tomcat 7 中以编程方式检索登录配置?

    在 Tomcat 7 上 我设置了一个领域来让容器管理身份验证过程 我还设置了 web xml 与相应的
  • 如何修复超过 maxWarmingSearchers 的限制?

    任何人都知道为什么以及如何解决这个问题 因为我同时有非常繁忙的更新和搜索 打开新搜索器时出错 超出 maxWarmingSearchers 2 的限制 请稍后再试 根据Solr 常见问题解答 超出 maxWarmingSearchers X
  • TitledBorder 标题更新/刷新延迟,为什么?

    我有一个JPanelA 内有标题边框JPanel B of a JTabbedPanelC 我有一个刷新A和B内容的方法 它会不时被调用 不幸的是 A 和 B 的所有项目都及时刷新 但 A 的标题没有刷新 我明确必须切换到另一个选项卡式面板
  • 反序列化 XML Rest WebApi 调用?

    我一直在关注一些在线示例 但由于某种原因我无法成功反序列化以下 XML 文档
  • 嵌入时间线的动态时间线选择 - 标签时间线

    我已按照指南进行操作here https dev twitter com discussions 18411使用相同的小部件 ID 添加多个小部件 这对于用户时间线来说效果非常好 片段 a class twitter timeline hr
  • 将嵌套 JSON 负载映射到 Elixir 中的结构

    我正在尝试将 Golang 教程 gddit 移植到 Elixir 我已经使用 Dartlang 成功做到了这一点 但 Elixir 在地图和列表上的操作让我感到困惑 使用 HTTPoison 和 JSEX 我有以下代码 defmodule
  • Selenium webdriver 窗口处理 c# switchTo 失败

    测试过程中会弹出 2 个窗口 my code string BaseWindow driver CurrentWindowHandle ReadOnlyCollection
  • 未解决的参考 dagger 2 + kotlin + android gradle

    我正在 Android 项目中使用 Kotlin 测试 Dagger 2 我的灵感来自于Android 干净的架构 https github com android10 Android CleanArchitecture回购 我的 grad
  • 检查 URL 状态的脚本

    我见过一些与此类似的问题 但没有找到适合我的情况的问题 我有一个存储在文本文件中的 URL 列表 我需要运行该列表以查看它们是否返回 404 错误 我正在使用 powershell 并一直在使用这里的示例 http gallery tech