【问题标题】:need to search a html table (msnormaltable)需要搜索一个 html 表(msnormaltable)
【发布时间】:2019-06-07 04:34:02
【问题描述】:

我们每天都会收到一封电子邮件,向我们展示备份通过或失败的内容。 我所做的是提取电子邮件的 HTMLbody 并放入它自己的 html 文件 body.html。

body.html 如下 11 个标题
服务器、客户端、状态、组、作业、已扫描大小 (TB)、已开始、已完成、持续时间(小时)、保留时间(周)、过期

在每个标题下都有数据。

我希望能够在 html body.html 中搜索单词“failed”(它将仅位于 Status 列下并返回整行。

我试图将它抓取到一个变量中,然后对其进行搜索。但它会返回所有代码。

有什么想法吗?

$Outlook = New-Object -ComObject Outlook.Application
$OutlookFolders = $Outlook.Session.Folders.Item(1).Folders

$OutlookInbox = $Outlook.session.GetDefaultFolder(6)

$latestmail=$OutlookInbox.items | select -last 1
$emailhtmlbody=$latestmail.HTMLBody

$emailhtmlbody | out-file d:\delme\test\body.html

【问题讨论】:

  • 如果HTML很小,你能提供它来测试吗?请务必先清理代码,以免包含任何敏感内容。
  • 桌子很大。它有超过 230 行。我需要弄清楚如何将其添加到问题中
  • 是的,不要将其添加到问题中。但是你说它是一张桌子,所以它改变了它的处理方式。表格的每一行是否都换行(在原始 HTML 中)?
  • 您需要向我们展示$emailhtmlbody 的最小化部分,以便我们知道是否可以逐行迭代或者内容是否为压缩(无换行符)格式。该图像仅显示绿线(成功),但您对failed 状态感兴趣。可能这些行有不同的类可供搜索,但我们现在看不到。
  • 如果 $emailbody 包含有效的 html,您可以直接或在将其转换为 [xml] 后对其进行检查

标签: html powershell


【解决方案1】:

您可以逐行遍历正文,将行与正则表达式匹配并捕获您感兴趣的块。这是一个示例:

foreach ($line in $emailhtmlbody) { 
    if ($line -match "<td>(?<Server>.+)</td><td>(?<Client>.+)</td><td>(?<Status>.+)</td>...") {
        [PSCustomObject] @{
            Server = $Match.Server
            Client = $Match.Client
            Status = $Match.Status
        }
    }
}

在 HTML 中肯定有一些 id 或 class 描述符,您可以使用它们来仅匹配您感兴趣的行。

我会首先在 RegexCoach 等工具中构建一个有效的正则表达式。这些可能会变得相当复杂。

【讨论】:

  • 好吧,我做了一些不同的事情 $Outlook = New-Object -ComObject Outlook.Application $OutlookFolders = $Outlook.Session.Folders.Item(1).Folders $OutlookInbox = $Outlook.session。 GetDefaultFolder(6) $latestmail=$OutlookInbox.items |选择 -last 1 $emailhtmlbody=$latestmail.HTMLBody
  • #根据查找结果将 $emailhtmlbody 数据拆分为新行 $FaildSearch = $emailhtmlbody -split "<.>" |其中 {$_ -like "failed"} New-Item D:\delme\test\backupfailed.html -type 文件 Add-Content D:\delme\test\backupfailed.html " " Add-Content D:\delme\test\backupfailed.html $FaildSearch Add-Content D:\delme\test\backupfailed.html ""
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-12-20
  • 1970-01-01
  • 1970-01-01
  • 2013-12-14
  • 2014-09-05
  • 2010-09-05
相关资源
最近更新 更多