使用 powershell 在网页中查找特定句子

2023-11-26

我需要使用 powershell 通过 whois 解析 IP 地址。我的公司过滤端口 43 和 WHOIS 查询,因此我在这里必须使用的解决方法是要求 powershell 使用以下网站https://who.is,读取http流并查找与IP地址匹配的组织名称。

到目前为止,我已成功将网页读入 powershell(此处以 yahoo.com 上的 WHOIS 为例),即https://who.is/whois-ip/ip-address/206.190.36.45

这是我的片段:

$url=Invoke-WebRequest https://who.is/whois-ip/ip-address/206.190.36.45

现在如果我这样做:

$url.gettype()
IsPublic IsSerial Name                                     BaseType
-------- -------- ----                                     --------
True     False    HtmlWebResponseObject                    Microsoft.PowerShell.Commands.WebResponseObject

我看到这个对象有几个属性:

Name              MemberType Definition
----              ---------- ----------
Equals            Method     bool Equals(System.Object obj)
GetHashCode       Method     int GetHashCode()
GetType           Method     type GetType()
ToString          Method     string ToString()
AllElements       Property   Microsoft.PowerShell.Commands.WebCmdletElementCollection AllElements {get;}
BaseResponse      Property   System.Net.WebResponse BaseResponse {get;set;}
Content           Property   string Content {get;}
Forms             Property   Microsoft.PowerShell.Commands.FormObjectCollection Forms {get;}
Headers           Property   System.Collections.Generic.Dictionary[string,string] Headers {get;}
Images            Property   Microsoft.PowerShell.Commands.WebCmdletElementCollection Images {get;}
InputFields       Property   Microsoft.PowerShell.Commands.WebCmdletElementCollection InputFields {get;}
Links             Property   Microsoft.PowerShell.Commands.WebCmdletElementCollection Links {get;}
ParsedHtml        Property   mshtml.IHTMLDocument2 ParsedHtml {get;}
RawContent        Property   string RawContent {get;}
RawContentLength  Property   long RawContentLength {get;}
RawContentStream  Property   System.IO.MemoryStream RawContentStream {get;}
Scripts           Property   Microsoft.PowerShell.Commands.WebCmdletElementCollection Scripts {get;}
StatusCode        Property   int StatusCode {get;}
StatusDescription Property   string StatusDescription {get;}

但每次我尝试类似的命令

$url.ToString() | select-string "OrgName"

Powershell 返回整个 HTML 代码,因为它将文本字符串作为一个整体进行解释。我找到了一种解决方法,将输出转储到文件中,然后通过对象读取文件(因此每一行都是数组的元素),但我有数百个 IP 需要检查,因此始终创建文件并不是最佳选择。

我想知道如何读取网页内容https://who.is/whois-ip/ip-address/206.190.36.45并得到一行: 组织名称: 雅虎!广播服务公司

就只有那一行。

非常感谢您的帮助! :)


很可能有更好的方法来解析这个,但你当前的逻辑是在正确的轨道上。

$web = Invoke-WebRequest https://who.is/whois-ip/ip-address/206.190.36.45
$web.tostring() -split "[`r`n]" | select-string "OrgName"

Select-String返回匹配项,因为它以前是一长串。使用-split我们可以将其分解以获得您期望的回报。

OrgName:        Yahoo! Broadcast Services, Inc.

之后进行一些字符串操作将得到更清晰的答案。再次,many也有解决这个问题的方法

(($web.tostring() -split "[`r`n]" | select-string "OrgName" | Select -First 1) -split ":")[1].Trim()

I used Select -First 1 as select-string可以返回多个对象。它只会确保我们在操作字符串时使用的是 1。该字符串只是在冒号上分割并修剪以删除留下的空格。

由于您正在提取 HTML 数据,我们还可以遍历这些属性以获得更具体的结果。这样做的目的是为了得到 1RedOne 的答案

$web = Invoke-WebRequest https://who.is/whois-ip/ip-address/206.190.36.45
$data = $web.AllElements | Where{$_.TagName -eq "Pre"} | Select-Object -Expand InnerText
$whois = ($data -split "`r`n`r`n" | select -index 1) -replace ":\s","=" | ConvertFrom-StringData
$whois.OrgName

所有这些数据都存储在文本中PRE本例中的标签。我所做的是将数据分成几个部分(部分是用空行分隔的定义的。我寻找连续的换行符)。第二组数据包含组织名称。将其存储在变量中并拉取OrgName作为财产:$whois.OrgName。这是什么$whois好像

Name                           Value                                                                                                                         
----                           -----                                                                                                                         
Updated                        2013-04-02                                                                                                                    
City                           Sunnyvale                                                                                                                     
Address                        701 First Ave                                                                                                                 
OrgName                        Yahoo! Broadcast Services, Inc.                                                                                               
StateProv                      CA                                                                                                                            
Country                        US                                                                                                                            
Ref                            http://whois.arin.net/rest/org/YAHO                                                                                           
PostalCode                     94089                                                                                                                         
RegDate                        1999-11-17                                                                                                                    
OrgId                          YAHO

如果您喜欢处理这些哈希表,您还可以将该哈希表变成自定义对象。

[pscustomobject]$whois

Updated    : 2017-01-28
City       : Sunnyvale
Address    : 701 First Ave
OrgName    : Yahoo! Broadcast Services, Inc.
StateProv  : CA
Country    : US
Ref        : https://whois.arin.net/rest/org/YAHO
PostalCode : 94089
RegDate    : 1999-11-17
OrgId      : YAHO
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

使用 powershell 在网页中查找特定句子 的相关文章

  • C 支持原始字符串吗?

    C 11 添加了对原始字符串文字的支持 例如 R foo A weird string foo C有这样的东西吗 如果有 标准是什么版本 C11 如果没有 有谁知道它是否正在计划中以及是否有编译器支持它 C有这样的东西吗 如果有 标准是什么
  • 静态字符串文字表?

    在 C 中创建全局静态字符串表的正确方法是什么 我所说的 全局 是指 可从包含标头的任何文件中使用 但不是某些运行时创建的单一对象的一部分 我所说的 静态 是指 尽可能少地设置运行时间 只读内存页中的数据 每个应用程序只有 1 个数据实例
  • 删除Android所有语言中的字符串

    我有一个包含多个翻译的应用程序 我想删除一些字符串 我怎样才能重构并删除它们一次 例如在默认情况下strings xml文件并自动将删除传播到其他翻译的其他 strings xml 文件 您可以通过 Android Studio 中的 翻译
  • C 中的指针、数组、字符串和 Malloc

    我目前正在学习 C 语言中的字符串 指针和数组 我尝试编写一个程序 其中数组保存三个指向字符串地址的指针 这一切似乎都有效 但程序的行为很奇怪 这是代码 char getUserDetails char host localhost cha
  • 用于字数计算的 Swift String 中的字数

    我想做一个程序来找出字符串中有多少个单词 用空格 逗号或其他字符分隔 然后把总数加起来 我正在制作一个平均计算器 所以我想要数据总数 然后将所有单词相加 update Xcode 10 2 x Swift 5 或更高版本 使用基础方法enu
  • strtok - 如何避免换行并放入字符串数组?

    如果我欺骗了主题 我真的很抱歉 我在这里搜索但没有结果 我有代码 void split char str char splitstr char p char splitbuf 32 int i 0 p strtok str while p
  • netsh 结果到 PowerShell 对象

    我正在尝试与NETSH https ss64 com nt netsh html来自 PowerShell 我想看到这个命令的结果 例如一个对象 但是netsh返回一个字符串 netsh wlan show hostednetwork Ge
  • 将 Excel 范围转换为 VBA 字符串

    我想将给定范围内的值转换为 VBA 字符串 其中原始单元格值由任何选定的列分隔符和行分隔符分隔 分隔符可以是一个字符或更长的字符串 行分隔符是行末尾的字符串 该字符串应该像我们从左上角 从左到右 到右下角读取文本一样完成 以下是范围 A1
  • 在FLUTTER/DART中,为什么我们有时在声明变量时要在“String”后面加一个问号?

    在演示应用程序中 我们找到一个实例 最终字符串 标题 gt 为什么要加这个 在 String 类型之后 class MyHomePage extends StatefulWidget MyHomePage Key key this titl
  • vector 超出范围后不清除内存

    我遇到了以下问题 我不确定我是否错了或者它是一个非常奇怪的错误 我填充了一个巨大的字符串数组 并希望在某个点将其清除 这是一个最小的例子 include
  • 如何处理最终字符串?

    制作有什么好处吗String as final或者我们可以做String as final 我的理解是 由于 String 是不可变的 因此没有必要将其设为最终的 这是正确的还是人们想要的情况String as Final Code pri
  • Powershell v2 远程处理和委派

    我在两台机器上安装了 Powershell V2 并在两台机器上运行 Enable PsRemoting 两台机器都是Win 2003 R2 并且都加入了同一个活动目录域 我可以成功地远程运行命令 所以PS远程处理是在本地服务器和远程服务器
  • Powershell 将单个字符串与多个正则表达式匹配?

    除了依次迭代每个正则表达式之外 是否有一种更 powershelly 的方式将单个字符串与正则表达式的数组 集合进行匹配 我真正想做的是这样的 database Name match includeRegexArray 考虑到 Powers
  • 为什么 re.findall 在查找字符串中的三元组项时不具体。 Python

    所以我有四行代码 seq ATGGAAGTTGGATGAAAGTGGAGGTAAAGAGAAGACGTTTGA OR 0 re findall r ATG 9 TAA TAG TGA seq 首先让我解释一下我正在尝试做什么 如果这令人困惑
  • case_when 与部分字符串匹配和 contains()

    我正在使用一个数据集 其中有许多名为 status1 status2 等的列 在这些列中 它表示某人是否豁免 完整 注册等 不幸的是 豁免投入并不一致 这是一个示例 library dplyr problem lt tibble perso
  • powershell Invoke-WebRequest WebSession 不起作用

    我无法让以下代码工作 它似乎已登录 但随后返回带有 response 的登录页面 我猜这与回发有关 有办法解决这个问题吗 谢谢 login Invoke WebRequest Uri http www sqlpass org UserLog
  • 对话框上的 EditText 不返回任何文本

    我太累了 找不到错误 我没有发现任何错误 但我没有从 editText 收到任何文本 请看下面的代码 活动密码 xml
  • 获取字符串中的最后一个整数

    我需要隔离包含多个整数的字符串中最新出现的整数 我怎样才能得到23代替1 for lastnum1 text 1 out of 23 lastnum1 this gt getEval eregi replace out of text 你可
  • 如何在没有 user_impersonation OAuth2Permission 的情况下创建新的 Azure 应用程序注册?

    我想知道 Azure 专家中是否有人可以澄清New AzureADApplication https learn microsoft com en us powershell module azuread new azureadapplic
  • 是否有一种更简单的方法可以并行运行命令,同时在 Windows PowerShell 中保持高效?

    此自我回答旨在为那些受困于 Windows PowerShell 并由于公司政策等原因而无法安装模块的用户提供一种简单且高效的并行替代方案 在 Windows PowerShell 中 built in可用的替代方案local并行调用是St

随机推荐

  • 将 CGRect 标准化为 0 到 1 之间

    正常化的最佳方法是什么CGRect值使其介于 0 和 1 单位坐标系 之间 一个非常简洁的方法是 CGAffineTransform t CGAffineTransformMakeScale 1 0 parentRect size widt
  • Java 连接池

    我搜索了连接池并阅读了相关内容 如果我理解正确的话 连接池就像打开连接的集合 如果建立或创建了连接 则应将其添加到连接池中 如果该连接已关闭 则应将其从连接池中删除 当它打开时 我可以一次又一次地使用它 在阅读这些有关连接池的教程和解释时
  • PyQt4 和 PyQt5 中的 QFileDialog 字符串有区别吗?

    我有一段使用 Python3 和 PyQt5 打开 QFileDialog 的代码块 from PyQt5 QtWidgets import QApplication QWidget QPushButton QFileDialog impo
  • 如何使 JSP 标记文件不忽略所有空格?

    我真的被这个难住了 我想输出一个列表 并让标记文件处理逗号 单数与复数等 但是当我显示列表时 它完全忽略空格 所以一切都像这样一起运行 我尝试使用 HTML 实体 thinsp ensp 和 emsp 我不能使用 nbsp 这些必须被破坏
  • 如何打印我的单选按钮并在文本区域中输入类型文本?

    我有带有四个单选按钮和一个输入类型文本的调查问卷 按顺序打印 不删除前一张 var todos input type radio todos on click gt var newText Array from todos forEach
  • 如何从express重定向到react-router?

    我正在将身份验证添加到我的应用程序中 该应用程序使用react router 我已经在之后设计了客户端路由认证流程示例在react router中 但使用passport而不是示例使用的localstorage 这一切都很好 下一步是保护我
  • 如何在Inno Setup中设置安装文件夹的权限

    我正在使用 Inno Setup 创建应用程序的安装程序 第一次运行时 我的应用程序正在创建一个 SQLite 数据库 但当用户没有修改安装文件夹的权限时 它无法实现这一点 我设法设置文件的权限 Files Source D jar Des
  • 使用 Vuforia 和 Unity 仅创建一次具有地平面检测的对象

    我正在尝试使用 Unity 和 Vuforia 创建 AR 应用程序 我有一个 3D 模型 需要在检测到地平面时生成 但这只需要发生一次 Vuforia 的工作方式是 当检测到新飞机时 它会继续生成对象 所以我需要做的是要么只检测一次平面
  • 如何查询非数字字段上的“之间”数字数据?

    我刚刚在数据库中发现了一个查询失败 导致报告失败 查询的基本要点 Select From table Where IsNull myField lt gt And IsNumeric myField 1 And Convert int my
  • 使用过滤查询*:*时Solr默认是如何排序的?

    我们当前的页面设置未应用过滤器 方面 查询 它是所有内容的列表 使用寻呼机 过滤器查询类似于 任何领域的任何内容 我无法弄清楚内容是如何排序的 它说这是 相关性 但是当您选择所有内容时 这意味着什么 我做了一些快速测试 它似乎没有按内容修改
  • 如何在批处理文件中将变量与字符串或变量连接

    我想将变量与字符串连接起来 在第 7 行到第 11 行中 我尝试连接 somevariable 使用字符串或使用 P 变量 但这似乎不起作用 IE 当前文件夹中有文件 0 1 en pdf 该脚本将文件名快捷方式设置为第一位数字 之后我想用
  • html 表格行的行计数器

    我在 JSF Web 应用程序中有 HTML 表 我正在使用动态生成行
  • 如何在 Kotlin 中比较 Short 和 Int?

    我有一个Short我需要检查其值的变量 但编译器抱怨说Operator cannot be applied to Short and Int 当我进行简单的等于检查时 val myShort Short 4 if myShort 4 lt
  • 如何更改 DatagridView 中的标题文本 - 在代码 C# 中?

    如何更改标题文本DatagridView以及如何在 C 代码中添加或删除列 如果您使用数据绑定到类型和自动生成的列 则这就是 DisplayName i e DisplayName Last name public string LastN
  • 在Python中处理非常小的数字

    我目前在我的 python 程序中处理非常小的数字 例如 x 200 2e 26 一种解决方案是使用对数值 这会增加浮点值的范围 问题是我也必须对这些值进行快速傅立叶变换 因此使用对数方法是不可用的 并且使用Decimal 模块都不是 还有
  • 无法加载或实例化 TagLibraryValidator 类:org.apache.taglibs.standard.tlv.JstlCoreTLV

    所以我在 Gemini 运行时下的 OSGi 中使用 JSTL 当我尝试访问我的网址时 出现以下异常servlet SEVERE Servlet service for servlet jsp threw exception org apa
  • C++03 `throw()` 说明符和 C++11 `noexcept` 之间有什么区别?

    有什么区别吗throw and noexcept除了分别在运行时和编译时检查之外 这篇维基百科 C 11 文章建议弃用 C 03 throw 说明符 为什么会这样 是noexcept有足够的能力在编译时涵盖所有这些吗 注 我检查过这个问题
  • 从另一个包含元素的 svg 图像创建嵌入 base64 字符串的 SVG 图像

    我有一个包含多个元素 如路径 圆形 矩形等 的 SVG 文件 我想将该 SVG 文件转换为嵌入了 Base64 数据而不是多个元素的 SVG 用蜡染可以做到吗 我正在从事的项目要求我仅使用 Java 库 我使用了一种在 Blogger 帖子
  • 在双屏VS中开发Blazor Razor组件

    Is there a way to open Razor component in Visual Studio with environment with dual screens I ll love to have markup on o
  • 使用 powershell 在网页中查找特定句子

    我需要使用 powershell 通过 whois 解析 IP 地址 我的公司过滤端口 43 和 WHOIS 查询 因此我在这里必须使用的解决方法是要求 powershell 使用以下网站https who is 读取http流并查找与IP