如何从 Powershell 中的 RSS 提要中提取特定信息?
How do I pull specific information from an RSS feed in Powershell?
我正在尝试编写一个脚本,该脚本可以从仅包含用户提供的输入的网页中提取信息。
我正在使用新闻站点独立 rss 提要进行解析。
$url = 'http://www.independent.co.uk/news/uk/rss'
Invoke-RestMethod -Uri $url -OutFile c:\Scripts\worldnews.xml
[xml]$Content = Get-Content C:\Scripts\worldnews.xml
$Feed = $Content.rss.channel
# User Input field
$UserTerm = Read-Host 'Enter a Term'
ForEach ($msg in $Feed.Item){
[PSCustomObject]@{
'Source' = "News"
'Title' = $msg.title
'Link' = $msg.link
'Description' = $msg.description
}#EndPSCustomObject
}#EndForEach
我需要添加什么才能使该脚本只显示包含用户输入的结果?例如如果用户在用户输入中键入 'Police',则脚本将仅显示标题中写有 'Police' 的文章。
我试过 if 语句,但不确定语法是否正确
if(msg.title -match $UserTerm) {
我怎样才能让它工作?
您可以在 foreach 循环中对标题执行 where clause,如下所示:
$url = 'http://www.independent.co.uk/news/uk/rss'
Invoke-RestMethod -Uri $url -OutFile c:\scripts\worldnews.xml
[xml]$Content = Get-Content C:\scripts\worldnews.xml
$Feed = $Content.rss.channel
# User Input field
$UserTerm = Read-Host 'Enter a Term'
ForEach ($msg in $Feed.Item | ?{$_.Title.Contains($userTerm)})
{
[PSCustomObject]@{
'Source' = "News"
'Title' = $msg.title
'Link' = $msg.link
'Description' = $msg.description
}#EndPSCustomObject
}#EndForEach
如果你想做一个if语句,那么你会说
if($msg.Title.Contains($userTerm))
或者您可以像这样使用带有通配符的 -like
运算符
if($msg.Title -like "*$($userTerm)*")
我正在尝试编写一个脚本,该脚本可以从仅包含用户提供的输入的网页中提取信息。
我正在使用新闻站点独立 rss 提要进行解析。
$url = 'http://www.independent.co.uk/news/uk/rss'
Invoke-RestMethod -Uri $url -OutFile c:\Scripts\worldnews.xml
[xml]$Content = Get-Content C:\Scripts\worldnews.xml
$Feed = $Content.rss.channel
# User Input field
$UserTerm = Read-Host 'Enter a Term'
ForEach ($msg in $Feed.Item){
[PSCustomObject]@{
'Source' = "News"
'Title' = $msg.title
'Link' = $msg.link
'Description' = $msg.description
}#EndPSCustomObject
}#EndForEach
我需要添加什么才能使该脚本只显示包含用户输入的结果?例如如果用户在用户输入中键入 'Police',则脚本将仅显示标题中写有 'Police' 的文章。
我试过 if 语句,但不确定语法是否正确
if(msg.title -match $UserTerm) {
我怎样才能让它工作?
您可以在 foreach 循环中对标题执行 where clause,如下所示:
$url = 'http://www.independent.co.uk/news/uk/rss'
Invoke-RestMethod -Uri $url -OutFile c:\scripts\worldnews.xml
[xml]$Content = Get-Content C:\scripts\worldnews.xml
$Feed = $Content.rss.channel
# User Input field
$UserTerm = Read-Host 'Enter a Term'
ForEach ($msg in $Feed.Item | ?{$_.Title.Contains($userTerm)})
{
[PSCustomObject]@{
'Source' = "News"
'Title' = $msg.title
'Link' = $msg.link
'Description' = $msg.description
}#EndPSCustomObject
}#EndForEach
如果你想做一个if语句,那么你会说
if($msg.Title.Contains($userTerm))
或者您可以像这样使用带有通配符的 -like
运算符
if($msg.Title -like "*$($userTerm)*")