Несколько полей Powershell Match, включая закодированные - PullRequest
1 голос
/ 12 января 2012

Google был моим другом, и я добился определенного прогресса в коде, над которым я работаю. Но я не программист по профессии, поэтому я так далеко и теперь я застрял.

У меня есть RSS-канал, который я пытаюсь проанализировать и найти по ключевым словам. Как только он найдет одно из ключевых слов, я бы хотел, чтобы он выбрал заголовок, ссылку и текст. Идеально в удобном для чтения формате абзаца.

$feed = [xml](New-Object System.Net.WebClient).DownloadString('http://www.bladeforums.com/forums/external.php?type=RSS2&forumids=746')
$results = $feed.rss.channel.Item | ? {$_.title  -match "boker"} | ft title, link, description -auto
@($results)

Это код, который я получил до сих пор. Так же, как информация поле описания не то, что я действительно хочу. Я действительно хочу закодированное поле, но оно не экспортируется правильно. Он просто говорит «закодировано», когда это сделано.

Еще одна вещь, которую я хочу сделать. Я хочу, чтобы он не только искал заголовок, но и закодировал поле для того же самого. Если он находит ключевое слово в любом месте, он извлекает информацию.

Вот как это будет выводиться сегодня:

title                               link                                                                                                    description                    
-----                               ----                                                                                                    -----------                    
FS: CRKT Shrimp, Boker Microcom     http://www.bladeforums.com/forums/showthread.php/915409-FS-CRKT-Shrimp-Boker-Microcom?goto=newpost      1st Class shipping is includ...
SOLD: Boker Subcom and Subcom Titan http://www.bladeforums.com/forums/showthread.php/915337-SOLD-Boker-Subcom-and-Subcom-Titan?goto=newpost description                    

Я бы предпочел, чтобы он вывел:

title
link
encoded

title
link 
encoded

Дайте мне знать, если вам нужна дополнительная информация. Как только у меня будет форматирование, которое я хочу, я планирую запустить его как запланированное задание в цикле и отправлять мне по электронной почте в любое время, когда есть совпадения. И для того, чтобы сохранить историю, чтобы она не отправляла дубликаты. Но обо всем по порядку, я хочу сначала получить базовый вывод.

EDIT

Спасибо вам обоим. Я получил это работает, именно то, что я просил. Когда я отправляю электронное письмо на мой телефон, если я включаю поле cdata / encoded, оно занимает слишком много места. Поле описания, вероятно, будет работать лучше на моем телефоне. Однако это кажется хитом и мисс. Иногда поле описания будет заполнено, а иногда оно будет пустым. Есть идеи? То же самое происходит с полем заголовка, иногда оно пустое.

Ответы [ 2 ]

2 голосов
/ 12 января 2012

Данные в закодированном свойстве обернуты в другое свойство, называемое "# cdata-section", так что вам также необходимо его расширить.

Чтобы сопоставить оба свойства, просто включите оба совпадения в ваш каталог whereусловие разделяется оператором -or.Ваше условие where будет выглядеть следующим образом:

?{ $_ -match "boker" -or $_.encoded."#cdata-section" -match "boker"}

Наконец, чтобы вывести в виде списка, используйте командлет format-list (псевдоним fl), обратите внимание, как вы должны расширить закодированное свойство, предоставив блок скрипта(заключено в фигурные скобки).Таким образом, вы в конечном итоге с этим:

$feed.rss.channel.Item | ?{ $_ -match "boker" -or $_.encoded."#cdata-section" -match "boker"} | fl title, link, {$_.encoded."#cdata-section"}
0 голосов
/ 12 января 2012

Используйте Format-List вместо Format-Table, например:

$feed.rss.channel.Item | Where {$_.title  -match "boker"} | Format-List title, link, description

или

$feed.rss.channel.Item | ? {$_.title  -match "boker"} | fl title, link, description

Какие выходы:

title       : FS: CRKT Shrimp, Boker Microcom
link        : http://www.bladeforums.com/forums/showthread.php/915409-FS-CRKT-Shrimp-Boker-Microcom?goto=newpost
description : 1st Class shipping is included, I take both PP personal and MO.

              1. CRKT Shrimp Silver: NIB. Good lockup, only thing that has been done is the little steel ring has been
              removed (but I still have it). $*11*

              2. Boker Microcom: Taken in and out of the sheath a few times, used a few times as...

title       : SOLD: Boker Subcom and Subcom Titan
link        : http://www.bladeforums.com/forums/showthread.php/915337-SOLD-Boker-Subcom-and-Subcom-Titan?goto=newpost
description : description
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...