powershell - PowerShell:从 API 响应中检索特定单词并编译成 HTML 表
问题描述
我正在尝试从 API 中检索特定的单词,不幸的是 API 响应只是一个包含以下文本的正文响应 - 示例如下:
他们发现这是由于第 3 方工作室 Square Melon 存在问题,该工作室已联系并正在寻求解决方案。问题解决后将进行更新,等待团队的反馈。
事故指挥官:Barrie James
Remedy INC1063757 PD 387049
检索“Barrie James”和 INC 编号 (INC1063757) 的最佳方法是什么。不幸的是,我已经坚持了一段时间,因为可能有多个不同的事件,这意味着名称和 INC 编号将会改变。
有任何想法吗?
解决方案
假设您将此 API 的响应分配给一个变量 ,$response
我们首先需要将其从一个字符串分解为一个字符串数组,我们将这样做。
$response = Invoke-RestMethod -uri www.mycoolsite.com #or maybe Invoke-WebRequest
$response
>They have found that this is due to in issue with the 3rd party Studio, Square Melon, who have been contacted and are working on a solution. Updates to follow once the issue has been resolved, pending feedback from the teams.
Incident Commander: Barrie James
Remedy INC1063757 PD 387049
$response.Count
>1
#we need response to be an array of strings for Select-string to work.
$response.Split("`n").Count
>3
我们Split()
在变量上调用了该方法,$response
并在它看到隐藏的'n
PowerShell 换行符的任何地方将其分解。
接下来,我们可以使用|
管道字符将字符串数组发送到Select-String
并查找其中包含特定字符串的行。
$response.Split("`n") | select-string "Incident Commander:"
这会将结果解析为有用的东西,如下所示。
$response.Split("`n") | select-string "Incident Commander:"
IgnoreCase : True
LineNumber : 2
Line : Incident Commander: Barrie James
Filename : InputStream
Path : InputStream
Pattern : Incident Commander:
Context :
Matches : {0}
从这里,我们只需选择 line 属性,其中包含文本Incident Commander: Barrie James
。
($response.Split("`n") | select-string "Incident Commander:").Line
>Incident Commander: Barrie James
剩下的就是去掉冒号,我们将使用该.Split()
方法来完成。这将在看到我们提供的字符的任何地方将字符串分成单独的字符串。
($response.Split("`n") | select-string "Incident Commander:").Line.Split(":")
Incident Commander
Barrie James
现在,只选择第二个项目,我们用索引来做。PowerShell 中的索引从零开始(当然),所以我们实际上要求“索引 1 处的项目”,这意味着第二个位置。
($response.Split("`n") | select-string "Incident Commander:").Line.Split(":")[1].Trim()
Barrie James
你去吧。这就是您的做法,也是我们执行每一步的原因。
推荐阅读
- python - 无法让 Pyvista 渲染与 Qt QML QQuickFramebufferObject 一起使用
- php - PHP:mail() 通过没有 phpmailer 的 smtp
- python - 使用嵌套循环优化python代码
- python - pytube 中的 HTTP Error404
- git - 如何将提交压缩到最后一次提交?- 订单问题
- php - 无法在 WordPress 主题编辑器中编辑文件
- powershell - 过滤名称:Get-WmiObject Win32_NetworkAdapter
- javascript - 在电话输入字段中只允许数字和一个 (+) 唱歌
- web - 对 MongoDB 进行搜索查询
- google-chrome - 如何在 chrome 中查找 toast 消息的元素