PowerShell Hack: TechNet-Teilnahme eines Users messen oder eine Übung im Web Grabbing

Wenn man im TechNet-Forum (https://social.technet.microsoft.com/Forums/de-de/home) unterwegs ist, kann man ja Punkte verdienen. Hat man eine Frage beantwortet und hat der Fragesteller das bestätigt, gibt es Punkte. Hat jemand den Post für hilfreich erklärt, gibt’s auch Punkte. Ist man in vielen Microsoft-Technologien unterwegs, möchte man manchmal wissen, wo man denn die meiste Contribution geleistet hat. Das Forumsystem selbst gibt da zwar eine sehr detaillierte Auskunft in Form einer Aktivitäten-History, aber man möchte ja eigentlich einfach nur schnell einen Überblick gewinnen. Und vielleicht auch nicht über sich, sondern auch über andere user. Was liegt an einem verregneten Sonntag also näher, als einfach ein Skript zu schreiben, das die Webseite für einen durchgeht und die Daten einsammelt.

Die Grundlage dafür ist das Cmdlet Invoke-WebRequest, welches ein Objekt vom Typ „Microsoft.PowerShell.Commands.HtmlWebResponseObject“ zurück liefert. Dieses hat eine Eigenschaft „ParsedHtml“, die vom Typ „mshtml.IHTMLDocument2“ ist. Damit wären wir schon fast am Ziel, man muss einfach nur an den Perversitäten der Web-Entwickler und der verschahtelten Struktur der DIV-Tags vorbei kommen. In der Thread-Ansicht zum Beispiel hat die Vorschau auf jeden Beitrag die Klasse „threadsnippet“:

paul_thread_snippet

Den Inhalt bekommt man also mit

Am Ende hat man dann in $thread_topic den Header und in $thread_link den Link zum gesamten Thread. Und so weiter.
Ich habe dafür zwei Skripte geschrieben, die in der PSGallery heruntergeladen werden können:

Export-TechNetContributionToCSV.ps1 geht die Beiträge des angegebenen Users durch und macht daraus eine CSV-Dateie mit diversen Informationen inklusive Links zu den einzelnen Threads. Schauen wir uns zum Beispiel die Contribution des bekannten Exchange-MVP Paul Cunningham an (man beachte die zwei Leerzeichen im TechNet-Usernamen):

tn_paul_export

Ist die CSV fertig, so kann man sie mit Measure-TechNetContribution.ps1 nach Foren oder sogar nach einzelnen Subforen zusammenfassen und, je nach Lust und Laune, tabellarisch oder sonst wie darstellen lassen:tn_paul_measureoder nach Hauptforen gegliedert:

tn_paul_measure_main

So kann man herausfinden, in welchen Wissensgebieten sich z.B. ein Kollege betätigt, der gern im TechNet Forum schreibt.

Ersten Kommentar schreiben

Antworten

Deine E-Mail-Adresse wird nicht veröffentlicht.


*


Diese Website verwendet Akismet, um Spam zu reduzieren. Erfahre mehr darüber, wie deine Kommentardaten verarbeitet werden.